Repository navigation
feat(evaluation): repurpose /evaluation as recipe-comparison table - #3
Merged
Merged
Conversation
The upstream /evaluation tab is a chart of gsm8k/mmlu accuracy across
configs — useful for "did this quantization hurt accuracy" regression
work that SemiAnalysis runs. Our team isn't doing that. We're doing
recipe selection: given a deployment (model × hw × precision), which
runtime knob combination ships the most throughput at acceptable
quality?
So /evaluation now renders a table with rows = (model × hw × precision
× isl/osl × conc) × variant, where each "variant" is one row's
techniques jsonb. Within a (model, hw, precision, isl/osl, conc) group,
the row with techniques={} (or spec_method='none') is the baseline;
siblings show speedup = variant.tput / baseline.tput. Accuracy is
joined from eval_results at the (model, hw, framework, precision) key
since lm-eval is run once per config, not per conc.
Columns: HW · Precision · Seq · Conc · Variant · Speedup · tput/GPU ·
TPOT · Accept Rate · Accuracy (with pp delta) · Run link.
Tab label renamed "Accuracy Evals" → "Recipe Compare" (tab-nav.tsx,
landing-page.tsx, tab-meta.ts). The old EvaluationContext / chart
components are left in place for now — they're orphaned and
tree-shakeable; cleanup follow-up.
Tests: 8 unit tests for buildRecipeRows covering baseline detection,
speedup math, missing-baseline fallback, group keying, accuracy join,
and acceptance rate read-through. All pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upstream's
/evaluationtab is a gsm8k/mmlu accuracy chart — useful for "did this quantization hurt accuracy" regression work that SemiAnalysis runs. Our team isn't doing that. We're doing recipe selection: given a deployment, which runtime knob combination ships the most throughput at acceptable quality?So
/evaluationis now a recipe-comparison table. Each row is(deployment context) × (technique variant). Within a(model × hw × precision × isl/osl × conc)group, the row whosetechniquesis empty (orspec_method='none') is the baseline; siblings show speedup = variant.tput / baseline.tput and TPOT-ratio. Accuracy is joined fromeval_resultsat the(model, hw, framework, precision)level since lm-eval runs once per config, not per conc.What you'll see at https://inference-benchmark.eveningcafe.org/evaluation
baseline/MTP×4/MTP×6/Eagle/ etc. (derived fromtechniques)variant.tput / baseline.tput— green if >1.01×, red if <0.99×, "—" if no baseline in the groupmedian_acceptance_ratefrom the variant's metrics (spec-dec only)em_strictwithppdelta vs baseline; "—" if no eval row joinedDefault sort: rows grouped together, baseline first, then by speedup descending within group.
Notes
tab-nav.tsx,landing-page.tsx,tab-meta.ts).EvaluationContext/ChartDisplay/BarChartD3components are left in place — they're now orphaned (no imports) and tree-shaken. Cleanup follow-up.spec_method=nonebaseline), every row showsSpeedup = —. As soon as we ingest a no-MTP baseline run, the speedup column lights up.Test plan
pnpm typecheckcleanpnpm test:unit— 8 new unit tests forbuildRecipeRowsall passpnpm lint && pnpm fmtclean/evaluation, confirm gemma4 rows show up withMTP×4/MTP×6variants, accept-rate column populated, accuracy column empty (no eval rows for this run yet).🤖 Generated with Claude Code