Runs on your gaming PC
Basic quant set - pick the one that fits your card:
Table with columns: Your GPU, Recommended quant, Weights| Your GPU | Recommended quant | Weights |
|---|
| RTX 3090 / 4090 / 5090 (24 GB) | Q8_0 | 4.48 GB |
| RTX 4080 / 5080 / 4060 Ti 16G (16 GB) | Q6_K | 3.46 GB |
| RTX 3060 / 4070 / 5070 (12 GB) | Q5_K_M | 3.07 GB |
| RTX 4060 / 3070 (8 GB) | Q4_K_M | 2.71 GB |
| CPU-only / Apple Silicon | Q4_K_M | fits in system RAM |
Weights only, at this model's 4.21B text-only size; the agent loop needs real
headroom on top, because FrogNano evaluates at ~131K context - far more than a single chat turn.
OOM? Drop to Q4_K_M. This set is deliberately small: the model is interim, so it ships F16 plus
the four workhorse quants and nothing exotic.
Abliteration parameters
Trial 132 of a 200-trial Heretic run (seed 393732754).
Table with columns: Parameter, Value| Parameter | Value |
|---|
| direction_index | 18.57 |
| attn.o_proj.max_weight | 1.40 |
| attn.o_proj.max_weight_position | 20.97 |
| attn.o_proj.min_weight | 1.31 |
| attn.o_proj.min_weight_distance | 15.81 |
| mlp.down_proj.max_weight | 0.86 |
| mlp.down_proj.max_weight_position | 18.74 |
| mlp.down_proj.min_weight | 0.82 |
Table with columns: Metric, This model, Original model (microsoft/FrogNano-4B-2609)| Metric | This model | Original model (microsoft/FrogNano-4B-2609) |
|---|
| KL divergence | 0.0046 | 0 (by definition) |
| Refusals | 71/100 | 92/100 |
Be precise about what these two numbers mean together, because here they point in opposite
directions. A KL of 0.0046 is the tightest edit in this collection - the weights barely moved.
That is exactly why 71 refusals survive: the trial optimiser found a direction it barely
dared to apply, so it preserved the model's behaviour almost perfectly and preserved most of its
refusal behaviour with it. Only 21 of 92 refusals were cleared.
The contrast with granite-4.1-3b-heretic
is instructive: same family of method, opposite outcome. That one took a looser edit (KL 0.0852)
and landed refusals at 3/100. Low KL is only a virtue when it accompanies low refusals.
For coding work this matters less than it sounds - the 21 cleared refusals skew toward the
content-policy cases, and FrogNano was never safety-aligned to begin with (Microsoft states its RL
used no refusal or harmful-content datasets at all). But if you hit a refusal, expect to hit more
of them here than on other models in this collection.
Base model benchmarks
From Microsoft's FrogNano card - these are base-model numbers, measured before abliteration.
No post-abliteration eval has been run.
Table with columns: Benchmark, Avg@3, Note| Benchmark | Avg@3 | Note |
|---|
| SWE-bench Verified | 61.5% | up from 39.4% for Qwen/Qwen3.5-4B; Pass@3 71.0% |
| SWE-bench Pro | 37.6% | held-out; Pass@3 47.6% |
| Terminal-Bench 2.0 | 31.1% | held-out |
| PatchEval-Verified | 47.3% | held-out, 230 real CVE repairs 2015-2025 |
Five TaskPilot-guided RL iterations moved SWE-bench Verified 39.4 → 49.1 → 53.1 → 56.7 → 59.1 →
61.5%. Evaluated with the Leaf harness, 150 interaction steps, ~131K context, temperature 0.6.
FrogNano has not been separately evaluated for general language understanding, maths, or
multilingual performance - do not attribute Qwen/Qwen3.5-4B's numbers to it.
Why abliteration instead of fine-tuning
Fine-tuning a "helpful" persona on top of RLHF'd refusals fights the base model's training and tends to degrade coherence. Abliteration instead finds and edits the specific weight directions responsible for refusal, leaving the rest of the network (and its capabilities) untouched. See the Heretic repo and the original abliteration writeup for the mechanism.
Made with ❤️ by RACER IS OP — follow for more uncensored models
Files
Safetensors
Table with columns: File, Size| File | Size |
|---|
model-00001-of-00002.safetensors | 4.97 GB |
model-00002-of-00002.safetensors | 4.11 GB |
BF16, 4,539,265,536 parameters (4.54B) — but note that total includes a ~334M
vision tower inherited from Qwen/Qwen3.5-4B. FrogNano never post-trained vision and does not claim it as
a supported input, so the GGUFs here are text-only at 4,205,751,296 parameters
(4.21B). If you need image or video input, use the bf16 safetensors with a
Qwen3VL processor.
The reproduce/ directory carries the full Heretic recipe - config.toml, requirements.txt, the
Optuna study journal, and SHA-256 sums - so this exact model can be regenerated bit-for-bit.
Reproduce it with heretic --reproduce reproduce/reproduce.json.
GGUF quantizations
Basic set (F16 + 4 quants) produced with llama.cpp.
Table with columns: File, Format, Size| File | Format | Size |
|---|
FrogNano-4B-heretic-F16.gguf | GGUF F16 | 8.42 GB |
FrogNano-4B-heretic-Q4_K_M.gguf | GGUF Q4_K_M | 2.71 GB |
FrogNano-4B-heretic-Q5_K_M.gguf | GGUF Q5_K_M | 3.07 GB |
FrogNano-4B-heretic-Q6_K.gguf | GGUF Q6_K | 3.46 GB |
|
Qwen3.5 hybrid architecture (qwen35, 426 tensors, 33 blocks = 32 layers
- 1 MTP head) - loads natively in llama.cpp / LM Studio / Jan.
Run llama serve -hf saidutta69/FrogNano-4B-heretic to pull the default quant.
Quickstart
# llama.cppllama serve -hf saidutta69/FrogNano-4B-heretic
# transformers (requires transformers>=5.0.0)from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "saidutta69/FrogNano-4B-heretic"model = AutoModelForCausalLM.from_pretrained(model_name, dtype="auto", device_map="auto")tokenizer = AutoTokenizer.from_pretrained(model_name) messages = [{"role": "user", "content": "Find the failing test in this repo and fix it."}]inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)out = model.generate(**inputs, max_new_tokens=2048, temperature=0.6, repetition_penalty=1.0)print(tokenizer.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
Generation settings that match Microsoft's evaluation: temperature=0.6, repetition_penalty=1.0,
up to 8,192 generated tokens per assistant turn.
Running it as an agent
FrogNano is trained against the Leaf harness, which exposes exactly five tools: read, write,
and edit files, glob-based search, and shell execution. It expects OpenAI-style JSON-schema tool
definitions passed through the chat template.
Two rules from the base model card matter if you build your own loop:
- A response containing tool calls continues the interaction; a response without a tool call
terminates it. Termination is not an error condition.
- Run it inside an isolated repository sandbox with bounded permissions, timeouts, and resource
limits. FrogNano emits patches; it does not review them. Microsoft's own guidance is that every
patch needs human review, regression testing, and security validation before deployment.
The harness lives at github.com/microsoft/FrogNano and the
technical report at aka.ms/frognano-tech-report.
Model details
Table | |
|---|
| Architecture | Qwen3_5ForConditionalGeneration (dense hybrid Gated DeltaNet + gated attention) |
| Parameters | 4.54B total / 4.21B text-only (GGUF) |
| Layers / heads | 32 layers (24 linear-attention + 8 full-attention, every 4th), + 1 MTP head; 16 attention heads, 4 KV heads; head_dim 256 |
| Hidden / intermediate | 2560 / 9216 (SwiGLU) |
| Linear attention | Gated DeltaNet, conv kernel 4, state size 128, 16 groups, time-step rank 32 |
| Position embedding | RoPE, theta = 10,000,000, partial rotary 0.25 (64 dims), mrope interleaved |
|
Responsible use
Refusal suppression is deliberate and incomplete by design here — this is an interim checkpoint.
Microsoft is explicit that FrogNano "should not be considered independently safety-aligned for
unrestricted autonomous deployment": its RL used executable test rewards only, with no
refusal, harmful-content, or adversarial datasets. Combined with weak refusal suppression here, the
practical result is a coding agent that will attempt requests other models decline.
Sandbox it. Do not point it at privileged infrastructure, do not let it self-apply patches to
anything you cannot revert, and review its output. Passing a test suite is evidence of functional
correctness, not of security — Microsoft states plainly that passing tests "does not establish that
a patch is correct or secure beyond the behavior they cover."
License
Tagged mit on both this repo and the base model. Note the
base model's own card text says "Apache License 2.0" because FrogNano derives from Qwen/Qwen3.5-4B,
which is Apache-2.0 — the machine-readable license tag on microsoft/FrogNano-4B-2609 is mit, and
that repo ships no LICENSE file, so the canonical MIT text is linked here rather than a repo
blob.