Writing

Benchmark Scores Are Not Model Capability

Claude 3 posts 86.8% on MMLU and 50.4% on GPQA Diamond. The chart is useful and it is not the same thing as capability.

Notes

Claude 3 arrived with the kind of chart that quickly becomes the story. Anthropic reported that Claude 3 Opus matched or beat competing models across many familiar evaluations. On MMLU it scored 86.8%. On GPQA Diamond, 50.4%. On GSM8K, 95.0%. The obvious reading is that a higher score means a more capable model.

That reading is useful, but incomplete.

A benchmark tells us how a model behaved under a defined protocol. It does not tell us, by itself, how the same model will behave inside a product, across a long workflow, with ambiguous instructions, changing state and failure costs that are not represented by the test.

The more capable these models become, the more this distinction matters.

The problem with a single number

Benchmarks are attractive because they turn messy behaviour into something comparable. MMLU gives us a fixed set of questions. HumanEval gives us programming tasks with unit tests. GSM8K gives us grade-school math problems. GPQA tries to push reasoning into harder, expert-level territory.

This is good engineering. Without repeatable tests, model comparisons become anecdotes.

The mistake is treating the result as a property of the model rather than a property of the model under a specific evaluation setup.

Claude 3 makes that visible. Anthropic's model card reports 50.4% on GPQA Diamond with zero-shot chain-of-thought, 53.3% with five-shot chain-of-thought, and 59.5% when using majority voting over 32 sampled answers. Same model. Same benchmark family. Different inference procedure, different score. Anthropic notes that GPQA had high variance across sampled evaluation runs.

That does not make the benchmark bad. It means the protocol is part of the result.

The same issue appears in vendor comparisons. Prompt format, few-shot examples, chain-of-thought settings, sampling parameters and answer extraction can all affect the number. Anthropic even notes in its Claude 3 announcement that engineers had optimised prompts and few-shot samples for newer GPT-4 Turbo evaluations that produced higher reported scores.

Once a leaderboard compresses all of this into one row, it is easy to forget how much machinery sits behind the number.

Claude 3 is more interesting outside the chart

The benchmark table is not the part of Claude 3 that interests me most.

Anthropic describes several changes that are much closer to product behaviour: fewer unnecessary refusals, better adherence to multi-step instructions, more reliable structured output, vision input, a 200K context window and improved performance on an internal set of difficult open-ended factual questions.

Those properties are harder to summarise because they do not collapse neatly into one percentage. They are much closer to the things that decide whether I can actually use a model in a workflow.

Take code generation. HumanEval is useful because generated Python functions can be checked against tests. But production development is rarely an isolated function with a clean specification. A model may need to understand an existing repository, preserve conventions, infer why an earlier decision was made, modify several files and avoid breaking behaviour somewhere else.

The difference becomes even clearer in Blender or game-development automation. Producing syntactically valid Python is only one part of the task. The script may depend on scene state, Blender's context rules, object naming, data-block relationships, export settings or the assumptions of a larger asset pipeline. A model can be good at code benchmarks and still be unreliable at that workflow.

The benchmark measures a component capability. The production task measures whether several capabilities survive contact with each other.

Evaluation has a distribution problem

There is another issue: public benchmarks are fixed datasets, while real usage is a distribution that keeps moving.

A benchmark contains questions chosen by its authors. A production system receives whatever users, files, APIs and software state happen to produce. Those inputs are not guaranteed to resemble the test set.

Research before Claude 3 already pointed to this gap. Stanford's HELM project argued for evaluation across multiple scenarios and multiple metrics rather than accuracy alone, including robustness, calibration, fairness, toxicity and efficiency.

Dynabench took a different approach, using humans to create examples that current models fail on instead of treating a static dataset as permanent. Its premise is straightforward: models can score well on established tests and still fail on simple challenge examples or real-world inputs.

There is a second problem with static tests: contamination.

If benchmark examples, close variants or answer patterns appear in training data, a score may overestimate generalisation. Work published in 2023 argued that this problem is difficult to measure, especially when training data is not available for inspection, and that contamination can distort conclusions drawn from benchmark results.

This gets worse as benchmarks become popular. The more a test influences model development, the more likely developers are to optimise against it, directly or indirectly.

That creates a familiar engineering failure: the metric starts becoming the target.

Human preference is useful, but it is not the whole answer either

Chatbot Arena is an interesting response to this problem.

Instead of scoring models on a fixed question set, it presents two anonymous model outputs and asks users which answer they prefer. By March 7, the paper describing the platform reported more than 240,000 votes collected through pairwise comparisons.

That captures something static academic benchmarks miss: how answers behave across a much wider set of prompts from actual users.

But preference is still one signal.

People may prefer an answer that is confident, fluent or concise even when another answer is more accurate. A developer may prefer valid JSON over nicer prose. A production pipeline may value repeatability more than creativity. A support system may care more about refusing the right edge cases than winning an open-ended conversation comparison.

