July 13, 2026

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

flowchart TD Train["During Training"] --> Perplexity["Track perplexity\nand validation loss\nIf val loss ↑ while\ntrain loss ↓ → overfitting\nStop training"] Perplexity --> After["After Training"] After --> TaskEval["Task-specific evals\nBLEU, ROUGE, BERTScore\nexact match, pass@k\nOn held-out 10-15%"] After --> Benchmark["Benchmark suite\nMMLU, HellaSwag\nCompare vs base model\nDetect catastrophic forgetting"] TaskEval --> Ship["Before Shipping"] Benchmark --> Ship Ship --> Judge["LLM-as-judge\nScore on correctness,\nhelpfulness, safety\nCalibrate vs human (r > 0.8)"] Ship --> Human["Human evaluation\n50-100 outputs\nRate quality\nGold standard"] Ship --> Golden["Golden set\n50-200 curated examples\nRun on every change\nCI/CD gate"] Judge --> Prod["In Production"] Human --> Prod Golden --> Prod Prod --> Monitor["Monitor\nQuality metrics\nUser feedback\nError rates\nFaithfulness drops\nSet up alerts"] Monitor --> Iterate["Iterate\nRetrain with new data\nUpdate golden set\nRe-evaluate\nDeploy if passes gates"] Iterate --> Prod

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

  1. 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).

  2. 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).

  3. 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).

  4. 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).

  5. Monitor validation loss — if validation loss increases while training loss decreases, stop training. You're overfitting. The model is memorizing, not learning (ailearnings 2026).

  6. 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).

  7. 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).

  8. 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)."