Evaluating a Fine-Tuned Model

A fine-tune that looks great on a handful of hand-picked prompts can be quietly broken — overfit to your training data, worse than the base model you started from, or catastrophically forgetful of skills it used to have. Without real evaluation you can't tell, and shipping a fine-tune you haven't measured is shipping a guess.

Every previous post built toward a trained, possibly aligned model. This one answers the question that decides whether it’s usable: did it actually work? Fine-tuning has failure modes that don’t announce themselves — overfitting, regression against the base model, catastrophic forgetting — and eyeballing a few outputs won’t catch them. This post covers how to evaluate a fine-tune honestly, which is the difference between a fine-tune you hope is good and one you know is.

Why fine-tuning needs rigorous evaluation

Fine-tuning is uniquely easy to fool yourself about, for a specific reason: you optimized the model on your data, so of course it does well on things that look like your data. The whole risk is that it does well on your training examples while failing on real, unseen inputs — or while quietly losing capabilities you didn’t test. Casual testing on a few prompts you happen to try will look fine and hide all of this.

So evaluation isn’t a formality; it’s how you detect the specific ways fine-tuning goes wrong. The non-negotiable foundation, from the data post: evaluate on a held-out test set the model never trained on, representative of real production inputs. Measuring on training data tells you nothing except that the model memorized — which it did. Real evaluation means real, unseen, representative data, and it’s the only way to know.

The failure modes to watch for

Fine-tuning has three signature failure modes, and good evaluation is designed to catch each:

Each of these is invisible to “try a few prompts and it looks good.” They’re only caught by structured evaluation against a held-out set, a base-model baseline, and a general-capability check.

What and how to measure

Evaluation methods depend on the task, and you usually combine several:

The through-line: pick metrics that match the task, always include a comparison against the base model (did fine-tuning help?), and don’t rely on a single number — combine an automatic metric, a judge, and some human review for a rounded picture.

The evaluation discipline

Putting it together into a workflow that catches the failure modes:

  1. Hold out a real test set before training — representative of production, never seen in training. (From the data post; it starts here.)
  2. Establish the base-model baseline — measure the un-fine-tuned model on the same test set first, so you can prove the fine-tune improved on it.
  3. Watch validation during training — track performance on held-out data across epochs; stop when it plateaus or degrades (early stopping) to avoid overfitting, even if training loss keeps falling.
  4. Evaluate the target task on the test set — with task-specific metrics and/or judge/human evaluation.
  5. Evaluate general capabilities too — check the model hasn’t catastrophically forgotten skills outside the target task.
  6. Compare against the base model — fine-tuned vs. base, head-to-head. If it doesn’t clearly win (task better, general abilities intact), don’t ship it — iterate on data (usually) or method.
  7. Iterate on data first. When evaluation shows problems, the highest-leverage fix is almost always the dataset (the data post) — more/cleaner/more-representative examples — not hyperparameters.

This discipline is what makes fine-tuning an engineering practice rather than a hopeful ritual. It’s also the honest gate: a fine-tune that doesn’t beat the base model on a real test set, or that forgets general skills, is a failure to catch before production, not after.

Key takeaways

Further reading

Sources & References

Evaluation during training