How LLM Evals Work, From Dataset to Score

LLM evaluation is not one thing - it's a pipeline of datasets, scorers, and tradeoffs. Here's how evals actually work under the hood, and where the numbers mislead you.

Cover art for How LLM Evals Work, From Dataset to Score

GPT-4 can guess a missing answer option from MMLU questions at a 57% exact-match rate - not because it reasoned through the problem, but because the question was likely in its training data. That single finding, from a 2023 ACL paper, tells you more about how LLM evals work than any leaderboard ever will.

Understanding how LLM evals work means understanding three things: what runs, what gets scored, and why the score can be misleading even when the eval is working exactly as designed.

What an eval pipeline actually does

LLM evaluation has three distinct components: a test dataset - a curated collection of representative inputs covering typical cases, edge cases, and adversarial inputs; a success criterion - an explicit definition of what correct output looks like; and an evaluator - the mechanism that scores outputs against those criteria, which can be a script, a human reviewer, or another AI model.

Automated LLM evaluation workflows have two parts. First, you need data: synthetic examples, curated test cases, or real logs from your app. Second, you need a scoring method - which might return a pass/fail, a label, or a numerical score.

Run it in sequence and you get: feed the test inputs → generate responses → compare to a reference or rubric → compute a score. The part that trips people up is step three. "Compare to a reference" sounds simple. It isn't.

The three ways to score a response - and when each one breaks

Statistical scorers compare model outputs to a reference using surface-level patterns. Common examples include BLEU, ROUGE, METEOR, and edit distance. ROUGE measures how much of the reference content appears in the model response. These methods work best for tasks with clear references, such as translation or short summaries. However, they struggle with generative outputs where wording varies widely while still remaining correct.

Exact match - checking whether the response is identical to what's expected - is conceptually obvious but often too rigid. In open-ended scenarios, different wording can convey the same meaning.

That's why LLM-as-judge has become the dominant approach for anything open-ended. The core idea: present an LLM with the input, the application's output, and a scoring rubric, then ask it to evaluate the output. The judge model produces a score along with reasoning explaining its assessment.

This approach has become one of the most popular methods for evaluating LLM applications because it combines the nuance of human judgment with the scalability of automated evaluation.

The calibration figure people cite: LLM-as-a-judge uses a capable model to score outputs against defined criteria. OpenAI's evaluation documentation confirms that strong LLM judges achieve agreement rates of over 80% with human annotators.

What that figure doesn't show is the bias structure underneath it.

57 subjectsin the MMLU benchmarkfrom high school to expert level
~29%of MMLU items show contamination signalsper Johns Hopkins cross-check
>80%agreement with human annotatorsfrom strong LLM judges
57%exact-match rate guessing missing MMLU optionsGPT-4, per ACL 2024 paper

The bias problem inside LLM-as-judge

Research has identified position bias, where specific positions within a prompt are preferentially selected, and verbosity bias, which favors longer responses.

GPT-4, in particular, exhibits high self-preference bias - a finding that suggests GPT-4 as a judge may inadvertently reinforce its own style and policies.

The magnitude is not small. On ArenaHard, LLMs exhibit self-preferential bias: some over-rate their own answers relative to other judges, others under-rate them. On ArenaHard, this bias ranges from -38% to +90%.

The standard fix - prompting the model multiple times with different candidate orderings and aggregating results via majority voting - significantly increases computational costs. So in practice, most teams don't do it.

How public benchmarks actually score: MMLU as a worked example

Massive Multitask Language Understanding (MMLU) evaluates LLMs across 57 subjects, including elementary mathematics, US history, computer science, and law. The dataset contains over 15,000 multi-choice tasks from high school to expert level. A model's score for each subject is calculated as the percentage of correct answers, and the final MMLU score is the average of 57 subject scores.

Scoring is exact match on a letter choice. The model's score is calculated by determining the proportion of multiple-choice questions for which the model produces the precise correct letter answer. No partial credit. No rubric. The scorer is a string comparison.

That's also why HellaSwag works the same way: HellaSwag evaluates the common-sense reasoning capabilities of LLMs through sentence completion, testing whether models can select the appropriate ending from a set of four choices across 10,000 sentences.

Like MMLU, HellaSwag has saturated for frontier models at 95%+.

Leaderboard scores answer a single question: how did this base model perform on a fixed task set under controlled conditions? That answer helps narrow your model shortlist. It says very little once you add a retrieval layer, tool calls, a system prompt, user-specific context, and the actual workflow your agent has to complete.

