TL;DR — Evaluate fine-tuned LLM in 2026: three layers — benchmarks (MMLU 57 subjects, HumanEval pass@k, HellaSwag), metrics (BLEU, ROUGE, BERTScore, perplexity), judgment (LLM-as-judge 80%+ human agreement, human eval). lm-evaluation-harness: 60+ benchmarks, supports LoRA, vLLM. Overfitting: validation loss vs training loss. Catastrophic forgetting: compare vs base on MMLU/HellaSwag. Golden set: 50-200 curated examples, run on every change. CI: faithfulness >= 0.90, answer relevance >= 0.85. RAG: Ragas faithfulness, context precision, answer relevance. Contamination: 40% of HumanEval contaminated, GSM8K drops 13 points decontaminated. Best practices: multiple metrics, compare vs base, calibrate judge (r > 0.8), build golden set, wire into CI, monitor production.
How to Evaluate a Fine-Tuned LLM in 2026: Metrics, Benchmarks, LLM-as-Judge, and Production Monitoring
Evaluation is not one problem — it is several. You need metrics for training monitoring, metrics for capability measurement, and metrics for production quality. Each serves a different purpose and none is a substitute for the others. The most common evaluation mistake is measuring the wrong thing.
Key Statistics
| Metric | Value | Source |
|---|---|---|
| GPT-4 judge vs human agreement | 80%+ on MT-Bench | hld 2026 |
| HumanEval contamination | ~40% | hld 2026 |
| GSM8K decontamination drop | ~13 points | hld 2026 |
| G-Eval Spearman correlation | 0.514 with human | hld 2026 |
| lm-evaluation-harness benchmarks | 60+ | eleutherai 2026 |
| Golden set size | 50-200 examples | wandb 2026 |
| Judge calibration threshold | r > 0.8 | ailearnings 2026 |
| CI faithfulness gate | >= 0.90 | hld 2026 |
| CI answer relevance gate | >= 0.85 | hld 2026 |
| MMLU top model score | 85-90% | wandb 2026 |
Evaluation Layers
| Layer | What It Measures | Tools | When to Use |
|---|---|---|---|
| Benchmarks | Model comparison | MMLU, HumanEval, HellaSwag, lm-eval-harness | Model selection, regression detection |
| Metrics | Task-specific quality | BLEU, ROUGE, BERTScore, perplexity, pass@k | After training, on held-out data |
| Judgment | Qualitative quality | LLM-as-judge, human eval, A/B testing | Before shipping, in production |
| Golden set | Your actual task | Custom examples, hand-labeled | Every change, CI/CD gate |
| RAG metrics | RAG pipeline quality | Ragas (faithfulness, context precision) | RAG systems |
Sources: ailearnings (2026), machinelearningplus (2026), wandb (2026), hld (2026).
Metrics Comparison
| Metric | What It Measures | Best For | Limitations |
|---|---|---|---|
| Perplexity | Next-token prediction quality | Training monitoring | Doesn't measure task performance |
| BLEU | N-gram overlap (precision) | Translation, template output | Punishes paraphrasing |
| ROUGE | N-gram overlap (recall) | Summarization | Surface-level only |
| BERTScore | Semantic similarity | Open-ended generation | Slower than BLEU/ROUGE |
| Exact match | Correctness | Structured output (JSON, SQL) | Only for single-answer tasks |
| pass@k | Code correctness | Code generation | Requires unit tests |
| LLM-as-judge | Quality, helpfulness | Open-ended tasks | Judge bias, cost, drift |
| Human eval | Ground truth quality | High-stakes, calibration | Expensive, slow |
Sources: machinelearningplus (2026), wandb (2026), hld (2026).
Evaluation Strategy by Phase
Source: ailearnings (2026), wandb (2026), hld (2026).
Benchmark Comparison
| Benchmark | Tasks | Metric | Top Score | Contamination Risk |
|---|---|---|---|---|
| MMLU | 57 subjects, multiple choice | Accuracy | 85-90% | Moderate |
| HumanEval | 164 Python problems | pass@k | 85-95% | High (~40%) |
| HellaSwag | Commonsense reasoning | Accuracy | 85-90% | Low |
| GSM8K | Grade school math | Accuracy | 85-90% | High (13pt drop) |
| Winogrande | Coreference resolution | Accuracy | 80-85% | Low |
| MT-Bench | Multi-turn conversation | LLM-as-judge | 8-9/10 | Low |
| SWE-Bench | Software engineering | pass@k | 20-40% | Moderate |
Sources: wandb (2026), hld (2026), machinelearningplus (2026).
RAG Evaluation Metrics (Ragas)
| Metric | What It Measures | Good Score | Problem Indicated |
|---|---|---|---|
| Faithfulness | Claims supported by context | >= 0.90 | Low = hallucination |
| Answer relevance | Answer addresses question | >= 0.85 | Low = poor generation |
| Context precision | Retrieved docs relevant | >= 0.80 | Low = poor retrieval |
| Context recall | All needed docs retrieved | >= 0.80 | Low = missing documents |
Source: hld (2026), machinelearningplus (2026).
Implementation Guide
| Phase | What to Do | Timeline |
|---|---|---|
| 1. Build golden set | 50-200 curated examples, hand-labeled | 1-2 weeks |
| 2. Benchmark base model | Run MMLU, HellaSwag on base model | 1 day |
| 3. Fine-tune | SFT with LoRA/QLoRA, monitor validation loss | 1-3 hours |
| 4. Detect overfitting | Compare training vs validation loss | During training |
| 5. Benchmark fine-tuned | Run same benchmarks on fine-tuned model | 1 day |
| 6. Detect forgetting | Compare fine-tuned vs base on benchmarks | 1 day |
| 7. Task-specific eval | BLEU, ROUGE, BERTScore, exact match on held-out | 1-2 days |
| 8. LLM-as-judge | Score 50-100 outputs on quality dimensions | 1 day |
| 9. Calibrate judge | Compare judge scores to human ratings (r > 0.8) | 1-2 days |
| 10. Human evaluation | Have 3+ evaluators rate outputs | 1 week |
| 11. Wire into CI | Golden set as CI gate, block on regression | 1-2 days |
| 12. Deploy | Deploy if all gates pass | 1 day |
| 13. Monitor production | Track quality, faithfulness, user feedback | Ongoing |
Best Practices
-
Use multiple metrics — no single metric captures LLM quality. Combine surface metrics (BLEU, ROUGE) with semantic metrics (BERTScore) and judgment (LLM-as-judge). If all metrics move together, you're making real progress (wandb 2026).
-
Always compare against the base model — run the same benchmarks on both base and fine-tuned models. This tells you if fine-tuning improved your task and how much general capability was lost (ailearnings 2026).
-
Build a golden set — 50-200 curated examples from your actual use case, hand-labeled. Run on every change. Wire into CI as a quality gate. This is your most reliable evaluation tool (wandb 2026).
-
Calibrate LLM-as-judge — compare judge scores to human ratings on 50-100 outputs. If correlation is r > 0.8, the judge is reliable. Use the same judge consistently — different judges have different biases (ailearnings 2026).
-
Monitor validation loss — if validation loss increases while training loss decreases, stop training. You're overfitting. The model is memorizing, not learning (ailearnings 2026).
-
Use public benchmarks as directional signal only — 40% of HumanEval is contaminated. GSM8K drops 13 points when decontaminated. Maintain a private golden set that can't be contaminated (hld 2026).
-
Wire evaluation into CI — use pytest-style harnesses (DeepEval, Ragas, promptfoo). Block deployment on regression. Typical gates: faithfulness >= 0.90, answer relevance >= 0.85 (hld 2026).
-
Monitor in production — track quality metrics, user feedback, error rates, and faithfulness. Set up alerts for quality degradation. Page on faithfulness drops, not GPU utilization (hld 2026).
For related topics, see our how to fine-tune LLM, LoRA vs QLoRA, training data preparation, domain-specific AI, and small language models guides.
FAQ
What is lm-evaluation-harness and how do I use it?
lm-evaluation-harness (EleutherAI) is the standard framework for evaluating language models on academic benchmarks. It is the backend for HuggingFace's Open LLM Leaderboard and is used internally by NVIDIA, Cohere, BigScience, BigCode, Nous Research, and Mosaic ML. What it provides: (1) 60+ standard academic benchmarks — MMLU, HellaSwag, Winogrande, HumanEval, GSM8K, TruthfulQA, ARC, and more. Hundreds of subtasks and variants. (2) Multiple model backends — HuggingFace transformers (including GPTQ and AutoGPTQ quantization), vLLM, llama.cpp, OpenAI API, TextSynth. (3) LoRA adapter support — evaluate LoRA adapters directly using HuggingFace's PEFT library. No need to merge adapters before evaluation. (4) Reproducible evaluation — publicly available prompts ensure reproducibility and comparability between papers. (5) Custom prompts and metrics — easy support for custom prompts and evaluation metrics for domain-specific tasks. (6) Visualization — integrate with Weights & Biases (W&B) and Zeno for visualizing and analyzing results. How to use it: (1) Install — pip install lm-eval. (2) Run benchmarks on your model — lm_eval --model hf --model_args pretrained=./merged-model,dtype=bfloat16 --tasks mmlu,hellaswag,winogrande --device cuda:0 --batch_size 8 --output_path ./eval_results/. (3) Run benchmarks on base model — lm_eval --model hf --model_args pretrained=meta-llama/Meta-Llama-3-8B-Instruct,dtype=bfloat16 --tasks mmlu,hellaswag,winogrande --device cuda:0 --batch_size 8 --output_path ./eval_results/base/. (4) Compare results — compare fine-tuned vs base model scores. If fine-tuned scores lower on MMLU/HellaSwag, catastrophic forgetting has occurred. (5) Evaluate LoRA adapters — lm_eval --model hf --model_args pretrained=meta-llama/Meta-Llama-3-8B-Instruct,peft=./lora-adapter --tasks mmlu. No need to merge. (6) Use vLLM for faster evaluation — lm_eval --model vllm --model_args pretrained=./merged-model --tasks mmlu,hellaswag --batch_size 32. vLLM is faster than HuggingFace for generative tasks. (7) Log to W&B — add --log_samples --wandb_args project=llm-eval to log results and samples to Weights & Biases. Tips: (1) Start with --limit 10 — verify answer extraction and scoring on a few examples before running the full benchmark. (2) Use HuggingFace as reference — vLLM occasionally differs from HuggingFace. Use the model_comparator.py script to check validity. (3) Check data integrity — use --check_integrity to verify benchmark data hasn't been corrupted. (4) Use consistent settings — same batch size, device, and dtype for fair comparisons between models. The key: 'lm-evaluation-harness is the standard framework for evaluating language models. It provides 60+ benchmarks, supports LoRA adapters, vLLM, and OpenAI. It is the backend for HuggingFace's Open LLM Leaderboard.' Use it to benchmark your fine-tuned model against the base model and detect catastrophic forgetting (eleutherai 2026, ailearnings 2026)."