Best-of-N Is an Architecture, Not a Benchmark Trick
Every frontier lab's launch post now carries the same footnote: "with parallel test-time compute." Sonnet's SWE-bench number jumps about five points with it. GPT-5-class models cut errors by double digits with it. Gemini's Deep Think nearly doubles its ARC-AGI-2 score with it. Most engineering teams read that footnote as benchmark seasoning — a way to inflate a leaderboard number that no real system would pay for — and then go back to architecting their product around one attempt from the biggest model they can afford.
That instinct is roughly two years out of date. The labs didn't add parallel sampling to their pro tiers as a marketing garnish; they added it because running N attempts behind a single answer is often the cheapest way to buy quality, and sometimes the only way. When three attempts from a cheap model plus a decent selector beat one attempt from a model that costs ten times more per token, best-of-N stops being a benchmark trick and becomes an architecture decision — one with its own cost model, its own latency profile, and its own signature failure mode. The teams treating it that way are quietly shipping better answers at lower cost than the teams still doing one-shot inference on the flagship model.
The Coverage Curve Is the Whole Argument
The empirical foundation here is simple and, once you see it, hard to unsee. Sample a model repeatedly on the same problem at nonzero temperature, and coverage — the fraction of problems where at least one attempt is correct — climbs log-linearly with the number of samples, across four orders of magnitude. The Large Language Monkeys paper made this concrete on SWE-bench Lite: a mid-tier open model solved 15.9% of issues with one attempt and 56% with 250 attempts, beating the single-attempt state of the art of 43% at the time.
Read that again with a systems hat on. The gap between one attempt and many attempts from the same model was bigger than the gap between that model and the best model in the world. Your model already knows how to solve far more problems than any single sample reveals. The capability is sitting there; one-shot inference just fails to harvest it.
The production translation is a cost comparison every team can run on their own workload:
- Vertical scaling: pay for a bigger model, get a better answer distribution per sample.
- Horizontal scaling: pay for more samples from a smaller model, get more draws from a wider search.
On reasoning-heavy benchmarks, small models with best-of-N routinely match or beat the next size class up at equal or lower total token cost — a 1.5B model scaled with sampling outperforming a 3B one-shot, a 3B outperforming a 7B. The crossover isn't universal: if your task's single-shot success rate is either near zero (no amount of sampling saves you) or near one (sampling buys nothing), vertical scaling wins. Best-of-N earns its keep in the middle band, where the model succeeds sometimes and you need it to succeed reliably.
And the latency story is better than intuition suggests. The attempts run concurrently, so wall-clock latency is max-of-N plus the judge pass, not sum-of-N. With provider batch pricing and shared prompt-prefix caching — the N attempts share the same input tokens, which most APIs now bill once for cached prefixes — the marginal cost of attempts two through five is mostly output tokens. For an agentic task where a single attempt takes ninety seconds, five parallel attempts take roughly ninety-five.
The Judge Is Your Quality Ceiling
Here is where the benchmark framing and the production framing part ways completely. Benchmarks report coverage — pass@k, "did any attempt succeed" — because the benchmark harness knows the right answer. Production doesn't. You have to pick one attempt to show the user, and the picker, not the generator, becomes the component that bounds your quality.
This is the part of best-of-N that is genuinely hard, and it splits cleanly by domain:
- Verifiable domains are a gift. Code that must pass tests, SQL that must execute, math with a checkable answer, structured output with a schema — here the verifier is deterministic and the coverage curve is fully harvestable. If you can execute the candidate, best-of-N is close to free quality.
- Semi-verifiable domains have cheap partial filters: does it compile, does it parse, does it satisfy lint rules, does it cite documents that exist. These filters don't pick the best candidate but they cheaply kill the worst ones, which shifts the judge's job from "find the needle" to "rank the plausible."
- Unverifiable domains — summaries, plans, emails, analyses — leave you with a model judging models, and this is where teams get hurt.
The research on LLM-as-judge reliability should temper anyone's enthusiasm. Judges exhibit position bias (preferring whichever candidate appears first or second, regardless of content), verbosity bias (longer answer wins), and self-preference (a judge favors outputs from its own model family). Worse, a judge can be highly reproducible — agreement above 0.95 with itself across runs — while remaining badly invalid, consistently picking the wrong answer for the same biased reason. Reproducibility feels like reliability in a dashboard. It isn't.
The Large Language Monkeys result has a second half that gets quoted far less than the first: in domains without automatic verifiers, majority voting and reward models plateau after a few hundred samples. Coverage keeps climbing; harvested accuracy flatlines. The gap between those two curves is exactly the judge's failure rate, and it's why "just crank N" is not a strategy. Past a modest N, you are no longer buying accuracy — you are buying candidates your judge cannot distinguish.
So the engineering effort in a best-of-N system goes where the leverage is: the selector. Practical moves, in rough order of value per unit of effort:
- Debias mechanically before improving the model. Randomize candidate order per comparison, or evaluate both orders and throw out inconsistent verdicts. Strip length cues by normalizing formatting. Use a judge from a different model family than the generator.
- Prefer pairwise tournaments over absolute scoring. Asking a judge "which of these two is better" is more reliable than "score this 1–10," and a knockout bracket over N candidates costs only N−1 comparisons.
- Decompose the verdict. Multi-agent verification work suggests a panel of narrow "aspect verifiers" — is it factually consistent with the context, does it follow the required format, does it address all parts of the request — each returning a binary approval, beats one generalist judge rendering a holistic verdict. Narrow questions are easier to answer and easier to calibrate.
- Calibrate against a gold set before trusting anything. A judge prompt that looks reasonable on three examples will fail in production in ways you won't see until users do. Measure judge-vs-human agreement on a hundred labeled cases; treat that agreement rate as your system's quality ceiling, because it is.
- https://arxiv.org/abs/2407.21787
- https://arxiv.org/pdf/2502.20379
- https://arxiv.org/html/2502.11027v3
- https://arxiv.org/pdf/2412.15287
- https://arxiv.org/html/2509.09864v1
- https://arxiv.org/pdf/2505.19634
- https://arxiv.org/html/2502.05234v2
- https://wandb.ai/site/articles/exploring-llm-as-a-judge/
- https://www.adaline.ai/blog/llm-as-a-judge-reliability-bias
