Four models, fourteen MMLU-Pro subjects, one DGX Spark

dgx-spark Qwen3.6-27BQwen3.6-35B-A3BMuse-Glimmer-30Bgpt-oss-120b

Every model comparison on this site so far has ended with the same caveat: one aggregate number ranks models on one dimension and should not be mistaken for a verdict. This post is the attempt to stop hand-waving at that and measure it.

Four models, fourteen subjects, 200 questions in each — 11,200 questions and 35.8 hours of GPU time, with accuracy and throughput recorded for every one of the 56 cells. The three-model comparison that preceded this used 20 questions per subject, and three of its four per-subject findings did not survive being re-measured at ten times the sample.

The short version: the aggregate ranking is a decent guide in about ten subjects, misleading in three, and exactly backwards in one.

The aggregate, briefly

Model MMLU-Pro 95% CI Subjects won
Qwen3.6-27B 82.54% [81.13, 83.95] 9
Qwen3.6-35B-A3B 80.79% [79.33, 82.25] 4
Muse Glimmer 30B 74.93% [73.32, 76.54] 0
gpt-oss-120b 74.25% [72.63, 75.87] 1

Two tiers, six to eight points apart, with every between-tier gap significant and neither within-tier gap significant. That much is covered elsewhere.

The column that does not appear in an aggregate table is the last one. Muse Glimmer and gpt-oss are statistically tied overall — and gpt-oss wins a subject outright while Muse Glimmer wins none. Two models with the same average are not interchangeable.

Every cell

Accuracy, 200 questions per cell. Bold is the best model in that row.

Subject (accuracy %) 27B35B-A3BMuse Glimmergpt-oss Spread
law 75.5 69.5 49.0 52.5 26.5
history 79.5 76.5 66.5 60.0 19.5
philosophy 85.5 82.0 75.0 67.0 18.5
other 78.0 79.0 67.5 64.5 14.5
engineering 60.0 52.0 62.0 63.5 11.5
economics 91.0 88.5 80.5 83.5 10.5
computer science 87.5 88.0 78.0 82.5 10.0
physics 88.5 87.5 80.0 82.0 8.5
biology 91.0 90.0 89.0 83.5 7.5
health 76.5 79.0 75.0 71.5 7.5
psychology 84.5 83.5 78.0 77.5 7.0
business 86.0 86.0 83.0 81.5 4.5
chemistry 81.5 82.0 78.0 80.5 4.0
math 90.5 87.5 87.5 89.5 3.0
MMLU-Pro accuracy by subject, 200 questions per cell, sorted by spread. Rendered from data/subject-sweep/ at build time.

Sorted by spread, because spread turns out to be the most informative column in the table.

Which subjects can tell models apart at all

At the bottom of that table — math, chemistry, business — all four models land within three to four and a half points of each other. Given ±3 points of sampling error per cell, those subjects cannot distinguish these models. A benchmark suite made of them would report four equivalent systems.

At the top, law separates them by 26.5 points and history by 19.5.

The pattern is not subtle: the three widest spreads are law, history and philosophy, and the three narrowest are math, chemistry and business. Recall- and-judgement subjects discriminate; procedural ones do not. If you are choosing a model, the humanities rows carry nearly all the signal, even if your workload is technical — not because you need a model that knows case law, but because those are the rows where the models are actually different.

Engineering runs backwards

One subject inverts the aggregate completely:

27B 35B-A3B Muse Glimmer gpt-oss
Overall 82.5 80.8 74.9 74.2
Engineering 60.0 52.0 62.0 63.5

Both bottom-tier models beat both top-tier ones. The 35B-A3B — second overall, and the model I have been recommending on this machine — finishes last by ten points, at 52.0. That is its worst subject by 17.5 points against its own next-worst, and the only place on this box where the Qwens are displaced at all.

Engineering is also the hardest subject in the set by mean score (59.4), with law second (61.6). Whatever it is measuring, it is not what the other thirteen subjects measure.