There is no single evaluation that represents all of these requirements.

My takeaway: capability is a vector

I think we should stop talking about model capability as if it were one scalar value.

For production work, capability looks more like a vector: reasoning, instruction following, coding, factual reliability, long-context use, visual understanding, latency, cost, refusal behaviour, output consistency and recovery from bad intermediate state.

The weight of each dimension depends on the system.

If I am building an internal coding assistant, repository understanding and edit reliability may matter more than MMLU. For asset automation, structured output and predictable adherence to pipeline rules may matter more than open-ended writing quality. For a research workflow, uncertainty handling and source fidelity can matter more than response speed.

This changes how I would select a model.

Public benchmarks are the first filter. Then I want a private evaluation set built from the actual workload: real prompts, real files, common failures and cases where a wrong answer is expensive.

I want to run that set repeatedly as prompts, tools and model versions change.

The goal is not to create a larger benchmark. It is to measure the system I am actually shipping.

What I expect next

As frontier models get closer on established benchmarks, small leaderboard differences will tell us less about which model is better for a given product.

I expect evaluation to move closer to application architecture. Teams will keep their own test sets, collect failures from production, replay them against new model versions and track several metrics at once. Human preference will remain useful for open-ended tasks, while deterministic checks will matter more wherever outputs can be validated by code.

This may become especially relevant as models start doing longer sequences of work. A model that succeeds on nine steps and fails on the tenth is not a 90% successful production system if that last failure invalidates the result. Evaluation will need to measure complete task outcomes, not just isolated responses.

Model providers will probably keep publishing broad benchmark tables because they give us a common reference point. That is still useful. But the serious evaluation work will happen after the model enters a real system.

Claude 3's scores are evidence that the frontier moved.

They are not a complete description of where it moved to.

Sources

  1. Anthropic, Introducing the next generation of Claude, 4 March 2024.
  2. Anthropic, The Claude 3 Model Family: Opus, Sonnet, Haiku, March 2024.
  3. Chiang et al., Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference, 7 March 2024.
  4. Sainz et al., NLP Evaluation in Trouble: On the Need to Measure LLM Data Contamination for Each Benchmark, EMNLP 2023.
  5. Liang et al., Holistic Evaluation of Language Models (HELM), 2022.

More

Other write-ups

