50.0 What this chapter gives you#
- You will be able to say exactly what a benchmark is, in five mechanical
parts, and name which part is being argued about when two numbers disagree.
- You will be able to describe the main benchmarks by name, year, size and
scoring rule, and say for each one what it does not measure.
- You will be able to explain why the same model, on the same benchmark, run
by two honest teams, can legitimately produce different scores.
- You will be able to compute pass@k by hand and explain why it is reported
instead of a plain percentage.
- You will be able to explain benchmark contamination, list five ways people
try to detect it, and say honestly why detection is hard and disputed.
- You will be able to read a model announcement and list the eight things it
did not tell you.
- You will be able to explain the difference between a training cutoff date
and a release date, and why models are bad at reporting their own cutoff.
- You will be able to explain why a product name and a model identifier are
different things, and why pinning a dated identifier matters in production.
- You will be able to build your own evaluation set of 30 to 100 examples with
a scoring rule, and use it to choose and re-choose a model.
- Throughout, you will be able to sort a claim into three bins: established
fact, active research, and marketing claim.
A warning that applies to this whole chapter. The dates, item counts, paper
titles and naming conventions here were checked in August 2026. The item counts
and the naming conventions are stable. The leaderboard numbers are not. Any
specific score in this chapter should be read as “roughly this, in mid-2026”,
and any score you care about should be re-checked at the source.
50.1 What a benchmark is, mechanically#
PLAIN50.1.1 in simple words#
- A benchmark is a test. That is all it is.
- It has a fixed list of questions.
- Somebody already knows the right answer to every question.
- There is a rule for deciding if a given answer counts as right.
- You give the questions to the model, collect its answers, apply the rule,
and count.
- The count, turned into a percentage, is the score.
- There is nothing magic in it. It is a school test with a marking scheme.
- It is not a measurement of intelligence, any more than a spelling test is.
- It measures one thing: how many of these particular items, marked this
particular way, this particular model got right on this particular day.
- Everything difficult about benchmarks comes from the words “particular”.
- Change the wording of the question and the score moves.
- Change the marking rule and the score moves.
- Change which items you use and the score moves.
- None of that is cheating. It is just what happens.
- So when two labs publish different numbers for the same model on the same
test, the first assumption should not be dishonesty. It should be setup.
PLAIN50.1.2 a picture in your head#
- Think of a driving test.
- The test has a fixed route, a fixed set of manoeuvres, and an examiner with
a clipboard listing faults.
- Two candidates take the same test and get different results. Fine.
- Now take the same candidate to two different test centres.
- One centre uses a route with a busy roundabout. The other uses a quiet
estate. The candidate may pass one and fail the other.
- One examiner counts a small kerb touch as a minor fault. Another counts it
as a major. Same driving, different result.
- One centre lets you do a warm-up lap first. The other does not.
- Now imagine the candidate has driven that exact route four hundred times,
because it is published online.
- That last one is contamination, and section 50.5 is about it.
- And here is the biggest problem. Passing a driving test does not tell you
whether somebody can drive to Manchester in fog at night.
Where this comparison breaks: a driving test has a legal standard behind it
and an examiner who watched you. Most AI benchmarks have neither. Nobody
watched the model. A script compared strings. Also, driving tests are not
published in advance with all the answers. Almost every AI benchmark is.
PLAIN50.1.3 a worked example#
- Here is one real item, in the style of GSM8K, a set of grade-school maths
word problems released by OpenAI in 2021.
Question:
Natalia sold clips to 48 friends in April, and then she
sold half as many clips in May. How many clips did she
sell altogether in April and May?
Reference answer (the dataset marks the final number
with four hash characters):
48 / 2 = 24
48 + 24 = 72
#### 72
- The
#### marker is part of the dataset format. The number after it is the
answer the scorer will compare against.
- Now here are two different things a model might produce.
Model A output:
"She sold 48 in April and 24 in May, so 72 clips."
Model B output:
"72"
- Both are correct. A strict scorer that demands the whole reply to equal
“72” marks model A wrong and model B right.
- A scorer that pulls the last number out of the reply marks both right.
- Nothing about the model changed. The marking rule changed.
- That single choice can move a reported score by several points across a
whole benchmark.
- Now a nastier case. A model replies “72 clips”. A scorer that pulls the last
number finds 72. Good.
- A model replies “The answer is 48 + 24 = 72.” A scorer that pulls the last
number still finds 72. Good.
- A model replies “She sold 72, up from 48.” A scorer that pulls the last
number finds 48 and marks it wrong. The model was right.
- Real answer-extraction bugs look exactly like this.
PLAIN50.1.4 what is really happening inside#
- Every benchmark run has exactly five moving parts. Learn these five and you
can interrogate any published number.
- Part one, the items. The fixed list of questions and known answers.
- Part two, the prompt template. The wrapper of text that surrounds each
item before it reaches the model. Instructions, examples, formatting.
- Part three, the generation settings. How the model is asked to produce
text: temperature, how many tokens it may write, whether it may think first.
- Part four, the answer extraction and scoring function. The code that
turns a blob of model text into “right” or “wrong”.
- Part five, the aggregate. How the per-item results are combined into one
number, and whether that number is one run or an average of several.
- Here is the flow as a picture.
items prompt model extract score
+--------+ +--------+ +--------+ +--------+ +--------+
| Q + A |-->| wrap in|->| sample |->| pull |->| count |
| pairs | |template| | text | | answer | | right |
+--------+ +--------+ +--------+ +--------+ +--------+
^ |
| v
temperature, "71.4 per cent"
max tokens, k
- Each of the five boxes is a choice made by whoever ran the evaluation.
- Every one of those five choices changes the number that comes out.
- Only the first box, the items, is usually published. The other four are
often described in a sentence or not at all.
- That is the single most important fact in this chapter.
- The honest version: the sentence “this model scores 88 per cent on MMLU” is
incomplete in the way “this car does 60” is incomplete. A benchmark score
is not a property of a model. It is a property of a model plus a harness,
measured on one day.
TECHNICAL50.1.5 the engineer’s version#
- Formally, an evaluation is a tuple: a dataset D of items, a prompt function
p that maps an item to a model input, a decoding configuration, an
extraction function e that maps model output to a candidate answer, a metric
m that compares candidate to reference, and an aggregation over D.
- The score is
(1/|D|) * sum over i of m(e(model(p(d_i))), a_i) for
accuracy-style metrics. Everything contested lives in p, e and the decoder.
- Two implementation families exist for multiple-choice items and they do not
give the same answer.
- Log-likelihood scoring: present the question, then score each candidate
continuation by the model’s log probability, and pick the highest. The model
never generates a token. Common for base models.
- Generative scoring: present the question with lettered options, let the
model emit text, then parse a letter out of it. Common for chat models.
- On the same items and the same model these can differ by several points.
Neither is wrong. They measure different things.
- Length normalization is a further fork. Raw log probability favours short
options, so harnesses often divide by token count or by character count, or
normalize against the unconditional probability of the option.
- The EleutherAI lm-evaluation-harness is the de facto open standard for
this. It supports over 60 academic benchmarks with hundreds of subtask
variants, and it powered the Hugging Face Open LLM Leaderboard. Its stated
principle is that publicly available prompts make results reproducible and
comparable between papers. This is a convention, not a standard.
- Stanford CRFM’s HELM, first published in November 2022 as “Holistic
Evaluation of Language Models”, takes the other approach: fix the prompts
centrally, report many metrics per scenario rather than one, and publish
every raw model output.
- Terminology: a harness is the code that runs the loop. A scenario
or task is one benchmark inside it. A run is one execution.
- There is no ISO or IEEE specification for any of this. There is no
conformance test. Everything in this section is convention.
| Part of a run |
Who usually sets it |
Usually published? |
| Items |
Benchmark author |
Yes |
| Prompt template |
Evaluator |
Sometimes |
| Decoding settings |
Evaluator |
Rarely |
| Extraction and metric |
Evaluator |
Rarely |
WORDS50.1.6 remember these#
- Benchmark — a fixed test with known answers — a dataset plus a prompting,
extraction and scoring protocol.
- Item — one question — one example in the evaluation dataset, with a
reference answer.
- Prompt template — the wrapper text around a question — the function mapping
a dataset item to model input, including any few-shot exemplars.
- Harness — the program that runs the test — the evaluation framework that
implements prompting, decoding, extraction and aggregation.
- Extraction — pulling the answer out of the reply — the parser mapping raw
generation to a comparable candidate answer.
- Metric — the marking rule — the function comparing candidate to reference,
such as exact match or pass@k.
- Aggregate — the final single number — the reduction over all items, often
plain accuracy, sometimes a macro average over subjects.
- Log-likelihood scoring — asking which option the model thinks most likely —
ranking candidate continuations by model log probability without generating.
50.2 The major benchmarks, one at a time#
PLAIN50.2.1 in simple words#
- There are perhaps twenty benchmark names you will see repeatedly.
- They fall into a few families.
- Knowledge quizzes: multiple-choice questions across many school and
university subjects. MMLU is the famous one.
- Maths: word problems and competition problems. GSM8K, MATH, AIME.
- Code: write a function that passes hidden tests. HumanEval, MBPP.
- Hard science: questions a PhD student would struggle with. GPQA.
- Agentic work: give the model a real repository and a real bug report and
see whether the tests pass afterwards. SWE-bench.
- Reasoning puzzles: coloured grid puzzles with no text at all. ARC-AGI.
- Common sense: pick the sensible ending to a sentence. HellaSwag.
- Instruction following: did it obey the format you asked for? IFEval.
- Chat quality: judged by a human or by another model. MT-Bench.
- Each of these was built for a reason, at a time, by somebody.
- Almost all of them are now much easier than when they were built.
- That is not because they were badly made. It is because the models improved
and because the tests leaked into training data.
- The single most useful habit is to ask, for each benchmark: what would a
model have to be able to do to score well, and is that what I need?
PLAIN50.2.2 a picture in your head#
- Think of a hospital’s set of blood tests.
- Each test measures one narrow thing. Iron. Glucose. White cell count.
- No single test tells you whether a person is healthy.
- A doctor orders several, reads them together, and knows which ones are
unreliable in which circumstances.
- A benchmark suite works the same way. MMLU is a bit like a general
inflammation marker: broad, cheap, and non-specific.
- SWE-bench is like a treadmill stress test: expensive, slow, closer to the
real activity, and it can be gamed by training on the treadmill.
- And here is the part that matters. Some blood tests go out of date. A test
that was diagnostic in 1990 may be useless now because everyone takes a
supplement that changes the reading.
- Benchmarks go out of date the same way, and for a similar reason: everybody
now optimizes for the reading.
Where this comparison breaks: blood tests have reference ranges established by
regulators and reproducible physical chemistry behind them. AI benchmarks have
neither. Two labs running the same blood test on the same sample should agree
within a known tolerance. Two labs running the same AI benchmark on the same
model have no agreed tolerance at all.
PLAIN50.2.3 a worked example#
- Take one benchmark and follow it end to end: GPQA.
- GPQA stands for Graduate-level Google-Proof Question Answering.
- It was published on 20 November 2023 by David Rein, Betty Li Hou, Asa Cooper
Stickland, Jackson Petty, Richard Yuanzhe Pang, Julien Dirani, Julian
Michael and Samuel Bowman.
- It has 448 multiple-choice questions in biology, physics and chemistry.
- Every question was written by a person with or studying for a PhD in that
subject.
- “Google-proof” is a design goal, not a guarantee. It means the writers tried
hard to make the answer un-findable by search.
- Here is the evidence they gave for that. Skilled non-experts, allowed
unrestricted web access and spending on average over 30 minutes per
question, reached 34 per cent accuracy.
- Experts in the matching field reached 65 per cent, or 74 per cent after
correcting for questions the experts later agreed were flawed.
- Chance is 25 per cent, because there are four options.
- The best model at publication, based on GPT-4, scored 39 per cent.
- GPQA Diamond is a 198-question subset. It keeps only questions where
the expert validators agreed on the answer and most non-experts got it
wrong. It is the hardest and cleanest slice.
- Diamond is what almost every model announcement reports. When you see
“GPQA”, check whether it means the 448 or the 198.
- What GPQA measures well: whether a model holds deep, specific technical
knowledge that is not one search away.
- What it does not measure: whether the model can do science. There is no
experiment, no hypothesis, no error bar, no lab. It is a multiple-choice
quiz with four options and a one-in-four floor.
- And by 2026 the top scores on Diamond had risen far above the 65 per cent
expert figure, which does not mean the models are better scientists than
PhD holders. It means they are better at that quiz.
PLAIN50.2.4 what is really happening inside#
- Here is each major benchmark in one block: what it is, when, how big, how
scored, and its main blind spot.
- MMLU, 2020. “Measuring Massive Multitask Language Understanding”, by Dan
Hendrycks, Collin Burns, Steven Basart, Andy Zou, Mantas Mazeika, Dawn Song
and Jacob Steinhardt, first posted 7 September 2020.
- 57 subjects, from elementary mathematics to professional law. Four options
per question. About 14,000 test items in the widely used release, plus a
1,531-item validation split and a 285-item development split used for
few-shot examples.
- Scored as plain accuracy. Chance is 25 per cent.
- Blind spot: it is recall of facts in multiple-choice form. It cannot tell
you whether a model can write, reason for ten steps, use a tool, or admit
ignorance. It also contains a known number of wrong reference answers.
- MMLU-Pro, 2024. From the TIGER-Lab group, first posted 3 June 2024.
About 12,000 questions, ten options instead of four, 14 subject areas,
harder items, and many of the broken MMLU items removed.
- Scores dropped by 16 to 33 points relative to MMLU. Chance falls to 10 per
cent. Sensitivity to prompt wording fell from about 4 to 5 points on MMLU to
about 2 points on MMLU-Pro, across 24 prompt styles they tried.
- GSM8K, 2021. From “Training Verifiers to Solve Math Word Problems” by
Karl Cobbe and colleagues at OpenAI, 27 October 2021. 8.5 thousand
grade-school word problems: 7,473 for training, 1,319 for testing.
- Scored by exact match on the final number. Blind spot: the arithmetic is
trivial and the reasoning is two to eight steps. It has been effectively
solved since about 2024 and no longer separates strong models.
- MATH, 2021. Hendrycks and colleagues, 5 March 2021. 12,500 competition
problems with full worked solutions, split 7,500 train and 5,000 test.
Answers are mathematical expressions, not just numbers, which makes marking
much harder. A 500-item subset called MATH-500 is widely reported.
- HumanEval, 2021. From “Evaluating Large Language Models Trained on
Code” by Mark Chen, Jerry Tworek, Heewoo Jun and 51 others at OpenAI,
7 July 2021. Exactly 164 hand-written Python problems.
- Each has a function signature, a docstring and hidden unit tests. Scored by
pass@k: the chance that at least one of k samples passes all the tests.
The original Codex model scored 28.8 per cent at pass@1 and 70.2 per cent
at pass@100.
- HumanEval blind spots, and there are many. 164 items is tiny, so one item
is 0.6 points. The problems are self-contained functions of a few lines.
There is no project, no dependency, no existing code to read, no debugging.
The tests are shallow. It is Python only. And it is thoroughly leaked.
- MBPP, 2021. “Program Synthesis with Large Language Models” by Jacob
Austin, Augustus Odena and colleagues at Google, 16 August 2021. 974
entry-level Python problems, each with three assert-statement tests. A
hand-cleaned subset of 427 problems is often used instead.
- GPQA, 2023, covered above. 448 items, Diamond subset 198.
- SWE-bench, 2023. “SWE-bench: Can Language Models Resolve Real-World
GitHub Issues?” by Carlos Jimenez, John Yang, Alexander Wettig, Shunyu Yao,
Kexin Pei, Ofir Press and Karthik Narasimhan at Princeton, 10 October 2023.
- 2,294 tasks built from real merged pull requests in 12 popular Python
repositories. The model gets the repository at the parent commit and the
issue text. It must produce a patch. The patch is applied and the project’s
own tests are run.
- Scored as resolve rate: the percentage of tasks where the hidden tests
that the real pull request made pass, do pass, and nothing that passed
before breaks. This is a much stronger signal than string matching.
- In the original paper the best model tested, Claude 2, resolved 1.96 per
cent. By 2026 the reported figures on the Verified subset were far above
70 per cent. That is a genuine capability jump and also a heavily optimized
target.
- SWE-bench Verified, 13 August 2024, from OpenAI. 93 experienced Python
developers reviewed 1,699 randomly drawn original tasks. Tasks were dropped
if the issue text was underspecified or the tests were unfair. 500 were
kept. OpenAI reported that 68.3 per cent of sampled original tasks were
filtered out for such problems.
- That is an important admission in both directions. The original benchmark
understated model ability. And a benchmark curated by one lab is now the
number everyone quotes.
- Other official variants: SWE-bench Lite (300 tasks, cheaper), SWE-bench
Multimodal (517 tasks with visual elements), SWE-bench Multilingual (300
tasks from 42 repositories in 9 languages), and a Bash-only view of the 500
Verified tasks.
- ARC-AGI. Created by Francois Chollet and introduced in his 2019 paper
“On the Measure of Intelligence”. The tasks are small coloured grids. You
see two or three input-output examples and must produce the output for a
new input. No text. No knowledge required.
- The design goal is to measure skill acquisition on unseen problems rather
than stored knowledge. ARC-AGI-2, launched in 2025, has 120 public
evaluation tasks and 120 held-back semi-private tasks, and every task was
solved by at least two humans in under two attempts, calibrated on over 400
members of the public. ARC-AGI-3 followed.
- The ARC Prize leaderboard shows cost per task alongside score and by
default excludes systems costing more than 10,000 dollars for a run. That
is unusual and honest, and more benchmarks should copy it.
- HellaSwag, 2019. Rowan Zellers, Ari Holtzman, Yonatan Bisk, Ali Farhadi
and Yejin Choi, 19 May 2019. Pick the sensible continuation of a short
description from four options. About 10,000 items in the reported split.
- The wrong options were produced by Adversarial Filtering: generate
candidates by machine, keep the ones a discriminator model finds hard.
Humans scored above 95 per cent; the best models of 2019 under 48 per cent.
Today it is saturated and is mostly a sanity check on base models.
- BIG-bench, 2022. “Beyond the Imitation Game”, posted 9 June 2022, with
over 450 authors from over 132 institutions and 204 tasks. Deliberately
weird, broad and long-tailed.
- Every BIG-bench task file contains a canary string, a fixed
random-looking identifier the authors ask people never to remove, so that
anyone can test whether a model has seen the benchmark. That is a genuinely
good idea, and section 50.5 explains what it can and cannot prove.
- BIG-Bench Hard, 2022, is a 23-task subset where models at the time did
worse than the average human rater. It is what people actually run, usually
as “BBH”.
- IFEval, 2023. Jeffrey Zhou and colleagues at Google, 14 November 2023.
About 500 prompts carrying 25 kinds of machine-checkable instruction, such
as “write more than 400 words” or “mention the keyword AI at least 3
times” or “reply in JSON” or “no capital letters”.
- Its whole point is that no judgement is needed: a short Python function
checks compliance. It measures obedience to format, not quality of content.
- MT-Bench, 2023. From “Judging LLM-as-a-Judge with MT-Bench and Chatbot
Arena” by Lianmin Zheng, Wei-Lin Chiang, Ying Sheng and colleagues,
9 June 2023. 80 multi-turn questions in 8 categories, two turns each.
- A strong model grades the answers on a 1 to 10 scale. The paper reported
over 80 per cent agreement between the model judge and human raters, which
is about the level humans agree with each other.
- The same paper named the three biases of a model judge that you must
remember: position bias (it prefers whichever answer came first),
verbosity bias (it prefers the longer answer) and self-enhancement
bias (it prefers text in its own style).
- AIME. Not built for AI at all. The American Invitational Mathematics
Examination is a competition run by the Mathematical Association of
America: 15 questions, 3 hours, every answer an integer from 000 to 999,
held twice a year.
- That integer answer format is exactly why AI labs adopted it: marking is
trivial and unambiguous. Its weaknesses are that 15 items means one
question is 6.7 points, and that each year’s paper is public within hours
and in training data within months.
- Humanity’s Last Exam, launched in 2025 by the Center for AI Safety and
Scale AI, published in the journal Nature on 28 January 2026. 2,500
questions across more than 100 subjects, written by close to a thousand
expert contributors from over 500 institutions in 50 countries.
- It was built precisely because MMLU had saturated. A private held-back
portion is kept to detect overfitting, and a rolling variant was released
on 8 October 2025 to keep adding fresh items.
- FrontierMath, from Epoch AI, is a set of unpublished research-level
mathematics problems in difficulty tiers, plus a separate collection of
genuinely unsolved open problems. As of 31 July 2026 that open set held 50
unsolved research problems, of which AI systems had contributed solutions
to three.
- Terminal-Bench, a Stanford collaboration, gives an agent a real
terminal and real tasks in software engineering, machine learning, security
and data science, scored by whether the task actually completed. Version
1.0 had 80 tasks, version 2.0 had 89, and later versions followed.
TECHNICAL50.2.5 the engineer’s version#
- The comparison table, split into four-column pieces so it prints. All item
counts verified August 2026 against the dataset cards and papers.
| Benchmark |
Year |
Items |
| MMLU |
2020 |
~14,000 test |
| MMLU-Pro |
2024 |
~12,000 test |
| GSM8K |
2021 |
1,319 test |
| MATH |
2021 |
5,000 test |
| HumanEval |
2021 |
164 |
| MBPP |
2021 |
974 (427 clean) |
| GPQA |
2023 |
448 |
| GPQA Diamond |
2023 |
198 |
| SWE-bench |
2023 |
2,294 |
| SWE-bench Verified |
2024 |
500 |
| ARC-AGI-2 |
2025 |
120 + 120 held back |
| HellaSwag |
2019 |
~10,000 val |
| BIG-bench |
2022 |
204 tasks |
| BIG-Bench Hard |
2022 |
23 tasks |
| IFEval |
2023 |
~500 prompts |
| MT-Bench |
2023 |
80 questions |
| AIME (one paper) |
yearly |
15 |
| Humanity’s Last Exam |
2025 |
2,500 |
- Scoring rules and chance floors.
| Benchmark |
Metric |
Chance floor |
| MMLU |
Accuracy |
25 per cent |
| MMLU-Pro |
Accuracy |
10 per cent |
| GSM8K |
Exact match number |
~0 |
| MATH |
Expression equivalence |
~0 |
| HumanEval |
pass@k on unit tests |
~0 |
| GPQA Diamond |
Accuracy |
25 per cent |
| SWE-bench |
Resolve rate |
0 |
| ARC-AGI-2 |
Exact grid match |
~0 |
| HellaSwag |
Accuracy |
25 per cent |
| IFEval |
Constraint pass rate |
varies |
| MT-Bench |
Model-judge 1 to 10 |
n/a |
- The gap between what each measures and what it is claimed to measure. This
column is the one people skip.
| Benchmark |
Claimed as |
Actually measures |
| MMLU |
General knowledge |
4-way recall, one shot |
| GSM8K |
Reasoning |
Short arithmetic chains |
| HumanEval |
Coding ability |
Tiny isolated functions |
| GPQA Diamond |
Science ability |
Hard 4-way recall |
| SWE-bench |
Autonomous engineer |
Patch passes given tests |
| ARC-AGI |
General intelligence |
Grid puzzle induction |
| HellaSwag |
Common sense |
Adversarially filtered picks |
| MT-Bench |
Chat quality |
One model’s taste |
| IFEval |
Instruction following |
Checkable format rules |
- Established fact: the item counts, dates, authors and scoring rules above.
These are checkable in the papers and dataset cards, and they do not move.
- Active research: whether any of these benchmarks predicts real-world task
performance. The honest state of the field is that correlation exists but is
weak and task-dependent, and there is no accepted transfer function from a
benchmark score to a deployment outcome.
- Marketing claim: any sentence of the form “scores X on benchmark Y,
therefore it is a PhD-level scientist” or “therefore it can replace a junior
engineer”. The benchmark supports the first clause only.
- Tooling.
lm-eval --model hf --model_args pretrained=... --tasks mmlu --num_fewshot 5 runs MMLU under the EleutherAI harness. The SWE-bench
project ships its own Docker-based runner, because reproducing per-repository
environments is most of the difficulty. bigcode-evaluation-harness is the
common runner for HumanEval and MBPP and executes generated code in a
sandbox, which you should never skip.
- Note on the honest version of “SWE-bench measures agentic ability”. The
honest version: SWE-bench measures the combined ability of a model plus a
scaffold plus a retrieval strategy plus a test-running loop. Two entries
using the same model and different scaffolds can differ by more than 20
points. Section 50.4 returns to this.
WORDS50.2.6 remember these#
- Saturation — everyone scores near the top so the test stops sorting —
the point where score variance is dominated by noise and label errors rather
than capability differences.
- Diamond subset — the hard, clean slice of GPQA — the 198 questions where
expert validators agreed and most non-experts failed.
- Resolve rate — how often the fix actually worked — the fraction of SWE-bench
instances where the fail-to-pass tests pass and pass-to-pass tests still do.
- Adversarial filtering — keeping only wrong answers that fool machines — an
iterative data-collection loop where a discriminator selects distractors.
- Canary string — a marker planted so leaks can be spotted — a fixed unique
identifier embedded in benchmark files to detect web-scrape contamination.
- Chance floor — the score you get by guessing — the expected accuracy of a
uniform random policy, 1/n for n options.
- Held-back set — questions kept secret — a private evaluation split withheld
from publication to measure overfitting to the public split.
- Scaffold — the harness of code around a model in agent tasks — the
controller implementing retrieval, tool calls, retries and stopping rules.
50.3 Actually running an evaluation#
PLAIN50.3.1 in simple words#
- Suppose you have the questions and the answers. How do you run the test?
- First you must decide what text to actually send.
- You could send only the question. That is called zero-shot.
- You could send a few solved examples first, then the question. That is
called few-shot, and five examples is called five-shot.
- Few-shot examples do two jobs. They remind the model of the subject, and
more importantly they show it the exact answer format you want.
- Most of the benefit is the format, not the reminder.
- Next you decide whether to let the model think out loud before answering.
That is chain-of-thought.
- On maths, letting it think out loud changes the score enormously. Not by a
little. By tens of points.
- Next you decide how random the model is allowed to be. That is the
temperature setting.
- Zero means always take the most likely next word. Higher means sometimes
take a less likely one.
- If temperature is above zero, the same model on the same question can give
different answers on different days.
- So the same evaluation run twice gives two different scores.
- That is why careful teams run the whole thing several times and report the
average, and ideally the spread.
- Then you must decide how to mark the reply, which is the hardest part.
- For a single number, compare numbers. For a letter, find the letter. For an
essay, you need a human or another model, and both are unreliable.
PLAIN50.3.2 a picture in your head#
- Think of a school exam being marked by three different people.
- The first marker demands the answer in the box, in pen, and nothing else.
Anything in the margin is ignored.
- The second marker reads the whole page and looks for the answer wherever it
is. More forgiving, but sometimes picks up a crossed-out number.
- The third marker is an experienced teacher who reads the reasoning and
awards a judgement out of ten.
- The first marker is exact match. The second is regex extraction. The third
is a model judge.
- Now imagine the exam paper itself. One version says “Answer the question.”
Another says “Answer the question. Show your working. Put your final answer
after the words FINAL ANSWER.”
- The second paper produces higher marks from the same pupils, because it told
them the format the marker wants.
- That is the whole of prompt template design, in one sentence.
Where this comparison breaks: a pupil who knows the answer but writes it in the
margin still knows the answer, and a good teacher notices. A benchmark harness
does not notice anything. It runs a regular expression. If the format is wrong
the mark is zero, and the report will say the model does not know maths.
PLAIN50.3.3 a worked example#
- Let us compute pass@k properly, because it is the metric people most often
misread.
- pass@k is not “the score when you take k tries”. It is an estimate of the
probability that at least one of k independently drawn samples is correct.
- The naive way is to draw k samples and see if any pass. That is a very noisy
estimate for large k.
- The Codex paper of July 2021 uses a better estimator. Draw n samples, count
c that pass, and compute:
pass@k = 1 - C(n - c, k) / C(n, k)
where C(a, b) is "a choose b", the number of ways
to pick b items from a, and n >= k.
- In words: one minus the chance that all k of your picks come from the
failing pile.
- Worked example. Take one problem. Draw n = 10 samples. Suppose c = 2 pass.
- pass@1 = 1 - C(8,1)/C(10,1) = 1 - 8/10 = 0.20.
- pass@5 = 1 - C(8,5)/C(10,5) = 1 - 56/252 = 1 - 0.2222 = 0.7778.
- pass@10 = 1 - C(8,10)/C(10,10). C(8,10) is 0 because you cannot pick 10
things from 8. So pass@10 = 1 - 0 = 1.00.
- Read those three numbers. One try: 20 per cent. Five tries: 78 per cent.
Ten tries: 100 per cent.
- The model did not get better. You bought more lottery tickets.
- This is why pass@1 and pass@100 are not comparable, and why a headline that
does not say which k it used is not a result.
- Now the temperature effect, with real published behaviour. High temperature
lowers pass@1 and raises pass@100, because diversity costs you on a single
draw and pays on many draws.
- So a lab reporting pass@1 will tune temperature low, and a lab reporting
pass@100 will tune it high, and both are being reasonable.
PLAIN50.3.4 what is really happening inside#
- Take one MMLU item and watch it through the whole pipeline.
- Zero-shot generative version. The harness builds this text:
The following is a multiple choice question about
high school biology.
Which organelle produces most of a cell's ATP?
A. Ribosome
B. Mitochondrion
C. Golgi apparatus
D. Lysosome
Answer:
- The model generates text. Suppose it writes " B. Mitochondrion".
- The extractor strips whitespace, takes the first letter that is A, B, C or
D, and compares it to the stored key.
- Now the log-likelihood version. The harness does not let the model write
anything. Instead it asks the model, four times, “how likely is this exact
continuation?”
- It scores " A", " B", " C" and " D" as continuations, and takes the highest.
- Same item, same model, two protocols, and sometimes two different answers.
- A model that would have written a paragraph of hedging before saying B still
assigns the highest single-token probability to " B", and scores right under
the second protocol and possibly wrong under the first.
- This is not a subtle effect. It is a common cause of a several-point gap
between two published MMLU numbers.
- Now the few-shot version. The harness prepends five solved questions from
the 285-item development split before the real one.
- The model now sees five examples of the pattern “question, options, Answer:
B” and copies the pattern. Format failures collapse.
- Now chain-of-thought. The template adds “Think step by step, then give your
final answer as a single letter after the words FINAL ANSWER:”.
- The model now emits a paragraph of reasoning and then the letter. The
extractor looks after “FINAL ANSWER:” instead of at the start.
- On knowledge questions this changes little. On maths it changes everything,
because the model can hold intermediate results in the text it has already
written rather than trying to do the whole calculation in one forward pass.
- That last sentence is the honest mechanism. Chain-of-thought is not the
model “thinking harder”. It is the model using its own output as working
memory, one token at a time.
TECHNICAL50.3.5 the engineer’s version#
- Prompt sensitivity is measurable and large. The MMLU-Pro authors evaluated
24 prompt styles and found score variation of about 4 to 5 percentage points
on original MMLU and about 2 points on MMLU-Pro. That is the size of the gap
labs argue over in announcements.
- Few-shot conventions by benchmark, as used in most reported numbers. These
are conventions, not standards, and they drift.
| Benchmark |
Common shots |
Common mode |
| MMLU |
5-shot |
Log-likelihood or letter |
| MMLU-Pro |
5-shot CoT |
Generative |
| GSM8K |
8-shot CoT or 0-shot |
Generative |
| MATH |
4-shot CoT |
Generative |
| HumanEval |
0-shot |
Generative, pass@k |
| GPQA Diamond |
0-shot CoT |
Generative |
| HellaSwag |
10-shot |
Log-likelihood |
| BBH |
3-shot CoT |
Generative |
- Chain-of-thought prompting comes from “Chain-of-Thought Prompting Elicits
Reasoning in Large Language Models” by Jason Wei and colleagues at Google,
posted January 2022. On GSM8K with a 540-billion-parameter model it moved
accuracy from roughly 18 per cent to roughly 57 per cent.
- “Large Language Models are Zero-Shot Reasoners” by Takeshi Kojima and
colleagues, May 2022, showed that the single sentence “Let’s think step by
step” produced much of the same effect with no examples at all.
- Established fact: chain-of-thought raises measured accuracy on multi-step
arithmetic and symbolic tasks by a large margin. Active research: whether
the written chain reflects the computation that actually determined the
answer. There is published evidence that models sometimes produce a correct
answer with an unfaithful chain, and that they can be steered to a wrong
answer while the chain still reads plausibly.
- Grading methods, in increasing order of flexibility and decreasing order of
reliability.
| Method |
How it works |
Main failure |
| Exact match |
String equality |
Punishes correct formats |
| Normalized match |
Lowercase, strip, unify |
Still brittle on units |
| Regex extraction |
Pull last number or tag |
Grabs the wrong number |
| Symbolic equivalence |
Parse maths, compare |
Parser gaps, timeouts |
| Unit tests |
Execute the code |
Weak or overfit tests |
| Model as judge |
Ask a model to grade |
Position, length, style bias |
- For MATH-style answers, plain string comparison is hopeless:
1/2, 0.5
and \frac{1}{2} are the same answer. Serious harnesses parse into a
computer algebra system and test symbolic equality, with a timeout.
- Model-as-judge biases are documented in the MT-Bench paper of June 2023:
position bias, verbosity bias, self-enhancement bias, and limited reasoning
on maths. Mitigations in common use are swapping the order of the two
answers and averaging, calibrating with a reference answer, and using
chain-of-thought in the judge prompt.
- Sampling and reproducibility. With temperature 0 and greedy decoding, output
is nominally deterministic. In practice it often is not.
- The honest version: floating-point reduction order on a GPU depends on how
work is split across threads, that split can depend on the batch size, and
batch composition on a shared serving endpoint depends on who else is
sending requests. Mixture-of-experts routing can also depend on the batch.
So the same prompt at temperature 0 can produce different tokens.
- Therefore report mean and standard deviation over repeated runs. Common
practice for small benchmarks such as AIME with 15 items is to run 16, 32 or
64 times and average, sometimes written “avg@32” or “mean@64”.
- Distinguish that from majority voting, sometimes written “cons@64” or
self-consistency, where you sample 64 answers and take the most common one.
That is a different, stronger system, and it costs 64 times as much.
- Distinguish both from best-of-n, where you sample n answers and pick the
best using a verifier or the reference answer. If the reference answer is
used to pick, the number is close to meaningless as a measure of what a
user would get.
- Note the 2026 wrinkle: some providers have begun removing sampling controls
entirely. Anthropic’s documentation as of August 2026 lists
temperature,
top_p and top_k as deprecated for its newest models, returning an error
if set to a non-default value. If you cannot set temperature, you cannot
match another lab’s sampling configuration.
WORDS50.3.6 remember these#
- Zero-shot — no examples given — the item is presented with instructions only,
no in-context exemplars.
- Few-shot — a few solved examples first — k in-context exemplars prepended,
usually drawn from a fixed development split.
- Chain-of-thought — letting it show its working — eliciting intermediate
reasoning tokens before the final answer, which act as external working
memory.
- Temperature — how random the wording is — the divisor applied to logits
before the softmax; 0 gives greedy decoding.
- pass@k — chance that one of k tries works — the unbiased estimator
1 - C(n-c,k)/C(n,k) over n samples with c correct.
- Self-consistency — sample many, take the most common answer — majority
voting over sampled chains, reported as cons@n.
- Best-of-n — sample many, keep the best — reranking n samples with a verifier
or, improperly, with the reference answer.
- LLM-as-judge — a model marks the answers — an evaluator model scoring or
ranking outputs, subject to position, verbosity and self-enhancement bias.
50.4 Why two labs report different numbers#
PLAIN50.4.1 in simple words#
- You will often see the same model, the same benchmark, and two different
numbers, from two respectable sources.
- The first thing to accept is that this is normal.
- The second thing to accept is that it is usually not lying.
- There are about eight ordinary causes, and you can usually work out which
one applies.
- Cause one: different wording of the prompt.
- Cause two: a different number of worked examples given first.
- Cause three: a different way of pulling the answer out of the reply.
- Cause four: a different slice of the items. Someone ran 500 of the 2,294.
- Cause five: different randomness settings, or one run against an average of
many runs.
- Cause six: one lab used a system prompt telling the model how to behave and
the other did not.
- Cause seven: one setup let the model use a calculator, a code runner or a
web search, and the other did not.
- Cause eight: a plain bug. These are common and usually found later.
- Only after all eight are ruled out is it worth wondering about anything
worse.
- The practical response is one question: which harness did you use, and with
what settings?
- If the answer is “our internal one, details not published”, the number is
not comparable to anybody else’s number. It may still be true.
PLAIN50.4.2 a picture in your head#
- Imagine two labs measuring the fuel economy of the same car.
- One drives a flat motorway at a steady 90 kilometres per hour with the air
conditioning off and the tyres at maximum pressure.
- The other drives a hilly city route in traffic with two passengers.
- Both publish a figure in litres per hundred kilometres. The figures differ
by 40 per cent. Neither lab lied.
- This is exactly why car fuel economy eventually got a legally defined test
cycle, with a written specification, run by accredited labs.
- AI benchmarks have no such thing. There is no accredited lab, no test cycle
written into law, and no penalty for using a favourable route.
- The nearest equivalent is a shared open harness that everybody agrees to run
with the same settings, and that is a voluntary convention.
Where this comparison breaks: fuel economy has a physical ground truth you can
approach by measuring more carefully. There is no single true MMLU score for a
model waiting to be discovered. The number genuinely depends on the protocol,
so “measuring more carefully” does not converge on one value.
PLAIN50.4.3 a worked example#
- Here is a concrete, realistic divergence, with the arithmetic.
- Lab A reports 88.4 per cent on a knowledge benchmark. Lab B reports 84.1 per
cent for the same model. The gap is 4.3 points.
- Investigation finds four contributions.
| Difference |
Effect on score |
| 5-shot vs 0-shot |
+1.8 points |
| Letter-only vs full text |
+1.1 points |
| Chain-of-thought allowed |
+0.9 points |
| Best of 3 runs vs mean |
+0.5 points |
| Total explained |
+4.3 points |
- Every one of those four choices is defensible on its own.
- Together they fully account for the gap without anybody doing anything
improper.
- Notice the last row. Reporting the best of three runs rather than the mean
is the one that should make you uncomfortable, because it is a choice made
after seeing the results.
- That is the boundary between a defensible protocol difference and a
presentational thumb on the scale.
PLAIN50.4.4 what is really happening inside#
- The causes, with how you detect each one. This is the table to keep.
| Cause |
How to detect it |
| Prompt template differs |
Ask for the exact template |
| Few-shot count differs |
Look for “5-shot” in a footnote |
| Extraction differs |
Ask what regex or parser |
| Subset differs |
Compare item counts |
| Sampling differs |
Ask temperature and top-p |
| System prompt used |
Ask if one was present |
| Tools available |
Ask about calculator, code, web |
| Best-of-n reporting |
Ask how many runs, which shown |
| Plain bug |
Wait for reproduction attempts |
- On tool access, be specific, because it is the largest single effect and the
least often disclosed.
- A model that may run Python and check its arithmetic will beat the same
model without that on any maths benchmark, often by a wide margin.
- A model that may search the web will beat the same model without it on any
knowledge benchmark, and on a “Google-proof” benchmark it should not help
much, which is itself a useful test of the benchmark’s design.
- On agentic benchmarks, the scaffold is most of the system. An entry on the
SWE-bench leaderboard is a model plus a controller: how files are found, how
many edit attempts are allowed, whether tests may be run and re-run, how the
loop decides to stop.
- Two teams using the identical model with different scaffolds have reported
resolve rates tens of points apart. The leaderboard entry is the pair, not
the model.
- That is why SWE-bench leaderboard entries are named after systems, not
models, and why a model announcement quoting a SWE-bench number should say
what scaffold produced it.
TECHNICAL50.4.5 the engineer’s version#
- Ask for the harness by name and version. In practice this means one of:
EleutherAI
lm-evaluation-harness (state the version and the task name,
because task definitions change between versions), Stanford HELM, the
bigcode-evaluation-harness for code, the official SWE-bench runner with
its Docker images, or a lab’s internal harness.
- Task definitions inside a harness are versioned and do change. The same task
name in two harness versions can differ in prompt, in normalization and in
which split is used. Pin the harness version in your own reports.
- The Hugging Face Open LLM Leaderboard is the clearest example of why this
matters. Its second version, launched in June 2024, replaced the original
task set with IFEval, BBH, MATH Level 5, GPQA, MuSR and MMLU-Pro, run
through the EleutherAI harness with fixed settings.
- The reason given was that the original tasks had saturated and were
contaminated. The consequence was that scores from before and after are not
comparable at all, even for the same model.
- That is the honest version of “the leaderboard changed”: every historical
number became a different measurement, and the ranking of models moved.
- Normalization choices worth naming explicitly, because they each move
multiple-choice scores by measurable amounts: raw log probability, log
probability divided by token count, log probability divided by character
count, and probability normalized against the model’s unconditional
probability of the option text.
- A concrete reproducibility checklist to publish with any number you report:
model id + exact snapshot
harness name + version + task name
n-shot, and which split the shots came from
system prompt (verbatim, or "none")
temperature, top_p, max tokens, stop sequences
tools available (none / code / search / retrieval)
number of runs, and mean and standard deviation
answer extraction rule
date the run was executed
- If a published number lacks four or more of those nine lines, treat it as an
indication rather than a measurement.
- Established fact: protocol differences of the sizes described here are
documented and reproducible. Marketing claim: that any single reported
number is “the” score for a model.
WORDS50.4.6 remember these#
- Harness — the program that runs the benchmark — the evaluation framework;
name and version both matter because task definitions change.
- Subset — a slice of the items — a filtered evaluation split such as Lite,
Verified or Diamond, not comparable to the full set.
- System prompt — standing instructions given before the conversation — a
privileged message setting persona, format and constraints, which materially
changes benchmark scores.
- Scaffold — the code around the model in an agent task — the controller loop
for retrieval, tool invocation, retries and termination.
- Tool access — whether the model may use a calculator or search — the set of
external functions the model may call during evaluation.
- Reproduction — someone else getting your number — an independent run under a
published protocol, the only real check on a self-reported score.
- Task version — which definition of the test was used — the versioned task
implementation inside a harness, including prompt and normalization.
50.5 Contamination#
PLAIN50.5.1 in simple words#
- Contamination means the test questions were in the training data.
- If the model has already seen the question and the answer, getting it right
proves nothing about ability.
- It might be memory. It might be ability. From the score alone you cannot
tell which.
- This happens almost by accident, not by plotting.
- Benchmarks are published so that people can use them. Published means on the
web. On the web means scraped. Scraped means in the training data.
- GSM8K, MMLU, HumanEval and the rest are all on public code and dataset
hosting sites, quoted in thousands of blog posts, pasted into forum
questions, translated, reformatted and discussed.
- So a model trained on a large web crawl has almost certainly seen many of
them, in some form, unless someone worked hard to remove them.
- That removal work is called decontamination, and every serious lab now does
some and describes it.
- But decontamination is filtering by text matching, and text matching misses
anything reworded.
- The effect on scores is upward, and it is uneven. It inflates old
benchmarks more than new ones, and easy items more than hard ones.
- It is very hard to prove for any particular model, because you usually
cannot see the training data.
- So the debate is conducted with indirect evidence, and reasonable people
disagree about what that evidence shows.
- The honest position: assume some contamination is present in every public
benchmark number you read, of unknown size, and prefer evidence from tests
the model cannot have seen.
PLAIN50.5.2 a picture in your head#
- Imagine a school where the past twenty years of exam papers, with the
official answers, are freely available online.
- A pupil who has read all of them will do better on this year’s paper if this
year’s paper reuses old questions.
- Nobody stole anything. The papers were published on purpose.
- Now the exam board tries to fix it. They remove any question that appears
word for word in an old paper.
- But a question that was reworded, or translated into French and back, or
changed from apples to oranges, slips through.
- And the pupil who read every paper does better on those too, because the
structure is familiar even when the words changed.
- Now the awkward part. The pupil who read all the old papers is also genuinely
better prepared. Some of what they gained is real learning.
- Separating the memory from the learning, from the mark alone, is impossible.
- That is exactly the position everyone is in with model benchmarks.
Where this comparison breaks: a pupil remembers roughly what they revised and
can be asked. A model cannot reliably report what was in its training data, and
the people who built it often cannot enumerate it either, because the corpus is
billions of documents assembled by pipelines from many sources.
PLAIN50.5.3 a worked example#
- The clearest public experiment on this is GSM1k.
- In May 2024 a team at Scale AI, led by Hugh Zhang, published “A Careful
Examination of Large Language Model Performance on Grade School Arithmetic”.
- They commissioned a brand-new set of grade-school maths problems, written
from scratch, never published, deliberately matched to GSM8K in style,
number of solution steps, answer size and human solve rate.
- Then they ran many models on both, and compared.
- If a model’s ability were real, the two scores should be about equal, since
the sets are matched by construction.
- What they found: accuracy drops of up to about 8 percentage points on the
new set, with several model families showing systematic overfitting across
almost all their sizes.
- They also found a positive relationship, Spearman r squared of about 0.36,
between how likely a model was to generate GSM8K examples verbatim and how
large its drop was.
- That second finding is the important one. It links the drop to memorization
rather than to some accident of the new problem set.
- And the honest counterweight, which the same paper reports: the strongest
frontier models showed minimal signs of overfitting, and every model
generalized to some extent to the new problems.
- So the correct summary is not “the benchmarks are fake”. It is “some models
are inflated by several points, the size varies, and you cannot tell from
the leaderboard which”.
PLAIN50.5.4 what is really happening inside#
- Five detection methods, what each can show, and where each fails.
- N-gram overlap. Take every run of n consecutive words from every
benchmark item, and search the training corpus for the same run.
- The GPT-3 paper of 2020 used 13-gram overlap for its decontamination checks.
Other projects use 8-gram, or a match on several random 50-character
substrings.
- What it shows: verbatim copying. What it misses: anything reworded,
translated, reformatted, or discussed rather than quoted.
- Also it requires access to the training corpus, which outsiders do not have.
- Canary strings. The BIG-bench authors put a fixed unique identifier in
every task file and asked everybody never to remove it.
- If a model can reproduce that identifier, it saw the file. That is close to
proof of exposure.
- What it misses: everything. A model can be trained on a copy of the data
with the canary stripped, on a reworded version, or on a discussion of the
items. Absence of the canary proves nothing at all.
- Perplexity comparison. Perplexity is a measure of how surprised the
model is by a piece of text. Lower means more familiar.
- Compare the model’s perplexity on benchmark items against its perplexity on
freshly written text of the same kind. If the benchmark is much less
surprising, that is a signal.
- What it misses: benchmark text is often cleaner and more formulaic than
fresh text anyway, so some gap is expected. Setting the threshold is a
judgement call, and this requires log-probability access that many
commercial endpoints no longer expose.
- Old versus new items. Build a benchmark that keeps adding fresh items
after model release dates, and compare a model’s score on items published
before its training cutoff against items published after.
- A large gap is strong evidence. This is the design principle behind
continuously refreshed benchmarks, and behind coding benchmarks that only
score problems released after a stated date.
- What it misses: newer items may simply be harder, or drawn from a
different distribution, so you need the sets to be matched carefully, which
is what GSM1k did.
- The completion trick. Give the model the first part of a benchmark item
and see whether it continues with the rest, word for word, including the
incidental details it could not guess.
- A variant gives the model the dataset name, the split and an index, and asks
it to produce that item. Another shows the item with the options in a
scrambled order and checks whether the model still reproduces the original
ordering.
- What it shows: near-verbatim memory of the item. What it misses: a model
that learned the answer without being able to reproduce the wording, which
is the common case after instruction tuning.
- Notice the pattern. Every method can produce a positive finding that is hard
to dismiss, and no method can produce a negative finding that means
anything.
- That asymmetry is why this argument never ends.
TECHNICAL50.5.5 the engineer’s version#
- The methods and their properties, side by side.
| Method |
Detects |
Needs |
| N-gram overlap |
Verbatim copies |
Corpus access |
| Canary string |
Direct file exposure |
Model generation |
| Perplexity gap |
Familiarity |
Log probabilities |
| Old vs new split |
Practical inflation |
A dated benchmark |
| Completion trick |
Item memorization |
Only API access |
| Membership inference |
Probable inclusion |
Token probabilities |
- Real disputes, described without alleging deliberate wrongdoing, because in
none of these cases was deliberate cheating established.
- In 2023 the paper “Rethinking Benchmark and Contamination for Language
Models with Rephrased Samples” showed that a modestly sized model trained on
rephrased versions of benchmark test sets could reach very high scores on
those benchmarks while passing standard n-gram decontamination checks. The
point was methodological: the standard filter does not work.
- Also in 2023, a deliberately satirical paper by Rylan Schaeffer titled
“Pretraining on the Test Set Is All You Need” trained a tiny model directly
on benchmark test sets and reported near-perfect scores, to make the same
point in the bluntest possible way.
- Several strong small models released between 2023 and 2025 attracted public
questions about whether their synthetic training data, which was generated
by larger models, indirectly reproduced benchmark items. The teams involved
published decontamination procedures in response. The disputes were about
method and evidence, not about proven intent.
- In late 2024 and early 2025 there was a public discussion about
FrontierMath, an Epoch AI benchmark, after it emerged that OpenAI had funded
its creation and had access to problems. Epoch AI published clarifications
about what access existed and what hold-out arrangements were in place.
- The general lesson from that episode is structural, not personal: if a lab
funds or co-designs a benchmark it is later measured on, the benchmark needs
a documented held-out portion and a stated access policy, or the number
cannot carry weight regardless of anyone’s good faith.
- Which is why held-out sets now exist as standard practice: ARC-AGI keeps a
semi-private evaluation set, Humanity’s Last Exam keeps a private portion,
and SWE-bench-style benchmarks increasingly add tasks dated after model
releases.
- Typical decontamination procedures now described in model cards and
technical reports: exact-substring matching against known benchmark items,
n-gram overlap filters at 8 to 13 grams, removal of documents containing
canary strings, embedding-similarity screening for near-duplicates, and
post-hoc measurement of the train-test gap.
- Established fact: benchmark items appear in web crawls, and models can be
induced to reproduce some of them verbatim. Established fact: matched fresh
benchmarks show measurable score drops for some model families.
- Active research: how to measure contamination without corpus access, how to
correct scores for it, and how to build benchmarks that resist it by
construction. There is no accepted standard method.
- Marketing claim: “our model is decontaminated”. Decontamination is a
process with a coverage rate, not a state. Ask what filter, at what n-gram
length, against which benchmark list, and what the measured residual was.
- Expert disagreement, stated plainly. One camp holds that contamination is
now the dominant explanation for headline benchmark gains on older tests,
and that only dated, held-out or private evaluations should be believed.
The other camp holds that frontier models demonstrably solve novel problems
that cannot be in any corpus, so contamination inflates absolute numbers
but rarely reverses rankings. Both camps agree that public numbers on
pre-2023 benchmarks should be discounted.
WORDS50.5.6 remember these#
- Contamination — the test was in the training data — overlap between
evaluation items and the pretraining or post-training corpus.
- Decontamination — trying to remove it — filtering training documents that
match benchmark items by substring, n-gram or embedding similarity.
- N-gram — a run of n consecutive words — the unit of overlap matching, with
8-gram and 13-gram both in common use.
- Canary string — a planted marker — a unique identifier embedded in benchmark
files, whose reproduction by a model evidences exposure.
- Perplexity — how surprised the model is by text — the exponential of the
mean negative log likelihood per token.
- Held-out set — questions nobody publishes — a private split retained by the
benchmark authors to measure overfitting to the public split.
- Overfitting to a benchmark — being good at the test, not the skill — a gap
between performance on the benchmark and on matched unseen items.
- Membership inference — guessing whether an example was trained on — a
statistical test using token likelihoods, such as scoring the lowest-k token
probabilities of a document.
50.6 The other reasons to be sceptical#
PLAIN50.6.1 in simple words#
- Contamination is not the only problem. There are six more, and they are all
ordinary and human.
- Saturation. When everyone scores 92, 93 and 94 per cent, the test has
stopped telling you anything.
- At that point the remaining errors are often wrong answer keys in the
benchmark itself, not model failures.
- Optimizing for the test. Once a number matters, people work on the
number. Some of that work improves the model. Some improves only the number.
- Self-reported results. Nearly every headline benchmark figure in a model
announcement was produced by the team that made the model.
- That is not automatically wrong. It is simply unverified until someone else
runs it.
- Cherry-picked comparisons. Showing your new model against a competitor’s
older version, or against the competitor’s cheap model rather than its best.
- Best-of-n reporting. Letting the model try many times and reporting the
best result, without saying so clearly.
- Different tools and scaffolding. Your model with a code runner against
their model without one, in the same bar chart.
- Charts that start above zero. A bar chart whose vertical axis begins at
70 makes a two-point difference look enormous.
- None of these require anybody to lie. Every one of them can be produced by
ordinary optimism and ordinary pressure to look good.
- Your defence is not cynicism. It is a checklist.
PLAIN50.6.2 a picture in your head#
- Think of school league tables.
- Once schools are ranked by exam results, the results become the goal.
- Schools start teaching to the exam. Then they enter weaker pupils for easier
qualifications. Then some stop entering certain pupils at all.
- The tables keep rising. Whether education improved is a separate question,
and a much harder one to answer.
- That is Goodhart’s law happening in public, over years, with real children.
- The measure was fine as a measure. It stopped being fine the moment it
became the target.
- And note what is not implied: the teachers were not villains. They responded
to the incentive they were given.
Where this comparison breaks: exam boards are regulated, publish syllabuses,
and can be audited. Nobody audits an AI lab’s benchmark run. Also, schools
cannot see next year’s paper. Anyone training a model can see every public
benchmark, in full, with answers, for free.
PLAIN50.6.3 a worked example#
- Goodhart’s law, stated properly, because it is usually misquoted.
- Charles Goodhart was a British economist at the Bank of England. In a 1975
paper on monetary policy he wrote, in substance: any observed statistical
regularity will tend to collapse once pressure is placed upon it for control
purposes.
- That is the original and it is narrower than the popular version. It is
about a regularity used as a control target.
- The popular short form is due to the anthropologist Marilyn Strathern, who
in 1997 wrote: when a measure becomes a target, it ceases to be a good
measure.
- A closely related statement is Campbell’s law, from the psychologist Donald
Campbell in 1979: the more a quantitative indicator is used for social
decision-making, the more it will be subject to corruption pressures and the
more it will distort the processes it monitors.
- Applied here: MMLU was an excellent measure in 2021, when nobody was
training against it.
- By 2024 every major lab knew the exact score they needed, the exact format,
and the exact subjects where points were cheapest.
- The measure did not become false. It became uninformative, which in practice
is worse, because it still looks like a measurement.
- Now a chart example, with numbers. Two models score 91.2 and 89.4 on some
benchmark.
Axis starting at zero: Axis starting at 88:
100 | 92 | ####
| #### #### | ####
50 | #### #### 90 | #### ####
| #### #### | #### ####
0 +------------- 88 +--------------
A=91.2 B=89.4 A=91.2 B=89.4
- Same two numbers. On the left, two nearly identical bars. On the right, one
bar looks roughly twice the other.
- The difference is 1.8 points, which on a 14,000-item benchmark is about 250
items, and which is within the range that a prompt template change can
produce on its own.
PLAIN50.6.4 what is really happening inside#
- The red flag checklist. Each line is a question to ask of any announcement
or chart.
- Does the chart’s vertical axis start at zero? If not, mentally redraw it.
- Are the compared models named with their exact versions and dates, or just
with product names?
- Is the competitor’s newest model shown, or a version from six months ago?
- Is the competitor’s flagship shown, or its cheaper tier?
- Who ran the competitor’s numbers? If the announcing lab did, were the
competitor’s own published numbers different?
- Does the footnote say pass@1, or does it say something else, or nothing?
- Does the footnote mention majority voting, consensus, best-of-n, or a
number of samples greater than one?
- Did both models have the same tools? Search, code execution, retrieval,
file access, a scaffold?
- Was there a system prompt, and was it the same for both?
- Is the benchmark one where the top scores are already above 90 per cent?
- Is the improvement larger than the known prompt-sensitivity range for that
benchmark, which is roughly 2 to 5 points on multiple-choice tests?
- Is the benchmark new, and was it built or funded by the announcing lab?
- Has any independent party reproduced the number, and how long ago?
- If you cannot answer eight of these fourteen from the announcement itself,
the announcement is a claim, not a result.
TECHNICAL50.6.5 the engineer’s version#
- Saturation has a precise consequence: as mean accuracy approaches the label
ceiling, the between-model variance shrinks toward the label-noise variance,
and rank ordering becomes unstable across runs.
- MMLU is known to contain a non-trivial number of incorrect or ambiguous
reference answers. Independent audits published between 2023 and 2024 put
the error rate in some subsets in the range of several per cent, with
virology and a few professional subjects worst. Estimates vary by auditor
and by criteria, so treat the exact figure as disputed.
- The practical implication: a reported 92 per cent on MMLU may be close to
the maximum achievable, and a difference between 92 and 93 may be noise
plus disagreement about wrong keys.
- This is exactly why MMLU-Pro, GPQA Diamond, Humanity’s Last Exam and
FrontierMath were built. New benchmarks appear when old ones saturate, and
the appearance of a new hard benchmark is itself evidence that the previous
one stopped working.
- A documented case of the “which version did you test” problem. On 5 April
2025 Meta released Llama 4 in two configurations, Scout and Maverick. A
variant identified as
Llama-4-Maverick-03-26-Experimental, described as
optimized for conversationality, scored very highly on the LMArena
leaderboard. It was not the model released to the public.
- On 8 April 2025 the arena operators stated that Meta’s interpretation of
their policy did not match what they expect from providers, that Meta should
have made it clearer that the entry was a customized model, and that they
would update their policies. Meta denied training on test sets.
- Report that as what it is: a disclosure and naming failure with a policy
response, not an established case of fraud. The transferable lesson is that
a leaderboard entry identifies a specific artifact, and the artifact you can
download may not be the artifact that was measured.
- Statistical hygiene almost nobody applies. For a benchmark of N items and an
observed accuracy p, the standard error is roughly sqrt(p(1-p)/N).
| Benchmark |
N |
Approx 1 SE at p=0.9 |
| HumanEval |
164 |
2.3 points |
| GPQA Diamond |
198 |
2.1 points |
| AIME (one paper) |
15 |
7.7 points |
| SWE-bench Verified |
500 |
1.3 points |
| MMLU |
14,000 |
0.25 points |
- Read that table carefully. On GPQA Diamond, a 2-point difference is about
one standard error, and one item is 0.5 points. On a single AIME paper,
getting one more question right is 6.7 points.
- So a headline of the form “scores 93.3 on AIME versus 86.7 for the
competitor” describes one question out of fifteen.
- That is before considering run-to-run sampling variance, which for reasoning
models on small maths sets is frequently larger than the between-model gap.
- Established fact: the standard-error arithmetic above. Marketing claim: any
ranking asserted from a gap smaller than one standard error.
WORDS50.6.6 remember these#
- Goodhart’s law — a measure used as a target stops measuring — an observed
regularity collapses when pressure is applied to it for control purposes.
- Campbell’s law — indicators used for decisions get corrupted — quantitative
social indicators distort the processes they are meant to monitor.
- Saturation — the test is too easy now — mean score near the ceiling, so
between-model variance falls below label-noise variance.
- Label noise — wrong answers in the answer key — the fraction of benchmark
items whose reference answer is incorrect or ambiguous.
- Self-reported — the maker measured it — a result produced by the model
provider under an unpublished or partially published protocol.
- Truncated axis — a chart that hides how small a gap is — a bar chart whose
value axis does not begin at zero.
- Standard error — how much the score would wobble by chance — approximately
sqrt(p(1-p)/N) for accuracy p over N independent items.
- Cherry-picking — showing the favourable comparison — selective choice of
baselines, versions, subsets or runs after seeing results.
50.7 The alternatives, and their own weaknesses#
PLAIN50.7.1 in simple words#
- If fixed quizzes are weak, what else is there? Five things, each with its
own flaw.
- Preference arenas. Real people type a question, get two anonymous
answers, and vote for the better one. Ratings are computed from the votes.
- Private held-out tests. The same idea as a benchmark, but the questions
are never published, so they cannot leak.
- Domain evaluations. A test built for one job: medical coding, legal
citation, chip design, customer support in Hindi.
- Agentic and end-to-end tests. Give the model a real task in a real
environment and check whether the task got done.
- Red-teaming. People deliberately attack the model to find failures that
no fixed test would catch.
- Every one of these is better than MMLU for something, and worse for
something else.
- The arena measures whether people like the answer, which is not the same as
whether the answer is correct.
- A friendlier, longer, better-formatted wrong answer beats a curt correct
one, quite often.
- Private tests cannot be independently checked, because they are private.
- Domain tests are only as good as the person who wrote them, and they do not
transfer to other domains.
- Agentic tests are expensive, slow, and measure the scaffold as much as the
model.
- Red-teaming finds problems but cannot tell you that no problems remain.
- There is no method without a weakness. The working answer is to use
several and to know what each one is blind to.
PLAIN50.7.2 a picture in your head#
- Think about how you would judge a restaurant.
- A hygiene inspection is a fixed checklist with a pass mark. Objective,
narrow, and it says nothing about whether the food is good.
- Customer star ratings are a preference arena. They capture something real
that no inspection captures, and they reward large portions, friendly staff
and good lighting as much as cooking.
- A critic’s blind visit is a private held-out evaluation. Harder to game,
impossible for you to verify.
- Asking a chef to cook one specific dish you care about is a domain
evaluation. Most informative for you, useless for anyone who wants
something else.
- Watching the kitchen run a full Saturday service is the agentic test.
Closest to reality, and by far the most expensive to arrange.
Where this comparison breaks: restaurant customers eat the food, so their
ratings are grounded in the actual product. Arena voters usually cannot verify
whether the answer they preferred was true. They are rating the presentation of
a claim, often on a topic where they are not the expert.
PLAIN50.7.3 a worked example#
- How a preference arena turns votes into a number.
- Each vote is a pairwise comparison: model A beat model B on this prompt.
- The rating system is the one from chess, invented by Arpad Elo, a
Hungarian-American physicist, and adopted by the United States Chess
Federation in 1960 and by FIDE in 1970.
- The core formula gives the expected score of A against B from the gap in
their ratings:
E(A) = 1 / (1 + 10 ^ ((R_B - R_A) / 400))
R = rating. A 400-point gap means the stronger side
is expected to win about 10 times out of 11.
- Work three cases. A gap of 10 points gives an expected win rate of 51.4 per
cent. A gap of 100 points gives 64.0 per cent. A gap of 200 points gives
76.0 per cent.
- Read the first one again. A 10-point difference on a leaderboard means the
higher model wins about 51 times in 100. That is close to a coin flip.
- Published confidence intervals on such leaderboards are frequently plus or
minus 3 to 10 points, so models separated by fewer than about 15 points are
usually statistically tied even though they occupy different rank numbers.
- As of August 2026, the largest public text arena listed a few hundred ranked
models, with top scores clustered within a few points of each other and
stated uncertainties of roughly plus or minus 3 to 10 points.
- A ranking that shows positions 1 through 8 spanning about 15 points is, in
statistical terms, showing one group of models, not eight ranks.
- The honest version: an arena rating is not a quality score. It is a fitted
parameter that predicts how often this model’s answer is preferred over
another model’s answer, by these voters, on these prompts, in this period.
Every clause in that sentence limits what the number can be used for.
PLAIN50.7.4 what is really happening inside#
- What an arena measures well: how a broad population of users, asking the
kinds of question they actually ask, reacts to an answer.
- That is genuinely valuable and no fixed benchmark captures it. It picks up
tone, refusal behaviour, formatting, and the ability to guess what the user
meant.
- What it measures badly, and the biases are documented, not theoretical.
- Length bias. Longer answers win more often, controlling for content.
Arena operators now publish a length-controlled ranking alongside the raw
one specifically because of this.
- Style bias. Headings, bullet lists and bold text raise win rates. The
same content flattened into prose wins less.
- Verification gap. A voter comparing two answers about a legal deadline
usually does not know the deadline. They vote on confidence and clarity.
- Prompt distribution. The votes come from whoever uses the site. That
population skews technical and English-speaking and asks a lot of
short questions, so the rating reflects that mixture and not yours.
- Provider self-selection. Providers choose when to enter a model and
which variant, and can test variants privately before public entry.
- Red-teaming, briefly, because it is a different shape of thing. It is not
scored on a scale. Its output is a list of found failures, and its value is
in what it finds, not in a number.
- The structural weakness of red-teaming is that it can only ever demonstrate
presence, never absence. Not finding a jailbreak is not evidence that none
exists.
TECHNICAL50.7.5 the engineer’s version#
- Modern arenas do not run a live Elo update loop, because Elo is
order-dependent: the same set of games in a different order gives different
ratings. They fit a Bradley-Terry model by maximum likelihood over the
whole vote history, then bootstrap for confidence intervals, then present
the result on an Elo-like scale.
- That is why you should read the interval, not the rank. Ranks on such boards
are usually published as a range, precisely because ties are common.
- Style-controlled ranking works by fitting the preference model with
additional covariates for response length and markdown features, so that
the reported strength coefficient is adjusted for those factors.
- Naming instability is real here too. The board widely known as LMSYS Chatbot
Arena became LMArena; as of August 2026 the domain
lmarena.ai redirects to
arena.ai. Cite what a leaderboard is, not just where it lives.
- Evaluation methods against what they are good and bad at.
| Method |
Good at |
Bad at |
| Fixed benchmark |
Cheap, comparable |
Leaks, saturates |
| Preference arena |
Real user taste |
Truth, length bias |
| Private held-out |
Leak resistance |
Nobody can check |
| Domain eval |
Your actual job |
Generalizing |
| Agentic end-to-end |
Realism |
Cost, scaffold effects |
| Red-team |
Finding failures |
Proving absence |
| Model-as-judge |
Scale, speed |
Style and self bias |
- Cost figures matter and are rarely mentioned. A full SWE-bench Verified run
with an agentic scaffold means 500 tasks, each with many model calls and
repository builds. Runs costing hundreds to thousands of dollars and taking
many hours are normal, which is exactly why the 300-item Lite subset exists.
- This is also why the ARC Prize leaderboard reports cost per task and by
default hides systems whose run cost exceeded 10,000 dollars. Any score can
be bought with enough sampling; a score with a cost attached cannot.
- Established fact: length and position biases in preference judging, and the
order dependence of online Elo. Active research: how to control for style
without controlling away real quality, and how to weight votes by voter
expertise. Marketing claim: “ranked number one” when the interval overlaps
five other entries.
WORDS50.7.6 remember these#
- Preference arena — people vote between two anonymous answers — a pairwise
human preference collection platform with a fitted rating model.
- Elo — a chess rating scale reused for models — a rating system where the
expected score is a logistic function of the rating difference over 400.
- Bradley-Terry — the proper way to fit ratings from all votes at once — a
maximum-likelihood pairwise comparison model, order independent.
- Confidence interval — how much the rating could be wrong — the bootstrapped
range around a fitted rating; overlapping intervals mean a tie.
- Length bias — longer answers win — a systematic preference for verbose
responses independent of content quality.
- Style control — adjusting for formatting and length — fitting the preference
model with covariates for length and markdown structure.
- Red-teaming — attacking your own model on purpose — adversarial testing to
discover failures; evidences presence, never absence.
- Held-out evaluation — a private test set — evaluation items never published,
used to detect overfitting to public benchmarks.
50.8 What “eval” means inside a company#
PLAIN50.8.1 in simple words#
- In public, “eval” means a famous benchmark with a leaderboard.
- Inside a company that builds a product on a model, it means something much
smaller and much more useful.
- It means a file of examples of the job the product actually does, with the
answer you want for each.
- Thirty to a hundred examples is normal. Not fourteen thousand.
- They are hand-picked, mostly from real cases that went wrong.
- They are private, because they contain real customer text and because they
are the company’s actual measuring stick.
- Every time anyone changes the prompt, the model, the retrieval setup or a
parameter, the file is run again.
- If the score drops, the change is rejected. That is the whole discipline.
- In other words, it is a regression test suite, exactly like the automated
tests you would write for ordinary software.
- The score is not comparable to anyone else’s score, and does not need to be.
- It only needs to answer one question: did this change make my product
better or worse at my job?
- Nobody can build this for you, because only you know what your job is.
- If you build software on a model and you do not have one of these, you are
guessing every time you change anything.
PLAIN50.8.2 a picture in your head#
- A bakery buys flour. The supplier changes.
- The baker does not read the flour industry’s national quality rankings.
- The baker bakes their own three standard loaves with the new flour and
compares them to the old ones.
- Same recipe, same oven, same timings. Only the flour changed.
- If the loaves are worse, the flour is rejected, whatever the rankings said.
- The bakery’s test is small, private, unscientific and completely decisive,
because it measures the thing the bakery sells.
- That is an internal eval.
Where this comparison breaks: bread quality is judged by a person who has baked
for twenty years, in one taste. Model output quality often needs a written
rule, because you will run the test hundreds of times and cannot taste every
loaf yourself. Writing that rule down is the hard part of the job.
PLAIN50.8.3 a worked example#
- A practical recipe for building one. Follow it in order.
- Step 1. Write down the job in one sentence. “Turn a customer email into a
support ticket with a category, a priority and a two-line summary.”
- Step 2. Collect 30 to 100 real inputs. Not invented ones. Real.
- Step 3. Make sure the mix is deliberate, not random.
| Slice of the set |
Share |
Why |
| Ordinary typical cases |
50 per cent |
The common path |
| Known hard cases |
25 per cent |
Where it broke before |
| Edge and malformed input |
15 per cent |
Robustness |
| Should refuse or escalate |
10 per cent |
Safety and limits |
- Step 4. For each input, write the answer you want. Where several answers
are acceptable, write the rule instead of a single answer.
- Step 5. Choose a scoring rule per item, from the cheapest kind that works.
exact category must equal "billing"
contains summary must mention the order number
regex priority must match ^(P1|P2|P3)$
schema output must parse as valid JSON
assert code must pass these three tests
judge a model grades 1-5 against a rubric
human a person grades, for a 10-item subset
- Step 6. Store it as a plain file. One row per example. Input, expected,
rule, and a note about why it is in the set.
- Step 7. Write a script that runs all items and prints one number plus the
list of failures. The list of failures is the part you will actually read.
- Step 8. Run it three times and note the spread before you trust any change
smaller than that spread.
- Step 9. Keep it in version control next to the code, and add a new row
every time a real failure reaches a user. The set grows by itself.
PLAIN50.8.4 what is really happening inside#
- Why 30 to 100 and not 10 or 10,000.
- Below about 30, one item is more than 3 per cent, and the whole set can be
passed by luck or by a prompt change that happens to suit those items.
- Above a few hundred, hand-writing expected answers becomes a project, and
people stop maintaining it. An unmaintained eval set is worse than none,
because it produces confident wrong signals.
- The trade-off is honest: 30 to 100 items cannot tell you a 2 per cent
difference. It can reliably tell you a 15 per cent difference, which is the
size of change that usually matters when swapping models or prompts.
- Where model-as-judge belongs. Use it when the output is free text and no
mechanical rule works, but pin it down: a fixed rubric with numbered
criteria, a fixed judge model with a fixed dated identifier, and a fixed
temperature.
- And validate the judge once: have a person grade 20 items, compare with the
judge, and record the agreement rate. If the judge agrees with your human
less than about 80 per cent of the time, fix the rubric before trusting it.
- Also record cost and latency per item on every run. A change that improves
quality by 3 per cent and triples cost is a decision, not an improvement,
and you cannot make that decision without both numbers.
TECHNICAL50.8.5 the engineer’s version#
- Treat the eval set as a first-class artifact: versioned in git, with a
schema, a fixed identifier per item, and a changelog. Never edit an item
silently; add a new one and deprecate the old one, or every historical
number becomes uninterpretable.
- A workable row schema:
id stable, never reused
input verbatim, including whitespace
expected answer or acceptance rule
rule exact | contains | regex | schema
| assert | judge | human
slice typical | hard | edge | refusal
added_on date
reason one line, why this exists
- Report three numbers, not one: pass rate, mean latency, mean cost per item.
Report pass rate per slice as well as overall, because a model that fixes
typical cases and breaks refusals is a regression, not a gain.
- Guard against a subtle trap: if you iterate on prompts against the eval set
many times, you overfit to it exactly as labs overfit to public benchmarks.
Hold back 20 per cent of items as a set you run only at decision time.
- Available tooling as of 2026 includes provider-hosted eval products, open
frameworks such as OpenAI’s
evals repository, promptfoo, deepeval,
Inspect from the UK government’s AI institute (named the AI Safety
Institute at launch in 2024 and renamed the AI Security Institute in
February 2025), and LangSmith-style tracing
platforms. Note that provider-hosted eval products get deprecated too: as
of mid-2026 OpenAI had announced shutdown dates for several platform
features. Prefer a format you own.
- Statistical note. With 50 items and an observed pass rate of 0.80, one
standard error is sqrt(0.8 * 0.2 / 50) = 0.0566, about 5.7 points. So a move
from 80 to 84 per cent on 50 items is well inside noise. Do not ship on it.
- Established fact: internal regression evals are standard practice at
companies shipping model-backed products. Marketing claim: any vendor
assertion that their public benchmark results predict your task performance.
WORDS50.8.6 remember these#
- Internal eval — your own small private test — a curated regression suite of
task-representative items with per-item acceptance rules.
- Regression test — checking a change did not break things — re-running a
fixed suite after every modification and comparing to the last result.
- Slice — a named group of items — a labelled subset such as typical, hard,
edge or refusal, reported separately.
- Rubric — the written marking scheme for a judge — the numbered criteria a
judge model or human applies to score free text.
- Golden set — the agreed correct answers — the reference outputs, versioned
and never silently edited.
- Holdout — items you do not tune against — the reserved fraction run only at
decision time to detect overfitting to your own set.
- Acceptance rule — how an item is marked — the per-item comparison, from
exact match through to human judgement.
50.9 Reading a model announcement critically#
PLAIN50.9.1 in simple words#
- A model announcement is a marketing document that contains real data.
- Both halves of that sentence are true and you need both.
- The data is usually accurate as far as it goes. The selection is not neutral.
- So read it the way you read a job application: assume everything stated is
true, and pay most attention to what is missing.
- Nine questions do almost all the work, and section 50.9.3 lists them.
- If the announcement answers all nine, that is a good sign about the team,
independent of the scores.
PLAIN50.9.2 a picture in your head#
- Think of a used-car advertisement listing the good features honestly.
- New tyres, full service history, one owner. All true.
- It does not mention the mileage, and you notice that it does not.
- You do not conclude the car is bad. You conclude you must ask.
- The absence of a number is itself information, because the seller chose the
list.
Where this comparison breaks: a car has one mileage figure and the seller knows
it. A model has no single benchmark score to withhold, because the score
depends on the protocol. So the missing item is usually the protocol, not a
number, and the protocol is much easier to omit without anyone noticing.
PLAIN50.9.3 a worked example#
- The nine questions, in order, applied to any announcement.
- Which benchmarks are shown, and which of the usual ones are absent? An
absent standard benchmark is the loudest signal in the document.
- Which comparison models, at which exact versions and dates? “GPT-4” is not a
version. “Claude” is not a version.
- Who produced the competitor numbers: this lab, or the competitor’s own
published figures, or an independent runner?
- What was the prompting setup: shots, chain-of-thought, system prompt?
- Did the model have tools? Search, code execution, retrieval, file access?
And did the comparison models have the same ones?
- Is the score pass@1 and a single run, or is it best-of-n, majority voting,
or an average over many samples?
- Does the chart’s axis start at zero, and is the gap bigger than the
benchmark’s known prompt sensitivity?
- Is the benchmark new, and who built or funded it?
- Has an independent third party reproduced any of it, and when?
PLAIN50.9.4 what is really happening inside#
- Two phrasings that should always slow you down.
- “State of the art on X” with no date. State of the art is a claim about a
moment, and the moment is usually the week before publication.
- “Comparable to human experts”. Ask which humans, doing what, under what time
limit, and with what resources. GPQA is the model case: its expert baseline
was 65 per cent, measured under stated conditions, and quoting a model above
that as “beyond PhD level” ignores that the humans were answering a
four-option quiz outside a lab.
- Also watch for the shift between a model claim and a system claim. A
product with retrieval, tools and a scaffold is a system. Its score belongs
to the system.
- And watch the switch of subset: a headline referencing SWE-bench and a
footnote saying Verified, or GPQA in the headline and Diamond in the
footnote, are not errors, but they change what is being compared.
TECHNICAL50.9.5 the engineer’s version#
- Where the answers usually live, in decreasing order of reliability: the
system card or technical report appendix, the model card, the announcement
footnotes, the blog post body, the chart itself.
- Reading order should therefore be reversed from the page order: appendix
first, chart last.
- Independent reproduction sources worth checking before believing a headline:
the benchmark’s own leaderboard, third-party evaluation organizations that
run their own harnesses and publish protocols, and the open harness
community’s issue trackers, where discrepancies get argued out publicly.
- A note on speed. Reproductions typically appear days to weeks after a
release. The gap between announcement and reproduction is precisely the
window in which the announcement is unchecked.
- Established fact: benchmark numbers in major technical reports are generally
reproducible within a few points when the protocol is published. Marketing
claim: leaderboard positions asserted from gaps inside the reproduction
spread.
WORDS50.9.6 remember these#
- Model card — a short standard description of a model — a document stating
intended use, training data summary, evaluations and limitations.
- System card — the same for a whole product — documentation covering the
model plus scaffolding, tools, safety mitigations and evaluations.
- Self-reported — measured by the maker — a result produced by the provider,
pending independent reproduction.
- Reproduction — someone else got the same number — an independent run under
a published protocol.
- State of the art — best known result so far — a time-indexed claim, valid
only at a stated date on a stated protocol.
- System versus model — the product versus the weights — the distinction
between an end-to-end deployed pipeline and the underlying network.
50.10 Training cutoff versus release date#
PLAIN50.10.1 in simple words#
- There are two dates and people constantly confuse them.
- The training data cutoff is the last date of text the model learned from.
- The release date is the day you could first use it.
- The gap between them is typically several months, and has often been a year
or more.
- During that gap the world kept happening and the model did not see any of it.
- So a model released in one year can be confidently describing the world of a
year or more earlier.
- It does not know it is out of date. It has no clock and no calendar.
- Unless you tell it today’s date, it does not know today’s date.
- And it is often wrong about its own cutoff, which surprises people most.
PLAIN50.10.2 a picture in your head#
- Imagine someone who read every newspaper up to a certain Tuesday, then went
into a sealed room, and is now answering your questions.
- They are extremely well read up to that Tuesday.
- They do not know today is a different day. Nobody told them.
- Ask what happened last week and they will describe the last week they
remember, with total confidence.
- Worse, they read fewer papers in the final month than in earlier months,
because the papers about that month had not been written yet.
- So their sense of “recent” lands earlier than the actual Tuesday.
Where this comparison breaks: a person in a sealed room knows they are in a
sealed room, and will say so. A model has no representation of its own
situation, so it cannot volunteer the warning. That is the whole practical
danger of the gap.
PLAIN50.10.3 a worked example#
- Real published gaps between stated cutoff and release.
| Model |
Stated cutoff |
Released |
| GPT-4 |
September 2021 |
14 March 2023 |
| Claude 3 family |
August 2023 |
4 March 2024 |
| Llama 3 8B |
March 2023 |
18 April 2024 |
| Llama 3 70B |
December 2023 |
18 April 2024 |
| GPT-4o |
October 2023 |
13 May 2024 |
- Read the first row. GPT-4 shipped about 18 months after its data ended.
- Read rows three and four. Two models released on the same day, from the same
family, with cutoffs nine months apart.
- That alone should end any belief that a family name implies a shared cutoff.
- Since about 2024 the gaps have narrowed, often to a few months, because
pipelines got faster and freshness became a selling point. But the gap has
never been zero and cannot be.
PLAIN50.10.4 what is really happening inside#
- Why the gap exists at all, in order.
data collection and filtering weeks to months
pretraining run weeks to months
post-training: SFT, RL, tuning weeks to months
internal + external evaluation weeks
safety testing and red-teaming weeks to months
staged rollout and capacity build weeks
- Every stage needs the previous one finished, so the delays add rather than
overlap.
- Now why models are unreliable about their own cutoff. Three separate causes.
- First, the cutoff is not stored anywhere in the weights. If the model states
one, it is because someone wrote it into the post-training data or the
system prompt, or because the model is guessing.
- Second, the internet writes about events with a lag. An event in the final
two months before cutoff has far fewer documents about it than an event two
years earlier. So the model’s felt sense of “the present” sits earlier than
its real cutoff. Researchers call this the effective cutoff, and it is
commonly earlier than the stated one.
- Third, training corpora contain many documents about earlier models with
earlier cutoffs. A model asked its own cutoff can echo a date it read.
- The practical rule that follows: never ask a model for its cutoff and act on
the answer. Look it up in the provider’s documentation.
- And always put the current date in the system prompt if the date matters.
TECHNICAL50.10.5 the engineer’s version#
- Terminology precision. “Knowledge cutoff” usually refers to the pretraining
corpus cutoff. Post-training data is frequently newer, and retrieval or tool
results are newer still. A deployed system can therefore have three
different effective dates at once.
- The paper “Dated Data: Tracing Knowledge Cutoffs in Large Language Models”,
published in 2024, documented that measured effective cutoffs for many open
models are earlier than the reported ones, and attributed this partly to
corpus construction: deduplication and re-crawling mean older versions of
pages persist while newer content is thinner.
- Mitigations, in the order you should reach for them:
| Mitigation |
What it fixes |
| Date in system prompt |
Model thinks it is the past |
| Web search tool |
Missing recent facts |
| Retrieval over your docs |
Missing private facts |
| Explicit “you may not know” |
Confident staleness |
- Established fact: the cutoff-to-release gap, and its documented sizes.
Established fact: models frequently misreport their own cutoff. Active
research: measuring effective cutoffs per topic. Marketing claim: “always up
to date”, which describes a retrieval pipeline, not a model.
- Practical detection test you can run in one minute: ask the model about
three events with known dates spread across the suspected boundary, and see
where its knowledge stops. That measures the effective cutoff for that
topic, which is what you actually care about.
WORDS50.10.6 remember these#
- Training cutoff — the last date of learned text — the corpus collection
boundary for pretraining data.
- Effective cutoff — where the knowledge really stops — the empirically
measured boundary, usually earlier than the stated cutoff.
- Release date — when you could first use it — general availability date of a
specific model version.
- Staleness — the model living in the past — degradation of factual accuracy
for events after the cutoff.
- Retrieval augmentation — giving it fresh documents at question time —
supplying externally fetched context so the answer is not limited to weights.
- Post-training — the tuning after the big training run — supervised
fine-tuning and reinforcement learning stages, often using newer data than
pretraining.
50.11 Versions, snapshots and the moving-name problem#
PLAIN50.11.1 in simple words#
- A product name and a model identifier are two different things.
- The product name is what the marketing says. It is a brand.
- The model identifier is the exact string your program sends to the API.
- A product name can point at different weights over time, without notice.
- A dated identifier points at one fixed set of weights that never changes.
- So the same product name can behave differently next month, and your
carefully tuned prompt can quietly stop working.
- Nobody broke anything on purpose. The name moved.
- The rule that follows is short: in production, use a dated identifier, and
re-run your own eval set whenever you change it.
PLAIN50.11.2 a picture in your head#
- Think of a coffee shop’s “house blend”.
- It is on the menu every year under the same name.
- The beans change with the harvest, the roast is adjusted, the supplier
changes. The name does not.
- If you love it, you cannot order last year’s. It no longer exists.
- A dated identifier is like buying a specific labelled lot, roasted on a
stated day, from a stated farm.
- You can reorder exactly that, until the shop stops stocking it.
Where this comparison breaks: coffee changes gradually and you taste it
immediately. A moving model name can change one narrow behaviour, such as how
it formats JSON or when it refuses, while everything else stays identical. You
will not notice by tasting. You notice because a downstream parser starts
failing at two in the morning.
PLAIN50.11.3 a worked example#
- Real naming conventions from the three largest providers, as observed in
August 2026. These change, so treat the shapes as the lesson and the
examples as dated illustrations.
| Provider |
Shape |
Example |
| OpenAI |
name-YYYY-MM-DD |
gpt-5-2025-08-07 |
| Anthropic |
family-version-YYYYMMDD |
claude-opus-4-1-20250805 |
| Anthropic |
undated alias |
claude-opus-5 |
| Google |
name plus channel |
gemini-3.6-flash |
| Google |
dated preview |
model-preview-MM-YYYY |
- Read the OpenAI row.
gpt-5-2025-08-07 is a snapshot: those exact weights,
fixed. gpt-5 on its own is an alias that may be repointed.
- Read the Anthropic rows. Some identifiers carry an eight-digit date, some
do not. The dated ones are the ones to pin.
- Google’s documentation as of August 2026 describes four channels: stable,
preview, latest and experimental. The
latest alias is explicitly defined
as pointing at the newest release for a model variation, with a stated
notice period of about two weeks before a breaking change.
- That is the clearest possible statement of the trade-off. An alias gives you
automatic upgrades and about two weeks of warning. A pinned snapshot gives
you stability and the obligation to migrate yourself.
- Note also the older Google style using numeric suffixes such as
-001 and
-002, where the trailing number is the revision of the same model
generation. Different shape, same purpose.
PLAIN50.11.4 what is really happening inside#
- Why aliases exist at all, honestly stated from both sides.
- From the provider’s side: most users want improvements without doing work,
safety fixes must be able to ship immediately, and serving many pinned
versions costs real hardware.
- From your side: any change to weights is a change to behaviour, and you have
tested against the old behaviour.
- Those two positions cannot both be fully satisfied, which is why both
options exist.
- What actually changes when a name is repointed: refusal boundaries, verbosity
and formatting habits, tool-calling and JSON reliability, tokenizer or
context limits in larger changes, and latency and price.
- What almost never changes silently: the API shape. Providers version that
separately, precisely because it would break everyone at once.
- The distinction is worth naming. The API contract is close to a standard,
documented and versioned. Model behaviour under an alias is a convention,
and one that assumes you will cope.
- There is also a middle case people forget: a provider may change the serving
stack, quantization or routing behind a fixed identifier. The weights are
the same; the outputs may not be bit-identical. Ask about this if
determinism matters to you.
TECHNICAL50.11.5 the engineer’s version#
- The production rule, in three lines.
1. Pin the dated snapshot in config, never an alias.
2. Store the exact id with every logged output.
3. Re-run your eval set before changing the pin.
- Logging the identifier with each output is the step people skip and later
regret. Without it, you cannot answer “did quality drop when we moved?”
because you cannot tell which requests used which weights.
- Keep the identifier in configuration, not in code, so a migration is a
config change plus an eval run, not a code release.
- Where aliases are still right: prototypes, internal tools, and anything
where a two-week notice period is acceptable and nobody has built a parser
around the exact output shape.
- Where snapshots are essential: anything with a downstream schema, anything
regulated, anything with a tuned prompt, and anything you cannot re-test
quickly.
- Watch for parameter-level changes too, not just weight changes. As one 2026
example, Anthropic’s documentation lists
temperature, top_p and top_k
as deprecated for its newest models, with non-default values returning an
error. Code that hard-codes a temperature will fail on migration even though
the API version did not change.
- Established fact: aliases are repointed and dated snapshots exist at all
three major providers. Marketing claim: “drop-in upgrade”. Every upgrade is
a behaviour change until your own eval set says otherwise.
WORDS50.11.6 remember these#
- Product name — the brand on the website — a marketing label that may map to
different artifacts over time.
- Model identifier — the exact string you send — the API-level model name that
selects a served artifact.
- Snapshot — a frozen dated version — an immutable identifier bound to one set
of weights and serving configuration.
- Alias — a name that follows the newest release — a mutable pointer, such as
a bare family name or a
latest channel.
- Pinning — fixing the version in config — specifying an immutable snapshot
identifier so behaviour does not change under you.
- Channel — the stability tier — stable, preview, latest or experimental, each
with different change and notice policies.
50.12 Deprecation and retirement#
PLAIN50.12.1 in simple words#
- Every model you build on will eventually be switched off.
- Not “might”. Will. Plan for it from the first day.
- There are three stages and they mean different things.
- Legacy means still working, no longer recommended, no further updates.
- Deprecated means a shutdown date has been announced.
- Retired means the identifier no longer works and your requests fail.
- Providers give notice, but the notice period varies a great deal by provider
and by model tier.
- The single thing that makes a forced migration safe is your own eval set,
because it is the only way to know whether the replacement is good enough
for your job.
PLAIN50.12.2 a picture in your head#
- Think of a bus route being withdrawn.
- First, notices appear at the stops. That is deprecation.
- Then a date is given, and an alternative route is suggested.
- On the date, the bus stops coming. That is retirement.
- If you never tried the alternative route before the date, you find out on
the morning you needed it whether it gets you to work on time.
- Trying the alternative early, with your actual journey, is the whole of
migration strategy.
Where this comparison breaks: a bus route is either running or not, and you
find out at the stop. A retired model identifier can fail in a way your code
does not handle, at the worst possible moment, in production, returning an
error your retry logic loops on. Test the failure path too.
PLAIN50.12.3 a worked example#
- Real, checkable policies and dates, as published in August 2026.
| Provider |
Class |
Notice given |
| OpenAI |
Generally available |
At least 6 months |
| OpenAI |
Specialized variants |
At least 3 months |
| OpenAI |
Preview models |
As short as 2 weeks |
| Anthropic |
Public models |
At least 60 days |
| Google |
Preview models |
At least 2 weeks |
- And real retirement events, which show the policies being applied.
| Identifier |
Retired |
| claude-3-7-sonnet-20250219 |
19 February 2026 |
| claude-sonnet-4-20250514 |
15 June 2026 |
| claude-opus-4-1-20250805 |
5 August 2026 |
| gpt-5-2025-08-07 (announced) |
11 December 2026 |
- Read the third row against the first table. That snapshot was released in
August 2025 and retired in August 2026. One year of life.
- Read the fourth row. Announced on 11 June 2026 for shutdown on 11 December
2026: exactly the stated six months.
- That is the realistic planning number. A pinned snapshot at a major provider
has historically lasted roughly one to two years, with a few months of
warning at the end.
- Note also that whole product features get retired, not only models. In 2026
OpenAI announced shutdown dates for several platform features including its
hosted evaluation product. Do not build your only eval harness inside a
vendor’s product.
PLAIN50.12.4 what is really happening inside#
- Why retirement happens: serving old weights occupies accelerators that could
run new ones, old models lack current safety mitigations, and every
supported version multiplies the testing burden.
- Where to find the schedule: every major provider publishes a deprecations
page listing model identifier, deprecation date, retirement date and the
recommended replacement. Read it quarterly. Subscribe to the changelog.
- The migration procedure, in order.
1. Read the deprecation notice; note both dates.
2. Identify the suggested replacement id.
3. Run your eval set on old and new, same prompts.
4. Read the failure list, not just the score.
5. Fix prompts for the new model's habits.
6. Re-run. Compare cost and latency too.
7. Ship behind a flag; keep the old id available.
8. Watch production metrics; then remove the flag.
9. Delete the old id from config before the date.
- Step 3 is the one that makes the rest possible. Without an eval set, steps 4
to 8 are guesswork and step 9 is a leap of faith.
- Expect prompt changes to be needed. A newer model in the same family often
needs a shorter prompt, because instructions written to work around an older
model’s weaknesses can actively hurt a newer one.
- Budget the work. For a small production system with a good eval set, a
migration is typically days. Without one, it is weeks and the outcome is
unknown.
TECHNICAL50.12.5 the engineer’s version#
- Operational controls worth having in place before you need them: the model
identifier in configuration, a per-request log of the identifier used, a
feature flag to switch identifiers without deploying, and an alert on the
specific API error returned for a retired model.
- Consider a fallback chain in code: primary snapshot, then a named
replacement, then a degraded path. Test the fallback deliberately, because
an untested fallback is not a fallback.
- If continuity matters more than anything else, the alternative is running
open-weight models yourself. Then nobody can retire your model, and the cost
is that you own the serving, the security patching and the hardware. That is
a genuine trade, not a free option.
- Established fact: the notice periods and retirement dates above, as
published in August 2026. They are policies, not contracts, and they change;
check the current pages rather than trusting this table.
- The honest version of “the provider will look after you”: the provider will
give you a date and a suggested replacement. Whether the replacement does
your job is entirely your problem, and only your eval set can answer it.
WORDS50.12.6 remember these#
- Deprecated — announced for removal — still functional, with a published
retirement date and a recommended replacement.
- Retired — switched off — the identifier no longer serves requests and calls
return an error.
- Legacy — still working, no longer recommended — a supported but frozen
version receiving no updates.
- Notice period — how long you get to move — the interval between deprecation
announcement and retirement.
- Migration — moving to the replacement — re-pinning the identifier and
re-validating behaviour against your own evaluation set.
- Fallback chain — what to use when the first choice fails — an ordered list
of model identifiers with a degraded final option.
50.13 What you should actually do#
PLAIN50.13.1 in simple words#
- Here is the whole procedure, in order, for choosing a model for a job.
- One. Write down the job in one sentence, and what a good answer looks like.
- Two. Build the eval set from section 50.8. Thirty to a hundred real
examples with a marking rule.
- Three. Shortlist two or three candidate models. Use public benchmarks only
for this step, only to shortlist, and never to decide.
- Four. Run your eval set on all of them, with identical prompts.
- Five. Read every failure. The failures tell you more than the score.
- Six. Measure cost and latency at the same time, on the same runs.
- Seven. Decide using all three numbers together, not quality alone.
- Eight. Pin the dated identifier you chose.
- Nine. Put the failures you saw into the eval set as new items.
- Ten. Re-check every three months, and whenever a deprecation notice arrives.
- That is it. It is not sophisticated. It is just done consistently.
PLAIN50.13.2 a picture in your head#
- This is how you would hire someone, and you already know how to do that.
- You do not hire from a league table of universities.
- You shortlist from credentials, then you set a work sample task that
resembles the actual job.
- You watch how they handle the hard parts, not just whether they finish.
- You consider salary and availability alongside skill.
- And you review after a few months, because circumstances change.
Where this comparison breaks: a person learns your job over time and asks
questions when confused. A pinned model snapshot is exactly as good on day 300
as on day 1, and never tells you it is uncertain unless you build that in.
PLAIN50.13.3 a worked example#
- What to measure, and what a reasonable target looks like.
| What to measure |
How |
Why it matters |
| Pass rate overall |
Your eval set |
Does it do the job |
| Pass rate per slice |
Eval set slices |
Where it fails |
| Cost per task |
Tokens times price |
Unit economics |
| Time to first token |
Client-side timer |
Feels responsive |
| Tokens per second |
Client-side timer |
Long output speed |
| Run-to-run variance |
3 repeat runs |
Is a gain real |
| Refusal rate |
Refusal slice |
Over-caution |
| Format validity |
Schema check |
Downstream breakage |
- A worked cost calculation, using round illustrative prices rather than any
provider’s current ones, since prices change monthly.
- Suppose a task uses 4,000 input tokens and 800 output tokens, and the price
is 3 dollars per million input and 15 dollars per million output.
- Input cost: 4,000 / 1,000,000 * 3 = 0.012 dollars.
- Output cost: 800 / 1,000,000 * 15 = 0.012 dollars.
- Total 0.024 dollars per task. At 50,000 tasks a month that is 1,200 dollars.
- Now suppose a model scoring 4 points higher costs three times as much. That
is 3,600 dollars a month for 4 points on a 50-item eval set, where one
standard error is about 5.7 points.
- Written that way the decision is obvious, and it was invisible while you
were looking at a leaderboard.
PLAIN50.13.4 what is really happening inside#
- Why “try two or three” and not one or ten.
- One tells you nothing comparative. Ten is a research project you will not
finish, and the differences between the middle candidates will be inside
your noise floor anyway.
- Two or three, chosen to be genuinely different, is the sweet spot: for
example one frontier model, one cheaper model from the same provider, and
one from a different provider or an open-weight model you host.
- Include a cheaper model deliberately. The most common real finding is that
the cheap model is good enough for 80 per cent of traffic, and a routing
rule sends the rest to the expensive one.
- Why re-check periodically: models change under aliases, new versions appear,
prices fall, and your traffic mix drifts as users learn what your product
can do.
- Why the failure list beats the score: a 90 per cent pass rate where the 10
per cent are harmless is fine, and a 95 per cent pass rate where the 5 per
cent are confident wrong answers about money is not.
TECHNICAL50.13.5 the engineer’s version#
- Measure latency properly and separately. Time to first token dominates
perceived responsiveness in streaming interfaces; output tokens per second
dominates total completion time for long outputs. Report both, at the median
and at the 95th percentile, not as a mean.
- Measure from where your users are. A model served in another region can add
more latency in transit than the difference between two models.
- Control the comparison. Same prompts, same temperature where settable, same
context, same tools, same time of day. Provider load varies through the day
and will otherwise contaminate your latency numbers.
- Compute your noise floor first: run one model three times and record the
spread. Any difference between models smaller than that spread is not a
result.
- Keep the artifacts: raw outputs, identifiers, timestamps and prices. When
something changes in three months, the old raw outputs are the only way to
prove what changed.
- Established fact: the arithmetic and the method here. Active research:
automated evaluation set generation and automatic prompt optimization, both
of which are useful and neither of which removes the need for a human to
define what a good answer is.
WORDS50.13.6 remember these#
- Shortlist — the two or three you will actually test — candidate models
chosen from public evidence before task-specific measurement.
- Noise floor — the wobble between identical runs — the run-to-run standard
deviation below which differences are meaningless.
- Time to first token — how long before words appear — the latency from
request to first streamed token, distinct from total completion time.
- Unit economics — what one task costs — the token cost per completed task at
your actual input and output lengths.
- Routing — sending easy work to a cheap model — a policy that selects a model
per request based on difficulty, cost or latency budget.
- Regression — the new thing is worse at something — a drop on any slice of
your evaluation set after a change.
50.98 Common wrong ideas#
- Wrong: benchmark scores measure intelligence. Right: they measure
performance on a fixed list of items under one protocol. Intelligence is not
defined well enough to be scored, and no benchmark claims to.
- Wrong: a higher MMLU means it is better for my task. Right: MMLU is
four-option factual recall and is saturated. It predicts almost nothing
about summarizing your emails or fixing your code. Only your own eval set
answers that.
- Wrong: the leaderboard is objective. Right: every leaderboard embeds choices
about prompts, extraction, subsets and sampling, and preference leaderboards
additionally embed the taste and the question mix of whoever voted.
- Wrong: the model knows its own training cutoff. Right: the cutoff is not
stored in the weights. Any date it gives is repeated from post-training data
or guessed, and the felt cutoff is usually earlier than the real one.
- Wrong: the same model name always means the same model. Right: undated
product names are aliases and get repointed. Only a dated snapshot
identifier is fixed, and even that is eventually retired.
- Wrong: if two labs disagree, one is cheating. Right: prompt template,
few-shot count, extraction, subset, sampling, system prompt and tool access
routinely explain gaps of several points, with nobody at fault.
- Wrong: contamination means the scores are fake. Right: contamination inflates
scores by an unknown and uneven amount. Matched fresh benchmarks show drops
of up to about 8 points for some model families and near zero for others.
- Wrong: a 2-point lead is a meaningful lead. Right: on GPQA Diamond one
standard error is about 2 points and one item is 0.5 points. On a single
AIME paper, one question is 6.7 points.
- Wrong: pass@k is just the score. Right: pass@k rises with k by construction.
pass@1 and pass@100 are different quantities and cannot be compared.
- Wrong: benchmarks are useless, so ignore them. Right: they are useful for
shortlisting, for tracking the field over years, and for spotting obvious
weakness. They are not useful for choosing between two close models for
your specific job.
50.99 Chapter summary in 20 lines#
- A benchmark is a fixed set of items with known answers plus a rule for
scoring a response. Nothing more.
- Every run has five parts: items, prompt template, generation settings,
answer extraction, and aggregation.
- Only the items are usually published, so a score belongs to a model plus a
harness, not to a model.
- MMLU (2020, 57 subjects, about 14,000 test items) and HellaSwag (2019) are
saturated and now mostly sanity checks.
- GSM8K (2021, 1,319 test items) is solved. MATH (2021), AIME and FrontierMath
carry the maths signal now.
- HumanEval (2021, 164 problems, pass@k) is tiny, isolated and leaked. MBPP
(2021, 974 problems) has the same shape.
- GPQA (2023, 448 items; Diamond 198) is hard four-option science recall, not
the ability to do science.
- SWE-bench (2023, 2,294 tasks; Verified 500) scores whether real repository
tests pass, and measures the scaffold as much as the model.
- ARC-AGI keeps a held-back set and reports cost per task, which more
benchmarks should copy.
- Few-shot examples mainly fix output format. Chain-of-thought uses the
model’s own output as working memory and transforms maths scores.
- pass@k = 1 - C(n-c,k)/C(n,k). With n=10 and c=2, pass@1 is 0.20 and pass@5
is 0.78. The model did not improve; you bought more tries.
- Two labs disagree because of prompts, shots, extraction, subsets, sampling,
system prompts, tools, or bugs. Ask which harness and version.
- Contamination is near-inevitable when training on the web. Detection by
n-gram overlap, canaries, perplexity, old-versus-new splits and completion
tricks can prove presence but never absence.
- Saturation, Goodhart’s law, self-reported numbers, cherry-picked baselines,
best-of-n reporting, tool asymmetry and truncated axes are the seven
ordinary ways a number misleads without anyone lying.
- Preference arenas measure real user taste well and truth badly, with
documented length and style bias; a 10-point gap is a 51 per cent win rate.
- Inside a company, an eval is a private regression suite of 30 to 100 real
examples with per-item marking rules, run on every change.
- Training cutoff and release date are different, historically separated by
months to over a year, and models are unreliable about their own cutoff.
- Product names are mutable aliases; dated snapshots are fixed. Pin the
snapshot in production and re-run your evals when you change it.
- Every model is eventually retired. Typical notice in 2026 was at least six
months at OpenAI, at least 60 days at Anthropic, about two weeks for
preview channels.
- Shortlist with public benchmarks, decide with your own eval set, measure
cost and latency alongside quality, and re-check every few months.