I do not have an explanation, and I want to be clear that I am reporting it rather than accounting for it. It reproduces across 200 questions with a ±3 point error bar, so it is not noise — but a single subject on a single benchmark is a lead, not a conclusion. If your work is engineering-shaped, the actionable version is: do not take the aggregate ranking on faith, and measure on your own tasks.

The inversion survives a second measurement; the tie-break does not. Re-run at reasoning_effort: high (see below), gpt-oss scores 62.0 on engineering rather than 63.5 — which ties Muse Glimmer exactly and gives up the outright win. Both bottom-tier models still beat both top-tier ones, by 2 and 10 points. So the finding that matters here holds at two different effort settings, while the “gpt-oss wins one subject” line in the aggregate table is specific to its shipped default and would become a shared win at high. That is a 1.5-point move inside a ±3-point band, so it is not evidence that effort hurts engineering — it is a reminder that ranking models by who came first in a row is fragile in a way that reporting the gap is not.

Now the speed

Throughput per subject, in tokens per second.

These are batched figures — lm-eval runs 8 concurrent requests — and are not comparable to the single-stream numbers elsewhere on this site. The 35B-A3B reads 136 tok/s here and 50.2 tok/s single-stream; both are correct, they measure different things. Use these to compare subjects within a model, and the single-stream numbers to decide what interactive use feels like.

Subject (tok/s) 27B35B-A3BMuse Glimmergpt-oss
biology 107.1 135.6 95.1 98.3
business 111.5 140.0 124.5 107.1
chemistry 109.8 137.7 122.7 108.2
computer science 107.5 133.8 97.0 100.1
economics 108.0 138.2 98.4 101.8
engineering 111.2 140.1 122.3 110.0
health 110.0 138.5 95.5 103.7
history 100.5 132.3 59.1 105.0
law 103.7 137.4 65.2 103.8
math 108.1 136.5 118.5 103.3
other 109.6 136.1 85.4 103.0
philosophy 110.1 139.4 98.4 107.0
physics 111.8 139.0 113.3 106.5
psychology 108.0 136.7 93.4 102.3
Batched throughput (8 concurrent requests) by subject. Not comparable to single-stream figures elsewhere on this site — and see the caveat immediately below.

Three of the four models look flat. The 27B stays inside 100–112 across every subject, the 35B inside 132–140, gpt-oss inside 98–110. Muse Glimmer swings from 59.1 to 124.5 — a factor of 2.1.

Before drawing anything from that, the table needs a correction that I nearly published without.

The speed table is partly measuring answer length

The harness computes throughput as generated tokens divided by elapsed time — and elapsed time includes prefill, while generated tokens do not include the prompt. So a subject where the model writes short answers to long questions reports low throughput even if the model is decoding at its usual rate.

That is not a small effect here. Across all 56 cells, how many tokens a model writes predicts its measured throughput at r = +0.68 — a stronger relationship than anything about the subject matter itself.

Model Answer length range Measured tok/s range
Qwen3.6-27B 1,688–2,770 (1.6×) 1.11×
Qwen3.6-35B-A3B 1,875–2,790 (1.5×) 1.06×
gpt-oss-120b 226–1,409 (6.2×) 1.12×
Muse Glimmer 30B 69–1,806 (26×) 2.10×

The Qwens look flat partly because they are stable decoders and partly because they write consistent-length answers everywhere. Muse Glimmer swings because it does not: on history it writes 69 tokens per question against a 2,222-token prompt, so 97% of the work in that cell is prefill and the “generation throughput” figure is close to meaningless.

So the honest reading of the speed table is: compare rows within the Qwen columns freely, and treat Muse Glimmer’s history and law cells as artifacts rather than measurements. I am leaving the table in with this caveat rather than deleting it, because the underlying numbers are real and the confound is worth showing.

Speculative decoding really is subject-dependent

The claim survives, but it needs evidence that is not the throughput column. Draft acceptance is recorded directly and is not affected by prefill at all:

