Files
Karti Tripathi 006feee0f7
CI / verify (push) Successful in 24s
CI / deploy (push) Failing after 1m14s
Lumbridge Bench
2026-08-04 00:44:07 -07:00

143 lines
5.4 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const dynamic = "force-static";
export const metadata = {
title: "Method — Lumbridge Bench",
description:
"How these numbers are produced, and what they do and do not mean.",
};
function Section({
n,
title,
children,
}: {
n: string;
title: string;
children: React.ReactNode;
}) {
return (
<section className="border-t border-rule py-10">
<div className="grid gap-6 md:grid-cols-[auto_1fr] md:gap-12">
<div className="label pt-1 md:w-16">{n}</div>
<div>
<h2 className="font-display mb-4 text-2xl">{title}</h2>
<div className="max-w-2xl space-y-4 text-xs leading-relaxed text-dim">
{children}
</div>
</div>
</div>
</section>
);
}
export default function MethodPage() {
return (
<main className="mx-auto max-w-5xl px-6 py-14">
<div className="rise mb-10 max-w-2xl">
<h1 className="font-display text-4xl leading-tight sm:text-5xl">
Method
</h1>
<p className="mt-5 text-sm leading-relaxed text-dim">
What these numbers are, how they are produced, and the part most
leaderboards skip what they cannot tell you.
</p>
</div>
<Section n="01" title="A target is not a model">
<p>
Every card measures a{" "}
<span className="text-ink">
model × host × quantization × serving config × checkpoint
</span>
, not a model name. On unified-memory hardware the serving flags move
throughput more than swapping the model does disabling CUDA graphs,
or capping memory utilization at 55%, changes the answer by more than
the difference between two model families.
</p>
<p>
So the flags are recorded from the live server on every run and shown
on the card. Two rows are only comparable if their configurations
match.
</p>
</Section>
<Section n="02" title="Two tiers, and only one is a ranking">
<p>
<span className="text-signal">Signal</span> tasks are private, built
from work we actually do. They are the measurement.
</p>
<p>
<span className="text-reference">Reference</span> tasks are public
benchmarks run unmodified. They exist to calibrate the harness, not to
rank models: if our number lands far from the published value, our
harness is broken. Public benchmarks have been in training data for
years, and a high reference score is not evidence of much.
</p>
<p>
A bench made only of private tasks would be unfalsifiable no reader
could distinguish a bad model from a broken harness. That is what the
reference tier is for.
</p>
</Section>
<Section n="03" title="Why the private set stays private">
<p>
The usual reason given is confidentiality. The real reason is
contamination: a published test set gets scraped, trained on, and
stops measuring capability. That is how MMLU, GSM8K and HumanEval
stopped being informative.
</p>
<p>
Samples carry embedded canary strings, so if a future model reproduces
them we can demonstrate contamination rather than suspect it.
</p>
</Section>
<Section n="04" title="Performance is measured, not quoted">
<p>
Each run drives real concurrent load at the serving endpoint and
records time-to-first-token, inter-token latency, per-stream decode
rate, and aggregate throughput at several concurrency levels.
</p>
<p>
Two details do most of the work. Every request carries a unique prefix
so <span className="text-ink">prefix caching</span> cannot make
prefill free and inflate the result. And output length is pinned, so
concurrency levels finish at identical token counts and remain
comparable. Without both, the numbers look considerably better and
mean nothing.
</p>
<p>
Single-stream and aggregate figures are both reported because they
disagree. On our hardware, throughput rises roughly 12× from one
stream to thirty-two while per-stream decode falls to a third batch
serving and interactive use want opposite configurations.
</p>
</Section>
<Section n="05" title="What a capped run means">
<p>
Long reference datasets against a slow local model take hours, so some
runs are capped at a sample limit. When that happens the cap is
recorded in the result and displayed on the card. A capped score is
not comparable to a full-dataset score and is never presented as one.
</p>
</Section>
<Section n="06" title="Known limits">
<p>
Single hardware sample per host no variance across identical
machines. Perf runs are single-shot rather than averaged over repeats,
so treat small differences between runs as noise; the run-to-run
spread on aggregate throughput is meaningful.
</p>
<p>
Rubric-graded samples depend on a judge model, which drifts as that
model changes. Deterministic scorers are preferred wherever the
property can be checked mechanically.
</p>
</Section>
</main>
);
}