I ran the same recipe on a 32B. It made the model worse.
2026-07-20 · solo
Fine-tuning a 7B on my verified code-repair data roughly doubled its hard-tier fix-rate (with honest spread — see the last post). The obvious next question: does the effect scale? So I ran the exact same frozen recipe — same 882 SHA-verified training examples, same script, same held-out set, same pre-registered decision rule — and only swapped the model: Qwen2.5-7B → Qwen2.5-32B.
Here is every number, because negative results are results:
| tier | base 32B | tuned 32B | Δ | paired test (McNemar) |
|---|---|---|---|---|
| overall | 107/135 (79.3%) | 97/135 (71.9%) | −7.4 | p=0.110 |
| hard | 16/35 (45.7%) | 19/35 (54.3%) | +8.6 | p=0.581 |
| medium | 47/50 (94.0%) | 40/50 (80.0%) | −14.0 | p=0.016 |
| easy | 44/50 (88.0%) | 38/50 (76.0%) | −12.0 | p=0.146 |
Training made the 32B worse overall. The medium tier isn't noise: zero tasks improved, seven regressed — the paired test calls that real damage (p=0.016). The only tier that moved up is hard (+8.6 points), and that gain doesn't clear the significance bar on its own.
What the numbers say
Start with the base row: an untouched 32B already solves 88% of the easy tier and 94% of the medium tier. Those two tiers are 100 of the 135 tasks — so before training started, most of this set had almost nothing left to teach.
The training run used all 882 examples anyway — the same recipe that lifted the 7B, reused unchanged, because that's what a clean "same recipe, model isolated" comparison requires. The result, per tier: where the base had headroom (hard, 45.7%), training added tasks (+8, −5). Where it had almost none (medium, 94%), training only subtracted (0 up, 7 down, p=0.016). That pattern is in the table, not in my head — why it happens mechanistically is a question this post doesn't answer, only measures.
The standard caution from last post applies: this is one run, and I've measured on my own recipe how much single runs can swing. I'm not treating −7.4 as a precise truth — but zero-improved-seven-regressed on medium is a direction, not a dice roll.
What I take from it
- Fine-tuning can subtract. If you only measure your fine-tune on the thing you tuned for, you'll miss what it broke. Measure before/after by execution, on tiers you didn't aim at.
- Match the data to what the model doesn't know. Training a strong model on tasks it already solves isn't neutral — it can actively cost you. The obvious counter-move is to train only on what the model fails and let it keep what it owns — but that's a hypothesis, and hypotheses here get measured before they get believed.
- Recipes don't transfer across scale for free. "It worked on the 7B" is a fact about the 7B.
- Small models are where cheap data-lift lives. The 7B doubled; the 32B regressed. If you're fine-tuning on a budget, that's the practical takeaway.
The 7B story stands unchanged — its numbers, spread and all, are already published. The 32B result doesn't weaken the data; it maps where the data teaches and where it doesn't. That map is worth more to me than a flattering table.
If you want the receipts: the full run bundle (RECIPE with SHA-verified inputs, per-task checkpoint, side-by-sides) is archived like every other run, and the eval reruns on any GPU pod for under a dollar. Write me, request access to the dataset — or fund the next experiment.