LLM quality benchmarks: the contamination trap and the OSS tools for not fooling yourself
Contents
Notation: amounts in euros (N €), decimals with a full stop. The dollar sign is not used (on this site it is a formula delimiter).
Post B7 of the benchmarking track. The B1 introduction established the distinction between the three axes (performance, quality, energy). The B2 tool catalogue covered the performance axis (TTFT, ITL, goodput). This article covers the quality axis: what each benchmark measures, how it is run, and why the leaderboard numbers do not always say what they appear to say. The LLMOps eval pipeline and LLM-as-judge cover the system’s internal evaluation layer; this article covers the evaluation of the base model with standard academic benchmarks.
TL;DR
An inference engine with an 80 ms TTFT serving a low-quality model is worth nothing: the platform’s Pareto front has two independent axes. In 2025–2026, the most widely used static benchmarks (MMLU, HumanEval) have crossed the saturation threshold (HumanEval > 93% in frontier models, MMLU-Pro > 75% in the top-5), which invalidates their ability to discriminate at the high end. The main cause is not that the models are better: it is data contamination, with 18% n-gram overlap detected in Llama-2-70B against evaluation datasets. The OSS tools active in 2026 are lm-evaluation-harness (EleutherAI, MIT, 60+ tasks, the ecosystem’s de facto engine), HELM (Stanford, Apache 2.0, in maintenance since June 2026), LiveBench (MIT, 1,000 questions refreshed monthly to avoid contamination), lighteval (Hugging Face, MIT, 1,000+ tasks, vLLM support), and LMArena/Chatbot Arena (Bradley-Terry over millions of human comparisons). OpenLLM Leaderboard v2 was archived in 2025 and replaced by the OpenEvals ecosystem (200+ specialised leaderboards). Reproducing an eval number requires pinning: harness version, model version, prompt template version and number of shots.
Quality ≠ performance: the independent Pareto axis
The performance axis (TTFT, ITL, throughput) measures how long the engine takes to produce tokens. The quality axis measures how correct those tokens are. They are orthogonal: a small model served with vLLM at 3,000 tok/s can score 42% on MMLU-Pro; a frontier model may need 4× more GPU and score 72%. The product throughput × quality is the only number that matters for a platform in production.
The operational consequence: select model and engine first by quality (does it clear the minimum threshold for the task?) and then by performance (does it meet the SLO within the GPU budget?). Inverting the order, picking the fastest engine and fitting the model into it, is the most frequent mistake in initial sizing.
Reference benchmarks: what each one measures
The table below collects the standard academic benchmarks in 2026, the capability each one measures, its test set size and the current saturation level in frontier models.
| Benchmark | Capability measured | Format | Test set | Frontier saturation 2026 |
|---|---|---|---|---|
| MMLU | Multidisciplinary knowledge (57 subjects) | 4-choice MCQ | 14,079 | High: top-5 > 88%; insufficient separation |
| MMLU-Pro | MMLU with 10 options, multistep reasoning | 10-choice MCQ | 12,032 | Medium: top-5 between 72–77%; still separates |
| GSM8K | Primary-school maths reasoning (word problems) | answer generation | 1,319 | Very high: top models > 97% |
| MATH | Competition maths (algebra, geometry, calculus, etc.) | LaTeX generation | 5,000 | Medium-high: top models 85–92% |
| GPQA Diamond | PhD-level scientific reasoning (biology, physics, chemistry) | 4-choice MCQ | 198 | Emerging: top > 90% in 2026; still separates in 60–90% |
| BBH (BIG-Bench Hard) | 23 tasks where earlier models fell below human level | generation | 6,511 | Medium: useful for complex reasoning |
| IFEval | Verifiable instruction following (format, length, language) | generation + rules | 541 | Low: notable separation between models |
| HumanEval | Python code generation (164 problems with signature) | generation + execution | 164 | Very high: top > 93%; saturated |
| MBPP | Code generation (500 problems without a function signature) | generation + execution | 500 | High: top models 85–92% |
| MuSR | Multistep reasoning over long texts | generation | ~1,000 | Low: useful for extended reasoning |
| TruthfulQA | Truthfulness: resistance to asserting popular myths | generation + MCQ | 817 | Medium: visible separation between families |
Note on saturation: a saturated benchmark does not distinguish models at the high end; it is only valuable as a floor check (confirming the model has not regressed to the level of three years ago). For the frontier zone, the useful benchmarks in 2026 are MMLU-Pro, GPQA Diamond, IFEval and MuSR.
OSS evaluation tools: data sheets
lm-evaluation-harness (EleutherAI)
| Field | Data |
|---|---|
| Repository | github.com/EleutherAI/lm-evaluation-harness |
| Licence | MIT |
| Maintainer | EleutherAI |
| Active version (Jun 2026) | 0.4.x (main branch) |
| Available tasks | 60+ benchmarks, hundreds of subtasks and variants |
| Supported backends | Hugging Face Transformers, vLLM, litellm, OpenAI-compatible API, GGUF |
| Task format | YAML + Python; each task defines dataset, template, metric and number of shots |
| What it measures | MCQ accuracy, exact match, pass@k on code, perplexity, BLEU/ROUGE |
| How it is invoked | lm_eval --model hf --model_args pretrained=<model> --tasks mmlu,gsm8k --num_fewshot 5 --output_path results/ |
| Output | JSON with per-task metrics + configuration metadata |
| Use in the ecosystem | Official engine of the OpenLLM Leaderboard (v1 and v2); de facto reference in research |
The harness is the industry standard for reproducible evaluation. Its strength is the breadth of tasks and the normalisation of the prompt format. Its limitation: the tasks are static, the datasets do not change between harness versions, which exposes it to the contamination problem if the model was trained on the same data.
Full invocation with vLLM as the backend:
lm_eval \
--model vllm \
--model_args pretrained=meta-llama/Llama-3.1-70B-Instruct,dtype=bfloat16 \
--tasks mmlu_pro,gpqa_diamond,ifeval,humaneval \
--num_fewshot 5 \
--batch_size auto \
--output_path ./eval_results/ \
--log_samples
HELM (Stanford CRFM)
| Field | Data |
|---|---|
| Repository | github.com/stanford-crfm/helm |
| Official site | crfm.stanford.edu/helm |
| Licence | Apache 2.0 |
| Maintainer | Stanford CRFM |
| Status (Jun 2026) | Maintenance mode since 1 June 2026 |
| What it measures | Accuracy, calibration, robustness, fairness, toxicity, efficiency (latency/cost) |
| Task format | Python + YAML; scenarios with multiple simultaneous metrics |
| Supported backends | API (OpenAI, Anthropic, Cohere, etc.) + local models via Hugging Face |
| Active variants | HELM Classic, HELM Capabilities, HELM Lite, MedHELM, HELM Safety |
| Installation | pip install crfm-helm |
| How it is invoked | helm-run --conf-paths run_specs.conf --suite v1 --max-eval-instances 1000 |
| Output | JSON + web UI with a reproducible leaderboard and per-prompt transparency |
HELM is the tool that introduced holistic evaluation (multiple metrics over the same scenario instead of a single number). In 2026, with HELM in maintenance mode, the ecosystem has fragmented into specialised leaderboards; but HELM remains the methodological reference for evaluations that need fairness and toxicity as well as accuracy.
HELM Capabilities (published March 2025): an active leaderboard with full prompt transparency, reproducible with the HELM framework. Available at crfm.stanford.edu/helm/capabilities.
LiveBench
| Field | Data |
|---|---|
| Repository | github.com/LiveBench/LiveBench |
| Official site | livebench.ai |
| Licence | MIT |
| Maintainer | NYU, UT Austin, UC Santa Barbara |
| Paper | arXiv:2406.19314 |
| Size | 1,000 active questions (monthly refresh, same total size) |
| Categories | 6: math, coding, reasoning, language, instruction following, data analysis |
| Tasks | 18 subtasks |
| What it measures | General capabilities over questions with objectively verifiable answers |
| Anti-contamination | Questions generated from recent sources: arXiv papers, news, IMDb, new datasets |
| Scoring | No LLM-as-judge: automatically verifiable answer (exact ground truth) |
| Cadence | New questions monthly; old ones retired to avoid accumulated memorisation |
LiveBench is the architectural answer to the contamination problem: if the benchmark changes every month with questions based on sources published after the cutoff of the model under evaluation, memorisation of the training set cannot inflate the result. The limitation is size (1,000 questions) and that it does not cover every domain with the same depth as MMLU.
Execution:
git clone https://github.com/LiveBench/LiveBench
cd LiveBench
pip install -e .
python livebench/gen_model_answer.py \
--model-path meta-llama/Llama-3.1-70B-Instruct \
--model-id llama3-70b
python livebench/gen_ground_truth_judgment.py \
--model-id llama3-70b
python livebench/show_livebench_result.py
lighteval (Hugging Face)
| Field | Data |
|---|---|
| Repository | github.com/huggingface/lighteval |
| Licence | MIT |
| Maintainer | Hugging Face (Leaderboard & Evals Team) |
| Available tasks | 1,000+ tasks across multiple domains and languages |
| Supported backends | Hugging Face Accelerate (CPU/GPU/multi-GPU), Nanotron, vLLM, TGI, OpenAI-compatible endpoints |
| What it measures | Accuracy, BERT score, BLEU, exact match; same as the harness + HF’s own tasks |
| Differentiator | Designed to be the engine behind HF’s leaderboards; easy extension with custom tasks |
| Installation | pip install lighteval |
| How it is invoked | `lighteval accelerate –model_args “pretrained= |
| Output | JSON + direct integration with the Hugging Face Hub to publish results |
lighteval is the internal successor to lm-evaluation-harness in the HF ecosystem: more modern, better vLLM and distributed backend support, and designed to run without leaving the HF stack. For teams already using the Hub to manage models, it is the lowest-friction option.
OpenLLM Leaderboard v2 (archived 2025) → OpenEvals
The OpenLLM Leaderboard v2 evaluated more than 13,000 models between June 2024 and its closure in 2025, using six fixed benchmarks: IFEval, MuSR, GPQA, MATH, BBH and MMLU-Pro, all run with lm-evaluation-harness. Its closure was a direct consequence of the saturation and gaming problem: as the benchmarks became well known, models were optimised for them.
Successor: OpenEvals (huggingface.co/spaces/OpenEvals/find-a-leaderboard)
| Aspect | OpenLLM Leaderboard v2 | OpenEvals |
|---|---|---|
| Architecture | Single centralised leaderboard | 200+ specialised community leaderboards |
| Benchmarks | Fixed (6 tasks) | Variable per leaderboard (math, code, medical, safety, etc.) |
| Models evaluated | 13,000+ | Distributed across leaderboards |
| Eval engine | lm-evaluation-harness | lighteval (most) or harness |
| Status | Archived with an updated UI (Mar 2025) | Active; you can create your own leaderboard |
| Advantage | Historical consistency | Specialisation, speed of adaptation |
The archived collection is available for reference at huggingface.co/collections/OpenEvals/archived-open-llm-leaderboard-2024-2025.
LMArena / Chatbot Arena
| Field | Data |
|---|---|
| Site | lmarena.ai (rebrand of LMSys Chatbot Arena, January 2026) |
| Methodology | Anonymous pairwise comparisons: the user votes for the answer they prefer without knowing the model |
| Statistical model | Bradley-Terry (maximum likelihood over the full history of match-ups; replaced classic Elo for greater stability) |
| Accumulated votes | > 6 million (Jun 2026) |
| Variants | Overall, Coding, Math, Hard Prompts, Multimodal — the specialised ones are more reliable |
| Licence/access | Free (web); vote data available under a CC licence |
| Limitations | Overall is biased by labs’ selective disclosure and by format gaming; Bradley-Terry was recalibrated in mid-2025 (Style Control), shifting some models by ±20–40 Elo |
LMArena is the only benchmark based on human preference at scale. Its advantage: it captures real perceived quality, not just MCQ accuracy. Its limitation: it is hard to reproduce on-premise (it requires a user interface and a panel of human voters). Useful as an external validation signal, not as a CI gate.
Decision table: which tool for which objective
| Objective | Tool | Why |
|---|---|---|
| Reproduce a standard academic eval | lm-evaluation-harness | De facto engine; maximum compatibility with papers |
| Holistic evaluation (accuracy + fairness + toxicity) | HELM (+ HELM Capabilities) | The only framework measuring every axis at once |
| Avoid contamination with recent questions | LiveBench | Monthly refresh; verifiable answers without a judge |
| Native integration with HF Hub and vLLM | lighteval | vLLM backend, 1,000+ tasks, direct publishing to the Hub |
| Compare against the public state of the art (OSS) | OpenEvals + lighteval | The successor ecosystem to the OpenLLM Leaderboard |
| Human preference at scale | LMArena | Bradley-Terry over millions of real comparisons |
| Custom domain eval (medical, legal, etc.) | lighteval with a custom task | Simpler to extend than the harness |
| Fast CI gate (<10 min) | lm-eval harness (subset) | Individual tasks with --tasks ifeval,gpqa + vLLM batching |
The data contamination trap
What it is
A model that has seen a benchmark’s test data during pretraining memorises answers instead of generalising. The benchmark measures memorisation, not capability. This is called data contamination or benchmark leakage.
Scale of the problem (2024–2025 data)
| Finding | Source | Figure |
|---|---|---|
| N-gram overlap in Llama-2-70B | “Data Contamination or Genuine Generalization?” (2025) | 18.1% overlap with eval datasets |
| Out-of-distribution drop in contaminated large models | Ibid. | −9.4 pp on reformulated prompts vs the original test |
| HumanEval saturated | Artificial Analysis / multiple 2026 reports | Top models > 93%; separation ≤ 2 pp between the best 5 |
| GPQA Diamond: appearance of indirect contamination | mindstudio.ai analysis 2026 | “Data laundering”: questions leaked via online forums |
Detection mechanisms
1. N-gram overlap (the classic method)
Compute the fraction of test set n-grams that appear in the model’s pretraining corpus. A practical threshold: if more than 13% of the test’s 8-grams match the corpus, the result is compromised.
\[ \text{contamination ratio} = \frac{|\{g \in \text{test n-grams}\} \cap \{g \in \text{train n-grams}\}|}{|\text{test n-grams}|} \]Limit: it only works if you have access to the pretraining corpus. For closed models, it is not applicable.
2. Canary strings (decoy insertion)
Unique random strings are inserted into the evaluation dataset while it is being created. If the model reproduces those strings without having seen them in context, it confirms that it memorised them from pretraining. The technique was proposed in “Extracting Training Data from Large Language Models” (Carlini et al., 2021) and adopted in recent benchmarks.
3. Perturbation and reformulation
Semantically equivalent variants of the test are generated (paraphrasing, changing proper nouns, translation and back-translation). A model that generalises keeps its accuracy; a model that memorises drops. The average drop detected in contaminated models is 9–15 pp on equivalent reformulated prompts.
4. LiveBench (monthly refresh)
The architectural solution: if the questions are generated from sources published after the model’s cutoff (recent arXiv papers, news, new data), memorisation from pretraining cannot help. The model has to reason over information it could never have seen.
5. Kernel divergence analysis (Savelka et al., 2025)
A more sophisticated statistical method: it compares the embedding distribution of the test set with the distribution of the training corpus. An abnormally low divergence indicates that the benchmark and the training corpus come from the same source.
Why static leaderboards saturate
The cycle is predictable:
- A new benchmark is published (MMLU in 2021, GPQA in 2023).
- The labs use it as an evaluation target during pretraining and fine-tuning.
- Performance on that benchmark rises quickly, faster than real capability.
- The benchmark stops discriminating at the high end.
- The community needs a new benchmark.
The average time between the publication of a benchmark and its saturation in frontier models has gone from ~36 months (MMLU: 2021–2024) to ~18 months (HumanEval: 2021–2023, GPQA: 2023–2025). Saturation is accelerating.
Honest methodology: reproducibility and sources of variance
The four parameters that must be pinned
An eval result is only reproducible if it declares:
| Parameter | Example | Why it matters |
|---|---|---|
| Harness version | lm-evaluation-harness==0.4.3 | Changes to the prompt template between versions invalidate the comparison |
| Exact model version | meta-llama/Llama-3.1-70B-Instruct@sha256:abc… | Silent model updates on the Hub change the results |
| Prompt template | mmlu_pro_cot_0shot vs mmlu_pro_5shot | The difference between 0-shot and 5-shot can be 5–12 pp |
| Number of shots | --num_fewshot 5 | The published standard varies by benchmark; 0-shot and 5-shot are not comparable |
Few-shot vs zero-shot: the numerical difference
Sensitivity to the number of shots varies dramatically by benchmark:
| Benchmark | Typical 0-shot | Typical 5-shot | Difference |
|---|---|---|---|
| MMLU-Pro | 62% | 72% | +10 pp |
| GPQA Diamond | 55% | 65% | +10 pp |
| GSM8K | 70% | 82% | +12 pp |
| IFEval | 68% | 71% | +3 pp |
| HumanEval | 75% | 80% | +5 pp |
Publishing an MMLU-Pro result in 0-shot without saying so, when the leaderboard standard is 5-shot, inflates the comparison by ~10 pp. Two results from the same model published with different numbers of shots are not comparable.
Prompt sensitivity
Minor perturbations in the prompt template produce variations of up to ±8 pp on MCQ and ±15 pp on generation tasks. Sources of variance identified in the literature:
- Order of the options in MCQ (position bias): up to ±4 pp.
- Wording of the question (paraphrasing): ±3–8 pp.
- Presence or absence of “Let’s think step by step”: ±5–12 pp on reasoning.
- Language of the system instructions: ±3–10 pp in non-multilingual models.
Why two evals give different results
A common scenario: the paper reports MMLU-Pro 74.3% and the reproduction gives 71.8%. Frequent causes:
| Cause | Typical magnitude |
|---|---|
| Different harness version (changed template) | 1–4 pp |
| Model with a silent update | 0.5–3 pp |
| Different context truncation | 0.5–2 pp |
| Sampling seed (for generation) | 0.3–1.5 pp |
| Tokenisation with a chat template vs without one | 2–8 pp |
The sum of these sources explains gaps of 2–6 pp that are not noise but systematic protocol differences.
The confidence interval formula for comparing two models
To know whether the difference between model A (accuracy \(p_A\)) and model B (\(p_B\)) over a test set of size \(n\) is statistically significant:
\[ \Delta p \pm 1.96 \cdot \sqrt{\frac{p_A(1-p_A) + p_B(1-p_B)}{n}} \]Applied to GPQA Diamond (\(n = 198\)), if \(p_A = 0.90\) and \(p_B = 0.88\):
\[ \Delta p = 0.02 \quad;\quad \text{margin} = 1.96 \cdot \sqrt{\frac{0.09 + 0.1056}{198}} \approx 1.96 \cdot 0.0314 \approx 0.062 \]The 95% confidence interval is \([{-0.042},\ {+0.082}]\): it crosses zero. A difference of 2 pp over 198 questions is not statistically distinguishable from noise. To distinguish 90% from 88% with 95% confidence you need:
\[ n \approx \frac{(1.96)^2 \cdot (p_A(1-p_A) + p_B(1-p_B))}{(\Delta p)^2} \approx \frac{3.84 \cdot 0.1956}{0.0004} \approx 1{,}878 \text{ questions} \]GPQA Diamond is not that size. Differences of 1–2 pp on GPQA Diamond are statistically invisible.
The quality axis in the scorecard
The platform’s scorecard has three columns: performance (goodput under SLO), quality (score on a reference benchmark), energy (J/token). The quality column is built like this:
| Field | Content |
|---|---|
| Primary benchmark | MMLU-Pro (5-shot) — separates in the 60–77% zone |
| Reasoning benchmark | GPQA Diamond (0-shot) — separates in the 55–90% zone |
| Instruction benchmark | IFEval (0-shot prompt-level accuracy) |
| Code benchmark | MBPP (0-shot, pass@1) — less saturated than HumanEval |
| Anti-contamination | LiveBench global score (monthly) |
| Tool | lm-evaluation-harness (primary) + lighteval (secondary, HF Hub) |
| Pinned version | harness==0.4.3, lighteval==0.6.x |
| Shots | Declared explicitly per benchmark |
| Reproducibility | Output JSON stored with the model SHA |
| Frequency | Per model release; not in the CI of every PR (GPU-hour cost) |
A full eval over 4 benchmarks (MMLU-Pro 12,032 + GPQA 198 + IFEval 541 + MBPP 500) with a 70B model on a generic 2×H100 node takes on the order of 4–8 hours depending on batch size and number of shots. The GPU cost is real: at ~5 €/h per amortised card, a full eval costs on the order of 40–80 €. It is not run on every commit; it is run on every model release or major adapter release.
See also
- LLM evals: the layer after tracing — the system’s internal evaluation layer (golden dataset, CI gate, calibrated judge). A necessary complement to the academic benchmarks in this article.
- LLM-as-judge: fundamentals — the LLM judge that evaluates outputs in production; different from an academic benchmark, but sharing the need for calibration and reproducibility.
- Evaluating a RAG: RAGAS and the golden dataset — a specialisation of evaluation for RAG systems; faithfulness and context precision do not appear in the academic benchmarks in this article.
- Benchmark tool catalogue: data sheet by data sheet — the performance axis (TTFT, ITL, goodput); the complementary half of this article in the scorecard.
- LLM benchmarking: state of the art — the B1 introduction with the three axes and the track’s general methodology.
Sources
- EleutherAI · lm-evaluation-harness — https://github.com/EleutherAI/lm-evaluation-harness
- Stanford CRFM · HELM — https://github.com/stanford-crfm/helm
- Stanford CRFM · HELM Capabilities (mar-2025) — https://crfm.stanford.edu/2025/03/20/helm-capabilities.html
- Stanford CRFM · HELM (sitio oficial) — https://crfm.stanford.edu/helm/
- LiveBench · paper arXiv:2406.19314 — https://arxiv.org/abs/2406.19314
- LiveBench · sitio oficial — https://livebench.ai
- LiveBench · GitHub — https://github.com/LiveBench/LiveBench
- NYU Center for Data Science · LiveBench blog — https://nyudatascience.medium.com/livebench-challenging-language-models-with-contamination-free-questions-999b52967ec8
- Hugging Face · lighteval — https://github.com/huggingface/lighteval
- Hugging Face · OpenLLM Leaderboard (archivado) — https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard
- Hugging Face · OpenEvals (sucesor) — https://huggingface.co/spaces/OpenEvals/find-a-leaderboard
- Hugging Face · Archived Open LLM Leaderboard 2024-2025 — https://huggingface.co/collections/OpenEvals/archived-open-llm-leaderboard-2024-2025
- LMArena · Chatbot Arena — https://lmarena.ai
- LMSys · blog Chatbot Arena Elo — https://www.lmsys.org/blog/2023-05-03-arena/
- “A Statistical Framework for Ranking LLM-Based Chatbots” · arXiv:2412.18407 — https://arxiv.org/pdf/2412.18407
- “Data Contamination or Genuine Generalization?” (2025) — https://www.suaspress.org/ojs/index.php/AJNS/article/view/v2n2a03
- “When Benchmarks Leak: Inference-Time Decontamination” (2025) · arXiv:2601.19334 — https://arxiv.org/pdf/2601.19334
- “How Contaminated Is Your Benchmark?” (2025) · arXiv:2502.00678 — https://arxiv.org/pdf/2502.00678
- “When AI Benchmarks Plateau” (2026) · arXiv:2602.16763 — https://arxiv.org/pdf/2602.16763
- GPQA · arXiv:2311.12022 — https://arxiv.org/abs/2311.12022
- GPQA Diamond leaderboard · Artificial Analysis — https://artificialanalysis.ai/evaluations/gpqa-diamond
- “The Emperor’s New Clothes in Benchmarking?” (2025) · arXiv:2503.16402 — https://arxiv.org/pdf/2503.16402
- lm-evaluation-harness · CLI reference — https://lm-evaluation-harness.readthedocs.io/running_evals/cli_reference/
- crfm-helm · PyPI — https://pypi.org/project/crfm-helm/