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.

Performance (tok/s)Quality (MMLU-Pro %)0507210003000Small fast model(42% / 3,000 tok/s) — useless if the task demands itOptimised frontier model(72% / 3,000 tok/s) — Pareto zoneSlow frontier(72% / 800 tok/s)Fast engine, bad model(35% / 4,000 tok/s) — unusableUseful zone: quality ≥ task threshold ∧ performance ≥ production SLO

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.

BenchmarkCapability measuredFormatTest setFrontier saturation 2026
MMLUMultidisciplinary knowledge (57 subjects)4-choice MCQ14,079High: top-5 > 88%; insufficient separation
MMLU-ProMMLU with 10 options, multistep reasoning10-choice MCQ12,032Medium: top-5 between 72–77%; still separates
GSM8KPrimary-school maths reasoning (word problems)answer generation1,319Very high: top models > 97%
MATHCompetition maths (algebra, geometry, calculus, etc.)LaTeX generation5,000Medium-high: top models 85–92%
GPQA DiamondPhD-level scientific reasoning (biology, physics, chemistry)4-choice MCQ198Emerging: top > 90% in 2026; still separates in 60–90%
BBH (BIG-Bench Hard)23 tasks where earlier models fell below human levelgeneration6,511Medium: useful for complex reasoning
IFEvalVerifiable instruction following (format, length, language)generation + rules541Low: notable separation between models
HumanEvalPython code generation (164 problems with signature)generation + execution164Very high: top > 93%; saturated
MBPPCode generation (500 problems without a function signature)generation + execution500High: top models 85–92%
MuSRMultistep reasoning over long textsgeneration~1,000Low: useful for extended reasoning
TruthfulQATruthfulness: resistance to asserting popular mythsgeneration + MCQ817Medium: 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)

FieldData
Repositorygithub.com/EleutherAI/lm-evaluation-harness
LicenceMIT
MaintainerEleutherAI
Active version (Jun 2026)0.4.x (main branch)
Available tasks60+ benchmarks, hundreds of subtasks and variants
Supported backendsHugging Face Transformers, vLLM, litellm, OpenAI-compatible API, GGUF
Task formatYAML + Python; each task defines dataset, template, metric and number of shots
What it measuresMCQ accuracy, exact match, pass@k on code, perplexity, BLEU/ROUGE
How it is invokedlm_eval --model hf --model_args pretrained=<model> --tasks mmlu,gsm8k --num_fewshot 5 --output_path results/
OutputJSON with per-task metrics + configuration metadata
Use in the ecosystemOfficial 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)

FieldData
Repositorygithub.com/stanford-crfm/helm
Official sitecrfm.stanford.edu/helm
LicenceApache 2.0
MaintainerStanford CRFM
Status (Jun 2026)Maintenance mode since 1 June 2026
What it measuresAccuracy, calibration, robustness, fairness, toxicity, efficiency (latency/cost)
Task formatPython + YAML; scenarios with multiple simultaneous metrics
Supported backendsAPI (OpenAI, Anthropic, Cohere, etc.) + local models via Hugging Face
Active variantsHELM Classic, HELM Capabilities, HELM Lite, MedHELM, HELM Safety
Installationpip install crfm-helm
How it is invokedhelm-run --conf-paths run_specs.conf --suite v1 --max-eval-instances 1000
OutputJSON + 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

FieldData
Repositorygithub.com/LiveBench/LiveBench
Official sitelivebench.ai
LicenceMIT
MaintainerNYU, UT Austin, UC Santa Barbara
PaperarXiv:2406.19314
Size1,000 active questions (monthly refresh, same total size)
Categories6: math, coding, reasoning, language, instruction following, data analysis
Tasks18 subtasks
What it measuresGeneral capabilities over questions with objectively verifiable answers
Anti-contaminationQuestions generated from recent sources: arXiv papers, news, IMDb, new datasets
ScoringNo LLM-as-judge: automatically verifiable answer (exact ground truth)
CadenceNew 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)

