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:

tierbase 32Btuned 32BΔpaired test (McNemar)
overall107/135 (79.3%)97/135 (71.9%)−7.4p=0.110
hard16/35 (45.7%)19/35 (54.3%)+8.6p=0.581
medium47/50 (94.0%)40/50 (80.0%)−14.0p=0.016
easy44/50 (88.0%)38/50 (76.0%)−12.0p=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

  1. 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.
  2. 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.
  3. Recipes don't transfer across scale for free. "It worked on the 7B" is a fact about the 7B.
  4. 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.

Share this: X Hacker News Reddit LinkedIn Email