Subject AcceptanceAnswer lengthAccuracy
law 0.199 217 49.0
psychology 0.202 514 78.0
other 0.206 311 67.5
health 0.206 585 75.0
philosophy 0.215 637 75.0
biology 0.224 697 89.0
computer science 0.254 622 78.0
history 0.260 69 66.5
economics 0.261 182 80.5
engineering 0.277 1806 62.0
physics 0.283 722 80.0
chemistry 0.291 805 78.0
math 0.298 652 87.5
business 0.316 742 83.0
Muse Glimmer 30B: DFlash draft acceptance, mean answer length in tokens, and accuracy, by subject. Sorted by acceptance.

Acceptance ranges from 0.199 on law to 0.316 on business — a 1.6× spread, measured directly, with no prefill in the denominator. That is the mechanism behaving as designed: speculative decoding buys speed by having a small drafter guess tokens the full model then verifies, so its payoff is a direct function of how predictable the text is. Legal reasoning is less predictable than business prose, the drafter misses more, and the machine does more full weight sweeps per token.

Excluding history — the one cell the metric mangles — acceptance and throughput correlate at r = +0.88, which is what the mechanism predicts.

The consequence is worth stating plainly: a headline speculative-decoding speedup is an average over content, and your content may not be average. The 23.3 tok/s in the day-one post is real, and on law-shaped text the drafter is landing a third fewer guesses.

There is a weaker second pattern: acceptance also tracks accuracy, at r = +0.39. That is not significant at fourteen points — the threshold is about 0.53 — so it is a hypothesis, not a finding. The appealing version is that a drafter fails to predict exactly the material the model handles poorly, which would make acceptance a cheap proxy for domain confidence. Appealing ideas of that shape need their own experiment, and this is not it.

How to use this

If you want one model and no further thought: the 27B. It wins nine of fourteen subjects and is never worse than third.

If you want speed and can accept about two points: the 35B-A3B, which is 2.9× faster single-stream and top-tier in thirteen subjects — with engineering as the one place it fails badly enough to matter.

If your workload is law-, history- or philosophy-shaped: the choice matters more than anywhere else in this table, and it is the 27B by 6 to 26 points.

If your workload is math, chemistry or business: pick on speed. These subjects cannot tell the four models apart, so the fastest adequate model wins by default.

If your workload is engineering-shaped: measure it yourself. This table’s aggregate ordering is inverted there, and I would not extrapolate from one subject on one benchmark to your actual tasks.

What this does not settle

Every model is at its own default thinking level, and the defaults differ. gpt-oss-120b ships reasoning_effort: medium; Muse Glimmer ships reasoning_strength: high. So the two models tied on aggregate were measured at different points on their own effort curves — one mid-range, one at its ceiling.

For gpt-oss that is now measured rather than assumed. The same 2,800 questions, same harness, same everything, with the chat template’s effort default changed from medium to high:

medium (default) high Δ
MMLU-Pro 74.25% 74.86% +0.61 pts (95% CI ±2.27)
Tokens per question 524 525 +0.1%
Total runtime 3.87 h 3.84 h −0.8%

Turning the effort knob to maximum bought one extra token per question and finished slightly faster. The accuracy difference is a third of its own confidence interval, and no subject moved outside the ±3-point noise band — including math and physics, which were the ones I expected to move if anything did.

This makes the tie in the aggregate table more robust rather than less: gpt-oss at its maximum effort setting scores 74.86 against Muse Glimmer’s 74.93 at its default high, so the two models are indistinguishable at matched settings, not just at mismatched ones.

Muse Glimmer’s knob, measured the same way, does plenty — and it makes the gpt-oss result interpretable. Muse Glimmer ships reasoning_strength: high; here are all three settings, same 2,800 questions each:

low medium high (shipped default)
MMLU-Pro 77.79% 78.11% 74.93%
Tokens per question 339 501 612
Wall clock 2.68 h 3.72 h 4.50 h