The contamination problem is structural, not accidental

This is the part most benchmark discussions skip.

Johns Hopkins researchers cross-checked several models and benchmarks to estimate which items had been exposed to training data. On MMLU, roughly 29.1% showed contamination signals; on the Chinese benchmark C-Eval, 45.8% did.

Meta's own Llama 2 report found that 16% of MMLU items overlapped with its training data, some of them severely - with more than 80% of tokens matching.

The filtering labs do isn't airtight. GPT-3 cut anything matching 13 consecutive words, and GPT-4 raised the bar to 40-grams. But filters only fire when the text matches exactly. Reword a sentence slightly, translate it, or reshape a table, and the same problem becomes a different string that slips past the filter.

The consequence is a number that looks like reasoning but is partly recall. Standard benchmarks like MMLU and HellaSwag have been in the training data of most large models. High scores might reflect memorisation, not capability.

Unlike MMLU, BIG-Bench Hard requires chain-of-thought reasoning to score well, which makes it more predictive of real-world reasoning performance for models below the frontier tier. That's one reason teams doing serious model selection increasingly run BBH alongside MMLU rather than instead of it.

Beagle in action#ai-team, 3:02pm
The ask
'which model should we use for our support classifier - I'm looking at the MMLU scores'
Beagle drafts
reads the linked model cards, drafts a reply noting MMLU scores for structured classifiers and suggesting a task-specific eval on a sample of real support tickets
You approve
you approve the reply; the team runs a targeted eval instead of shipping on benchmark trust alone
Do this in your workspace

When to use each eval method

The decision isn't which method is best - it's which method fits the task. A practical decision rule: start with automated benchmarks to catch regressions; add task-specific metrics if your task is structured; use LLM-as-judge for instruction-following quality; reserve human eval for final validation before production.

Most fine-tuning evaluations need at least two types: one automated benchmark to catch capability regressions, and one task-specific or LLM-as-judge evaluation to measure actual task improvement.

Method Scoring Good for Breaks on
Exact match String comparison Classification, short answers Open-ended output
ROUGE / BLEU Token overlap Summarization, translation Paraphrased correct answers
LLM-as-judge Rubric + model reasoning Instruction following, tone, nuance Self-preference bias, verbosity
Human annotation Direct review Ground-truth calibration Scale, cost, speed
Public benchmarks Avg % correct (multiple choice) Model shortlisting App-specific tasks, contamination

A teammate like Beagle watching a production channel can flag when outputs diverge from the rubric a team has defined - a lightweight form of continuous eval that doesn't require running a full pipeline on every response.

Picking a model for a support triage task
Without Beagle
check MMLU scores on a leaderboard, pick the highest, ship it
With Beagle
run MMLU to shortlist; sample 200 real tickets, score with LLM-as-judge against your rubric, calibrate against 20 human-labeled examples before deciding

How LLM evals work: common questions

What does an LLM eval actually measure?

An LLM eval measures how often a model's output meets a defined success criterion on a fixed set of test inputs. What that criterion is - exact string match, token overlap, human preference, or judge-model score - determines what the number actually means. No single eval covers everything.

What is LLM-as-a-judge and how does it work?

LLM-as-a-judge presents a capable model with an input, the system output, and a scoring rubric, then asks it to score and explain the result. It scales better than human review and handles open-ended outputs well, but carries known biases: self-preference, position sensitivity, and a tendency to favor longer responses.

Why do MMLU scores keep rising if the benchmark is hard?

Two reasons: models keep improving, and contamination inflates scores over time as benchmark questions appear in training data. Johns Hopkins researchers found roughly 29% of MMLU items showing contamination signals across common models. High frontier scores on MMLU now partly reflect recall, not just reasoning.

How is an application-specific eval different from a public benchmark?

Public benchmarks test a base model on generic multiple-choice tasks under controlled conditions. An application-specific eval tests your actual system - with its system prompt, retrieval layer, tools, and real user inputs - on your definition of a correct answer. The two measure different things.

When should teams run evals in production, not just before launch?

Whenever the input distribution can shift after deployment. Real traffic exposes edge cases, adversarial inputs, and prompt drift that pre-launch test sets miss. Sampling production traffic and scoring it continuously - even at low volume - catches regressions before users do.

Or just watch me work

Point me at your website.

I will read up on your business and come back with what I would run for you. No account, no card, about a minute.

I only read what is public. Nothing is saved to your name until you say so.

Keep reading

Beagle does this work for you, in your Slack.1,000 free credits. No card.Hire Beagle