FieldData
Repositorygithub.com/huggingface/lighteval
LicenceMIT
MaintainerHugging Face (Leaderboard & Evals Team)
Available tasks1,000+ tasks across multiple domains and languages
Supported backendsHugging Face Accelerate (CPU/GPU/multi-GPU), Nanotron, vLLM, TGI, OpenAI-compatible endpoints
What it measuresAccuracy, BERT score, BLEU, exact match; same as the harness + HF’s own tasks
DifferentiatorDesigned to be the engine behind HF’s leaderboards; easy extension with custom tasks
Installationpip install lighteval
How it is invoked`lighteval accelerate –model_args “pretrained=” –tasks “lighteval
OutputJSON + 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)

AspectOpenLLM Leaderboard v2OpenEvals
ArchitectureSingle centralised leaderboard200+ specialised community leaderboards
BenchmarksFixed (6 tasks)Variable per leaderboard (math, code, medical, safety, etc.)
Models evaluated13,000+Distributed across leaderboards
Eval enginelm-evaluation-harnesslighteval (most) or harness
StatusArchived with an updated UI (Mar 2025)Active; you can create your own leaderboard
AdvantageHistorical consistencySpecialisation, speed of adaptation

The archived collection is available for reference at huggingface.co/collections/OpenEvals/archived-open-llm-leaderboard-2024-2025.


LMArena / Chatbot Arena

FieldData
Sitelmarena.ai (rebrand of LMSys Chatbot Arena, January 2026)
MethodologyAnonymous pairwise comparisons: the user votes for the answer they prefer without knowing the model
Statistical modelBradley-Terry (maximum likelihood over the full history of match-ups; replaced classic Elo for greater stability)
Accumulated votes> 6 million (Jun 2026)
VariantsOverall, Coding, Math, Hard Prompts, Multimodal — the specialised ones are more reliable
Licence/accessFree (web); vote data available under a CC licence
LimitationsOverall 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

ObjectiveToolWhy
Reproduce a standard academic evallm-evaluation-harnessDe 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 questionsLiveBenchMonthly refresh; verifiable answers without a judge
Native integration with HF Hub and vLLMlightevalvLLM backend, 1,000+ tasks, direct publishing to the Hub
Compare against the public state of the art (OSS)OpenEvals + lightevalThe successor ecosystem to the OpenLLM Leaderboard
Human preference at scaleLMArenaBradley-Terry over millions of real comparisons
Custom domain eval (medical, legal, etc.)lighteval with a custom taskSimpler 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)

FindingSourceFigure
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 modelsIbid.−9.4 pp on reformulated prompts vs the original test
HumanEval saturatedArtificial Analysis / multiple 2026 reportsTop models > 93%; separation ≤ 2 pp between the best 5
GPQA Diamond: appearance of indirect contaminationmindstudio.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:

  1. A new benchmark is published (MMLU in 2021, GPQA in 2023).
  2. The labs use it as an evaluation target during pretraining and fine-tuning.
  3. Performance on that benchmark rises quickly, faster than real capability.
  4. The benchmark stops discriminating at the high end.
  5. 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:

ParameterExampleWhy it matters
Harness versionlm-evaluation-harness==0.4.3Changes to the prompt template between versions invalidate the comparison
Exact model versionmeta-llama/Llama-3.1-70B-Instruct@sha256:abc…Silent model updates on the Hub change the results
Prompt templatemmlu_pro_cot_0shot vs mmlu_pro_5shotThe difference between 0-shot and 5-shot can be 5–12 pp
Number of shots--num_fewshot 5The 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:

BenchmarkTypical 0-shotTypical 5-shotDifference
MMLU-Pro62%72%+10 pp
GPQA Diamond55%65%+10 pp
GSM8K70%82%+12 pp
IFEval68%71%+3 pp
HumanEval75%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:

CauseTypical magnitude
Different harness version (changed template)1–4 pp
Model with a silent update0.5–3 pp
Different context truncation0.5–2 pp
Sampling seed (for generation)0.3–1.5 pp
Tokenisation with a chat template vs without one2–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:

FieldContent
Primary benchmarkMMLU-Pro (5-shot) — separates in the 60–77% zone
Reasoning benchmarkGPQA Diamond (0-shot) — separates in the 55–90% zone
Instruction benchmarkIFEval (0-shot prompt-level accuracy)
Code benchmarkMBPP (0-shot, pass@1) — less saturated than HumanEval
Anti-contaminationLiveBench global score (monthly)
Toollm-evaluation-harness (primary) + lighteval (secondary, HF Hub)
Pinned versionharness==0.4.3, lighteval==0.6.x
ShotsDeclared explicitly per benchmark
ReproducibilityOutput JSON stored with the model SHA
FrequencyPer 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


Sources