speed · spec decode · licensing

GLM-5.3-Flash on four GB10 nodes: 47.7 → 98.8 tok/s on code, with an MIT drafter

Published 28 Oct 2026

Field note · measured on 4× GB10 (DGX Spark-class) · 100 Gbps switch · n=15 per workload

On 25 October we published GLM-5.3-Flash on four GB10 (DGX Spark-class) nodes at 47.7 tok/s on code and 41.3 on prose. Two days later we found knapcio's results, published a month earlier, on the same four-node GB10 setup at roughly twice our speed (on a different, shorter probe). Their post told us something we needed to hear: we weren't getting the most out of our setup. A careful measurement of a setup that leaves half its speed on the table is still a measurement of the wrong setup. So we went back and re-examined ours, layer by layer.

Where we are now

same protocol, n=1525 Oct28 Oct
decode · code47.7 ± 2.798.8 ± 2.6 tok/s
decode · prose41.3 ± 3.073.2 ± 3.8 tok/s
aggregate · 64 users420–427264–271 (see below)

Single stream, temperature 0, delivered tokens including reasoning, 95% CI, warm-up excluded: the methodology and prompts of the original entry. One difference to know about: on 25 Oct, 28 of 30 answers hit the 1,024-token cap mid-reasoning. On 28 Oct, with NVIDIA's checkpoint and its chat template, answers finished on their own at a mean of 650 (code) and 444 (prose) tokens. Shorter answers spend proportionally more time on the prompt (about 3%), which works against the new numbers. The answers also differ in content (more answer, less capped reasoning), and we can't separate that effect out.

Thank you, knapcio

We owe this one to knapcio, who published their GLM-5.3-Flash 4× DGX Spark setup openly, and to tonyd2wild, whose runbook documents how to build it. Their write-ups showed exactly where our setup was leaving speed behind. Building on tonyd2wild's image, their setup combines NVIDIA's own NVFP4 checkpoint, 8-bit dense layers, 4-bit Marlin expert kernels, a one-shot RDMA all-reduce, and speculative decoding that checks only the guesses likely to be accepted. knapcio's own code (MIT and Apache-2.0) is now the base we build on, as its license invites, and we're grateful it's public. These four nodes have no internet access, so we built every layer from source offline. Running their software unchanged, our nodes came in about 3–7% faster per step than the published numbers, most likely from hardware and clock differences, not anything we did. The hardware was never the gap; our configuration was.

The licensing trap

The piece that adds the most speed is its drafter, the small model that guesses ahead: Inco's DFlash2, licensed CC BY-NC-ND, non-commercial. knapcio's README says so clearly. It's fine for personal use, but not for anything we'd run for a client. Check the license of every component before you build a business on a benchmark.

Red Hat publishes an MIT-licensed drafter for the same model (DSpark), and the same engine build runs it unmodified. Out of the box, though, it was slower: it guesses well, but the big model checked all nine guessed positions every step.

What we changed

What didn't help (so you can skip it)

Where we still stand, honestly

Running their full stack (with the non-commercial drafter) on our four nodes with their own probe script, a different and shorter test than our n=15 table, we measure about 70 / 112 / 140 tok/s on prose / code / JSON. With their probe script on our nodes, our setup with the MIT drafter does 64 / 98 / 128. Their drafter plus our 4-bit dense layers gives 77 / 123 / 150. Like for like, the MIT drafter costs 15–20% today; our 4-bit dense change wins back about half of that, which leaves us roughly 10% behind their full setup. Closing that gap is our next job. (For reference, their README publishes 90 / 124 on prose / code using a different, 256-token, thinking-off probe.)

The 264–271 tok/s at 64 users is lower than before for a reason: this setup is tuned for one user. With speculation off, the same four nodes serve 535 tok/s across 128 users (fixed 512-token answers, a different test). Why one config can't do both, measured.

On licenses: the drafter, the engine and knapcio's own code are MIT or Apache-2.0 (some vendored kernel files add NVIDIA's BSD-3-Clause), and NVIDIA's model checkpoint is MIT per its model card. Some patches in the setup we started from come from the build recipe credited above, whose repositories didn't declare a license when we checked; knapcio's NOTICE file flags the same open question. Rather than rely on them, we wrote our own versions from descriptions of what each patch does, then re-ran our tests. The tables above were measured on the original build. On the new build: code 98.9 ± 3.2 tok/s (was 98.8), prose 73.1 ± 3.7 (was 73.2), 64 users 258–270 (was 264–271), all n=15 results within their error bars; knapcio's probe 64 / 94–97 / 128 (was 63–64 / 97–99 / 127–128). Exams: GSM8K 247 of 250 on both, HumanEval 153 vs 154 of 164 (a one-problem difference, p = 1.0). We did not re-run the other comparisons in this note. We read licenses carefully, but we are not lawyers and this is not legal advice: check them for your own use.

The lesson: when someone posts a better number on the same hardware, treat it as a gift. It means your setup has headroom you haven't found. Read what they publish, check every license, then measure what you can add on top. We're glad knapcio posted theirs.

Someone online is faster than you on the same hardware?

The diagnostic compares your setup with the best public one for your model, flags each component's license terms (not legal advice), and ranks what closes the gap, in writing, or it's free. Rebuilds of multi-node stacks are scoped as an audit.

Book a 1-day diagnostic →

Free to read and share. Numbers are from hardware we've measured directly; your engine versions and configs will differ — measure your own, and count only delivered tokens.