Its default setting is the worst of the three on both axes at once. Medium scores +3.18 points above high and low scores +2.86, both outside the ±2.27 interval, while low finishes in 40% less wall clock on 44% fewer tokens. Medium and low are indistinguishable from each other (+0.32, well inside the band), so the practical reading is: anything below the default is better, and low is the cheapest way to get there.

For a model positioned for always-on local agents, that is worth acting on — one line in the chat template buys better answers for roughly half the tokens.

And it settles what gpt-oss’s flat result meant. Same harness, same benchmark, same greedy decoding, same five-shot prompting, same machine, same week:

Model Token range across its full effort scale
Muse Glimmer 30B −44.5%
gpt-oss-120b 0.3%

No single explanation covers both. Five-shot anchoring and greedy decoding would have flattened Muse Glimmer’s knob too, and did not. The most likely reading is that gpt-oss’s reasoning_effort is not reaching the model in this vLLM build, with Muse Glimmer serving as the positive control that shows the harness detects the effect when it exists. A dedicated experiment crossing effort against shots and sampling is running to confirm that, and will get its own post.

One caveat I cannot close from this data: the default runs predate per-question logging, so I can measure answer-extraction failure on the medium and low runs (1.2% for Muse Glimmer) but have no figure for the high runs. If high’s longer answers trip the extraction regex more often, some of that 3-point gap is mechanical rather than a real difference in knowledge. That is a re-run, not a reinterpretation.

The questions are public. Any of these models may have seen them in training, and there is no way to check from outside. This measures standing on a shared yardstick, not absolute capability — which is why every model here answered identical questions in identical order rather than being compared via published model-card figures.

Extraction failures are invisible. A model that knows an answer but phrases it unrecognisably is scored wrong, and these runs did not log per-question output, so I cannot report how often that hit each model. Muse Glimmer’s 69 tokens per question on history — against 1,806 on engineering — is exactly the shape that would hide such a problem, and I cannot currently rule it out. Later runs log samples; these do not.

±3 points per cell. At 200 questions a subject carries roughly three points of sampling error at one standard error. Treat single-point differences within a row as nothing. The 26.5-point and 19.5-point spreads are real; the 3.0-point one is not.

The throughput metric has a known flaw, described above: it divides generated tokens by elapsed time that includes prefill, so short-answer subjects under-report. It is fine for comparing models with similar answer lengths and unreliable for Muse Glimmer’s shortest cells. A cleaner per-subject speed comparison would time decode separately from prefill, which this harness does not currently do — that is a fix for the next revision, not a reinterpretation of these numbers.

One machine, one configuration each. Both Qwens run MTP speculative decoding, Muse Glimmer runs DFlash at depth 15, gpt-oss runs none — its checkpoint contains no draft heads.

Total run time

Arm What ran Questions Tokens generated Machine time
Qwen3.6-27B 14 subjects · 3,072-token cap 2,800 5,807,615 14.9 h
Qwen3.6-35B-A3B 14 subjects · 3,072-token cap 2,800 6,180,133 12.5 h
Muse Glimmer 30B 14 subjects · 3,072-token cap 2,800 1,712,298 4.5 h
gpt-oss-120b 14 subjects · 3,072-token cap 2,800 1,466,513 3.9 h
Total 11,200 15,166,559 35.8 h
Machine time for the four sweeps behind this post, summed from data/subject-sweep/. Scoring time only: it excludes model loading and the rest periods between subjects.

Thirty-six hours for 11,200 questions, on one DGX Spark running eight requests at a time.

Where it goes is not where you would guess. gpt-oss-120b is the largest model here at 117B parameters and it swept fourteen subjects in 3.9 hours; Qwen3.6-27B is a quarter its size and took 14.9. The difference is not speed, it is verbosity — gpt-oss wrote 1.5 million tokens across the sweep and Qwen3.6-27B wrote 5.8 million. A benchmark’s cost tracks how much a model says, not how big it is.

That ratio is why the sample size is 200 questions per subject rather than the full 12,032-question set. Every model measured on that would be roughly sixty times these figures — Qwen3.6-27B alone would run for five weeks.

Setup