The benchmark matrix: runs down, benchmarks across, best score highlighted.
What you can score
Scoring a run requires it to have been exported.
--then export at submission time saves you
remembering.
Which benchmarks are available
gsm8k, math, humaneval, mmlu, ceval, ifeval, plus the RTL packs. Anything
published as a benchmark pack appears here too.
Those axes are chosen deliberately — math, code, knowledge, Chinese, instruction following. Post-
training reliably improves one and quietly damages another, and running several is what makes that
visible before it reaches production rather than after.
Common options
Both runners produce the same score contract, so the same benchmark is directly comparable
whichever ran it. The choice of runner does not distort the number.
Score every run automatically
Running it by hand is fine once. Making it happen on every run is what stops a regression reaching production:eval: block in your method’s template.
Reading the matrix
Scores are ingested idempotently: re-reporting the same run and benchmark updates the row rather than adding a second one. Each metric carries a declared direction, so the comparison view knows which way is better without guessing. Where a benchmark declares more than one metric, the difference between them is often the useful part — GSM8K’s strict and flexible matches diverging means the model can do the arithmetic but is not formatting the answer as asked.Scoring outside the platform
When the harness cannot run here — a licensed tool, a physical test rig — report the numbers back instead:create returns a run id; submit reports the score file against it. --train-run is what lets
the evaluation gate and the model version accept these scores — without it they are recorded but
not authoritative.
They enter the same matrix, labelled as externally produced.
Confirm it worked
Next
Write a benchmark pack
Declare your own evaluation set: what to run, and which numbers to read.
Rubrics
Score what a rule cannot, with an LLM judge against a written standard.