15 September 2026 Approval Is Not Publication Thirty seven items in the queue, one approved, nothing published. The last arrow in the diagram is the only one that pays. 2 min read 14 September 2026 Neural Rendering Is Crossing From Reconstruction Into Synthesis Reconstruction filled in what sparse sampling missed. DLSS 5 generates appearance the renderer never computed. 6 min read 14 September 2026 The Renderer Is Becoming a Training Data Engine The renderer used to sit at the end of the pipeline. Physical AI gives the same scene a second job: teaching a model. 6 min read 13 September 2026 Local AI Is Becoming a Compute Fabric Local AI meant one model on one machine. Routing inference across the devices already on a network changes the unit. 6 min read 12 September 2026 Agent Infrastructure Is Becoming a Product Category Every team used to build the loop, the store, the sandbox. That layer is being sold rather than written. 6 min read 12 September 2026 Choosing a local model with a stopwatch, not a benchmark Three models, five hard tasks, code actually executed. The official build was 2.4 times faster and more accurate than a community repack of the same model. 3 min read 12 September 2026 We measured real time lighting against baked light, and baked won A 3D product simulation that had to look like an offline render. The real time version ran at 60 frames per second and looked like clay. Here is the measurement and the architecture that replaced it. 4 min read 12 September 2026 What actually broke in an agency run by agents Three failures from a delivery stack that runs on AI. None of them were the model's fault, and all three reported success while producing nothing. 4 min read 11 September 2026 A Task Without A Check Command Is Not Automated If a task has no command that can fail, the pipeline advances on the appearance of work. 2 min read 10 September 2026 A Gate The Model Writes Is A Gate The Model Loosens Three quality gates returned green while the work behind them was wrong, each for a different reason. 2 min read 8 September 2026 The Scoring Model Was Wrong And It Put The Worst Lead First A weighted sum let one axis substitute for the other, so a company with money and no problem ranked in the top twenty. 2 min read 5 September 2026 Building Software Got Easy. Getting Value Out Of It Did Not Aristo took weeks to build. Everything after the build is still in progress, and that gap is the whole story. 3 min read 4 September 2026 Capability Is Becoming an Operational Risk Surface Safety questions used to be about the text. Once a model can act, the capability itself becomes something to operate. 6 min read 24 July 2026 The Scene Graph Is Becoming an API for AI A scene graph exists for artists and software. Agents are becoming another consumer, and they need structure rather than pixels. 6 min read 23 July 2026 Animation Is Moving From Clips to Motion Priors Authored keyframes and blended clips are giving way to asking which constraints define acceptable motion. 6 min read 22 July 2026 Materials Are Becoming Learned Programs A material is texture maps, parameters and shader code. It is starting to become a small learned program that answers a rendering question. 6 min read 16 July 2026 Procedural Systems Are Expanding Beyond Geometry Geometry Nodes started with a narrow name. Blender 5.2 puts physics, sound and object data through the same graph. 6 min read 29 June 2026 The Unit of AI Work Is Becoming the Task, Not the Turn Chat taught us to think one turn at a time. Long-running agents make the task the thing that is scheduled, resumed and reviewed. 6 min read 24 June 2026 Game Engines Are Becoming Operating Systems for Worlds Engines have been judged on what they render and simulate. The Unreal 6 roadmap points at operating a world rather than drawing one. 6 min read 11 June 2026 The Model Is Becoming a Replaceable Backend Choosing a provider used to mean choosing an architecture. A stable interface makes replacement possible and evaluation makes it safe. 6 min read 17 April 2026 The Harness Is Part of the Capability The same model behaves differently depending on context policy, tool design and execution feedback. That surrounding software is not neutral. 6 min read 19 March 2026 Physics Engines Are Becoming Trainable Components A simulator predicts what happens next. A differentiable one can answer which parameter should change to stop the failure. 6 min read 13 March 2026 The Agent Needs an Environment, Not Just Tools A search function and a database query were enough for short loops. Longer work needs a place to stand. 6 min read 9 February 2026 Coding Agents Are Becoming General-Purpose Computer Workers Repositories were a friendly environment: text in, terminal actions, checkable results. That was a starting point, not a boundary. 6 min read 11 December 2025 Open Standards Outlive Model Generations A year after the MCP bet, the argument can be checked against what happened rather than what was hoped. 7 min read 20 November 2025 Colour Management Is a Pipeline Contract Blender 5.0 reads as better display options. Giving a file an explicit working colour space is an architectural change. 6 min read 11 August 2025 The Best Model May Be a Router, Not a Model GPT-5 moves model selection inside the system. The interesting unit stops being which model and becomes which compute policy. 6 min read 8 August 2025 World Models Are Not Game Engines Yet Genie 3 generates a navigable 720p world at 24 fps. Production work needs state you can inspect when something goes wrong. 6 min read 26 May 2025 Memory Is Becoming a System Capability A follow-up to the long-context argument. Storing, selecting and expiring facts is turning into a named part of the product. 6 min read 19 May 2025 Coding Agents Change the Unit of Software Work AI coding tools have been judged where code appears on screen. The boundary moves when the agent owns a task instead of a snippet. 6 min read 11 April 2025 Agents Need Protocols Between Each Other, Not Just Tools Tool calling solves the inside of the loop. It says nothing about one agent reaching another built by a different team on another platform. 7 min read 13 March 2025 Agents Need a Runtime, Not a Prompt Loop An agent is no longer well described as a prompt inside a while loop. The useful abstraction owns execution around the model. 6 min read 28 February 2025 Reasoning Is Not the Only Path to Better Models Longer thinking improves maths and code. A model that solves a logic puzzle and misreads ordinary intent is not the better production model. 6 min read 9 January 2025 Rendering Is Becoming a Reconstruction Stack Sparse samples, motion data and lower-resolution frames become a larger final result. Debugging becomes layered when reconstruction sits in the middle. 6 min read 16 December 2024 Agent Reliability Is an Evaluation Problem, Not a Prompting Problem When an agent misses a step, the usual fix is a stricter prompt. The failure is more often in how completion is detected. 6 min read 29 November 2024 MCP Might Matter More Than Another Model Release A model can reason well and still be useless inside a company if it cannot reach the files, repositories and tools where work lives. 6 min read 28 October 2024 Computer Use Is the Missing Layer Between Models and Software Most integrations assume useful software exposes the right API. Much of real software never did. 6 min read 19 September 2024 Inference-Time Compute Is a New Scaling Axis o1 improves when it is allowed to spend longer on a problem. A benchmark score without a compute budget is an incomplete number. 6 min read 15 August 2024 The Final Pixel Won't Come From the Renderer Geometry, camera and scene structure stay reliable ground truth. More of final appearance is moving into learned systems. 6 min read 29 July 2024 Open Models Are Becoming Research Infrastructure Llama 3.1 gets discussed as a benchmark result. The licence terms change which experiments are possible at all. 6 min read 24 June 2024 The Model Is Becoming a Runtime Function calling, code execution and structured output turn inference into a loop. The model stops being a text generator and starts being a control layer. 6 min read 16 May 2024 Multimodality Changes the Architecture, Not Just the Interface GPT-4o is easy to read as a faster interface. Training one model end to end across text, vision and audio is an architectural change. 7 min read 20 February 2024 Long Context Is Not Memory Gemini 1.5 makes a million tokens usable. A larger working set is not a system that decides what should survive the session. 6 min read