How do I tell whether my fine-tuned model is actually better?
You Fine-Tuned a Model — Now What?
The clearest answer is to compare your fine-tuned model against the base model on the same held-out test set, using the metrics that reflect your actual task. Keep a separate validation split the model never saw during training, then run both side by side and measure whether the fine-tune improves task-specific scores such as accuracy, exact match, F1, or semantic similarity. A single number that goes up is necessary but not sufficient.
A fine-tune is only better if it wins on the target task without breaking general ability or instruction-following. After checking the main benchmark, probe a small set of general questions, edge cases, and adjacent-domain prompts to catch catastrophic forgetting or overfitting. If you run an orchestrator like Molly on your own hardware—keeping a library of small LoRA specialists over one quantized base and routing each request to the right one—verify the router itself isn't degrading output quality. Add blind human review, because automated metrics miss style, safety, and correctness trade-offs.
Define What "Better" Means for Your Task
"Better" only means something relative to a measurable proxy. If your task is extraction, define precision and recall on a held-out set that mirrors production input. If it's generation, pick a metric that correlates with human judgment for your domain — BLEU is misleading for open-ended prose, ROUGE underweights semantic equivalence, and LLM-as-judge needs its own calibration set. The point is to commit to a number before you fine-tune, not after.
Every improvement you measure comes with a cost you should also measure. A fine-tuned model that gains twelve points on your extraction metric but loses grounding on out-of-distribution queries is not strictly better — it is specialized. Track regression on a general-purpose evaluation set alongside your task metric, and log latency and memory footprint per request. If you run a routing setup that dispatches to domain specialists, the right comparison is not fine-tuned versus base but fine-tuned-plus-router versus your previous best system end to end.
Build a Fair Evaluation Set
Your evaluation set must be held out from training and representative of real deployment traffic, not cherry-picked examples that flatter the new checkpoint. Sample from the same distribution your users actually hit — same prompt lengths, same task mix, same language register. If your fine-tune targets a narrow domain, include enough out-of-domain prompts to measure regression, not just in-domain gains. A set that only tests what you optimized for will always look like a win.
There is a real tension between eval set size and annotation cost. Two hundred carefully labeled examples will outperform two thousand auto-scored ones when your metric is noisy. Use human pairwise preference judgments for dimensions that automated metrics miss — tone, safety, factual accuracy. Re-score the baseline with the same annotators and rubric; comparing a fresh fine-tune against stale labels from an older run introduces evaluator drift that quietly inflates apparent improvement.
Compare Against the Base Model
The most common mistake is evaluating the fine-tuned model in isolation. You need side-by-side comparisons against the base model on the same prompt set, using the same decoding parameters. Run both on your held-out evaluation set and score them with the same metrics — BLEU, ROUGE, pass@k, or whatever task-specific measure applies. If your fine-tuned model does not measurably outperform the base model on your target task, the fine-tuning added cost without value.
Watch for regression. Fine-tuning often improves target-task performance while degrading general capabilities the base model had. A model that gets better at legal summarization but worse at basic reasoning is not necessarily an improvement. This is why systems like Molly keep small LoRA adapters over a shared quantized base rather than replacing the model wholesale — each specialist improves its domain without eroding what the base already does well, and you can fall back to the base for out-of-domain queries. Measure both gains and losses.
Decide Whether to Ship It
Compare your fine-tuned checkpoint against the base model on a held-out set that mirrors real production traffic, not your training distribution. A two-point gain on a benchmark leaderboard means nothing if your actual users ask different questions. Run regression tests across adjacent domains: fine-tuning on legal contracts can quietly degrade general reasoning. Track latency and memory too, because a model that is one percent more accurate but three times slower is usually not worth deploying.
Ship only when the improvement is consistent on your real workload and the trade-offs are acceptable. If you are running an orchestrator like Molly that keeps a library of small LoRA specialists over one quantized base and routes each request to the right adapter, the decision simplifies: you ship a new specialist only if it outperforms the existing one on its target domain without regressing on edge cases the router might misclassify. Otherwise the base model already covers you.
Common questions
How do I handle evaluation when my fine-tuned model's improvements are task-specific but I need to verify general capability hasn't degraded?
Run a held-out benchmark suite covering both the target task and adjacent general tasks. Compare against the base model on all metrics. If the fine-tuned model gains on the target but loses meaningfully on general benchmarks, you may have over-specialized. Use a weighted score to decide if the trade-off is acceptable.
What statistical significance tests should I use to confirm the improvement isn't just noise?
Use bootstrapping or paired permutation tests on your evaluation set. For classification tasks, McNemar's test works well. For generation tasks, bootstrapped confidence intervals over multiple evaluation runs are standard. A p-value below 0.05 or non-overlapping confidence intervals between base and fine-tuned scores indicates a real difference rather than sampling variance.
How do I evaluate if the fine-tuned model genuinely learned better representations versus just memorizing the training data?
Compare performance on a held-out test set that shares no overlap with fine-tuning data. Also evaluate on out-of-distribution examples and adversarial inputs. If the model performs well on in-distribution data but collapses on OOD examples, it likely memorized patterns rather than learning transferable representations. Cross-domain benchmarks reveal this clearly.