Mia's 4-Spark recipe, version 1104, commit 80be4d6: GLM-5.3-Flash
4x NVIDIA GB10 boxes (DGX Spark class), tensor parallel 4 over a switchless CX7 RDMA ring, two paths per cable (109.2 to 109.4 Gb/s per path, measured before each of the two sessions): 2x ASUS Ascent GX10, 1x Gigabyte AI TOP ATOM, 1x Lenovo ThinkStation PGX. All four run driver 580.178.04 and kernel 7.0.0-1019-nvidia, GPU clock capped at 2200 MHz.

No game rank yet. Two preview races are shown below, with their raw files. This page shows Speed v2 and Quality v2, every number with its raw files and exact command. How the game test works.
How fast it runs
| Measurement | Result |
|---|---|
| Decode | 65.4 tok/s |
| Words per second | 47.0 words/s |
| Characters per second | 306.2 chars/s |
| Decode, code prompt | 64.1 tok/s |
| Decode, prose prompt | 66.6 tok/s |
| Spread of the decode runs (CV) | 12.1 % |
| Spread of the code runs (CV) | 2.4 % |
| Spread of the prose runs (CV) | 12.1 % |
| Decode, window 1 | 68.8 tok/s |
| Prefill at 2K | 1595.3 tok/s |
| Prefill at 8K | 1599.4 tok/s |
| Prefill at 32K | 1908.2 tok/s |
| Time to first token at 2K | 1.3 s |
| Time to first token at 8K | 5.1 s |
| Time to first token at 32K | 17.2 s |
| Draft acceptance rate | 57.3 % |
| Mean accepted length | 2.4 tokens |
| 1 request at once (total) | 59.0 tok/s |
| 2 at once (total) | 77.2 tok/s |
| 4 at once (total) | 95.1 tok/s |
| 8 at once (total) | 120.4 tok/s |
| 1 request at once (per request) | 59.0 tok/s |
| 2 at once (per request) | 38.9 tok/s |
| 4 at once (per request) | 25.1 tok/s |
| 8 at once (per request) | 15.7 tok/s |
| Server slots (from the recipe) | 8 slots |
| Long answer, wall time | 100.6 s |
Long prompts
| Prompt length | Prefill | Time to first token | Decode, code prompt | Decode, prose prompt |
|---|---|---|---|---|
| 16K tokens | 1428.4 tok/s | 11.5 s | 60.4 tok/s | 65.4 tok/s |
| 32K tokens | 1631.5 tok/s | 20.1 s | 81.7 tok/s | 61.7 tok/s |
| 64K tokens | 1824.3 tok/s | 35.9 s | 60.3 tok/s | 61.9 tok/s |
| 128K tokens | 1827.6 tok/s | 71.7 s | 58.8 tok/s | 59.6 tok/s |
Method: code+prose; 2 run(s) each; 512 tokens; 1 warm-up(s); median; context steps: prompts of exactly 16K, 32K, 64K and 128K tokens (a filler log first, the code or prose task prompt last), 2 runs per step, 512 output tokens; decode = tokens after the first / time after the first token; prefill = prompt tokens / time to first token of the same request, median over its requests; requests at once: C1,C2,C4,C8 at once; 2 rounds each; 512 tokens per request; prose prompt; total = all tokens / wall time, per request = tokens / end-to-end time; median over the rounds. Measured 2026-11-11. Raw files: speed result · speed contract · log · long answer.
Requests at once: the server has 8 slots (from the author's recipe). The speed test ran with Mia's recipe, version 1104 (MiaAI-Lab/GLM-5.3-Flash-DGX-Sparks-1104), at its head commit 80be4d6 of Nov 11, 2026 (121 patches). The engine is TensorFold's native engine in the state of Ash Hart's repository at commit f350cd3e (Oct 29, 2026, Zig 0.17.0) plus the recipe's 121 patches, built into the image by the recipe's own start script (image tensorfold-glm53-spark:4835fc852d34, the image tag that the recipe's README names, line 407), tensor parallel over four boxes in a switchless CX7 ring (RDMA 109.2 to 109.4 Gb/s per path before the two sessions), DFlash2 drafts and vision on as the recipe sets them, a context window of 1,048,576 tokens and 8 requests at once (PARALLEL=8 in the recipe's served configuration, README lines 62 and 178; the script default is 4). I started it with the recipe's switchless starter (./start-tp4-switchless.sh) and its served configuration, with top-k 20 (SERVE_EXTRA_ARGS='--top-k 20', which the recipe sets for its served pair, README line 222), and lowered nothing. The memory settings are the recipe's defaults for four GB10 boxes (memory reserve 6.5 GiB, cache first on, prompt cache 8 GiB; README lines 379 and 469, scripts/config.sh lines 211 and 217): the server's start line shows 16,392 pages and a prompt cache of 8.0 GiB on each box, the numbers the README gives for these defaults (lines 380 and 396). The name 4bpw is the name of the checkpoint repository; the served weights are 4-bit experts with the dense layers and the head in q8 (server start log). Sampling is the model card's plus top-k 20, the same with thinking on and off: temperature 1.0, top_p 0.95, top_k 20, seed 42; Thinking off (the request flag for no thinking); no cached tokens in the 61 requests that were checked. The headline 65.4 tok/s is the mean of the code prompt (64.1) and the prose prompt (66.6), medians of two runs each (spread 2.4 % and 12.1 %). Drafts were accepted at a rate of 57.3 % (1,177 of 2,054 drafted tokens), 2.4 tokens per step on average. The server has 8 slots, so the four concurrency levels (1, 2, 4 and 8 at once) are all inside its slot count. The long answer ended after 9,219 tokens with the reason "stop", not at a limit, after 100.6 s.
Long prompts (16K to 128K). No error found in the prefill. 12 of 16 context requests include a 2.2 to 2.5 s queue wait (16K 3 of 4, 32K 3 of 4, 64K 2 of 4, 128K 4 of 4). It weighs most at 16K.
Decode, code prompt, at 32K: the 81.7 tok/s in the long-prompt table is the mean of two runs that lie far apart, 102.49 and 60.98 tok/s. The result file marks this step as noisy. The other context steps are medians of two close runs.
Differences from the author's setup, stated openly. (1) The checkpoint and the drafter were already on my disk, so the start script reads them from there (MODEL_SOURCE=local, the folders of the pinned revisions) instead of downloading them. (2) Memory setting of my boxes: the engine computes its memory budget from the memory that the kernel reports as available, and my boxes carry a protection setting (vm.min_free_kbytes = 1,048,576) that lowers that number. A first start with it showed 16,110 pages instead of the recipe's 16,392. Before the two sessions on this page I set vm.min_free_kbytes to the kernel's own default (45,172) on all four boxes, at runtime only (the equality check before the run shows it); the start line of each session then showed 16,392 pages. The recipe does not set this value. Nothing else of the recipe's settings was changed, and the numbers of the first start are not on this page.
The load guard (a sample every half second) watches the head box only and repeated 2 of its 38 steps: the first code run at 64K context, because the apt package-manager check used up to 100.1 % of one core for 4 samples in a row, and the first prose run at 64K, because the fwupd firmware service used up to 100.0 % for 2 samples in a row. Both were run again after 5 seconds of quiet. In two kept steps a peak above 25 % was recorded (kswapd0 at 28.0 % in the first round of the 4-at-once step, and a firmware query, mstflint, at 66.0 % in the kept try of the 64K code step) that did not last two samples in a row, so the guard did not repeat them. The quiet check (one sample every 10 seconds, 117 samples) listed a foreign process above 25 % of one core in 6 samples, up to 150.0 % (package-manager and firmware queries). The 10-second load files of all four boxes (417 samples in all) show a foreign process above 25 % in 4 samples (27.7 %, 31.4 %, 43.1 % and 48.0 %: two firmware queries, the kernel's memory-compaction thread and the Docker daemon); the guard does not watch the other three boxes. The files behind these numbers (the quiet-check file, the guard's sample file and the load files of the four boxes) are not published; see the note under Quality v2.
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
python3 speed2.py --base-url http://127.0.0.1:45099/v1 --label glm-mia-80be4d6-tp4-1111-speed-r0 --prompts $BENCH/repos/<speed-test-tool>/prompts-v2.json --output $RUN/glm-mia-80be4d6-tp4-1111-speed-r0/glm-mia-80be4d6-tp4-1111-speed-r0/speed2 --contract $RUN/glm-mia-80be4d6-tp4-1111-speed-r0/glm-mia-80be4d6-tp4-1111-speed-r0/speed2/speed-contract.json --parts decode,prefill,conc,l1,ctx --prefill-depths 2048,8192,32768 --prompt-ids code,prose --runs 2 --max-tokens 512 --warmups 1 --prefill-runs 3 --conc-levels 1,2,4,8 --conc-rounds 2 --conc-max-tokens 512 --conc-prompt prose --ctx-depths 16384,32768,65536,131072 --ctx-runs 2 --ctx-max-tokens 512 --tokenizer-json $HOME/models/glm53-mia-4bpw-1104/tokenizer.json --tokenizer-python $HOME/not published --sampling {"temperature": 1.0, "top_p": 0.95, "top_k": 20} --sampling-source Checkpoint generation_config.json:9-10 (temperature 1.0, top_p 0.95; Mia-AiLab/GLM-5.3-Flash-EXL3-4bpw-TensorFold pin 76c0b517, copy $HOME/models/glm53-mia-4bpw-1104/generation_config.json) plus the server default top_k 20 (SERVE_EXTRA_ARGS in scripts/local.sh, README.md:222, CHANGELOG.md:147; applies to requests that send no top_k). Speed v2 runs with thinking off (enable_thinking false per request), think part with thinking on. --model GLM-5.3-Flash --no-cache-prompt --server-log $RUN/server-A.log --engine-version-file $RUN/engine-version.txt --server-slots 8 --server-slots-source MiaAI-Lab/GLM-5.3-Flash-DGX-Sparks-1104@80be4d68 scripts/local.sh PARALLEL=8 (README.md:178; README.md:62 'Served configuration: PARALLEL=8'; scripts/config.sh:178 default 4, 'auto: up to 8'); rank 0 start log shows '8 streams at once' --server-ctx 1048576 --server-ctx-source card GB10 box 3-glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111 field ctxHow well it answers
| Test | Result95 % margin | Right | Cut offcount as wrong | Raw files | |
|---|---|---|---|---|---|
| MMLU-Pro 400 fixed questions, letter only | 64.3 % ± 4.7 pts | 257 / 400 | 0 | answers · summary · log · contract | command |
| GPQA Diamond 198 questions, letter only | 40.4 % ± 6.8 pts | 80 / 198 | 4 | answers · summary · log · contract | command |
| IFEval 200 fixed prompts, strict | 78.5 % ± 5.7 pts | 157 / 200 | 1 | answers · summary · log · contract | command |
| LiveCodeBench 40 newest tasks, the code runs | 65.0 % ± 14.2 pts | 26 / 40 | 12 | answers · summary · log · contract | command |
| Long text 8K 4 tasks x 10 at 8192 tokens | 72.5 % ± 13.4 pts | 29 / 40 | 6 | log · contract · answers · summary | command |
| Long text 32K 4 tasks x 10 at 32768 tokens | 60.0 % ± 14.5 pts | 24 / 40 | 5 | log · contract · answers · summary | command |
| GPQA 30, thinking on 30 questions, limit 16,384 tokens | 76.7 % ± 14.6 pts median 2,065 tokens, 102.6 s per question | 23 / 30 | 5 | log · contract · summary | command |
Thinking off, except the last test. Seed 42. Sampling from the model card. A cut-off answer counts as wrong. Measured: MMLU-Pro 2026-11-11; GPQA Diamond 2026-11-11; IFEval 2026-11-11; LiveCodeBench 2026-11-11 and 2026-11-12; Long text 8K 2026-11-11; Long text 32K 2026-11-11; GPQA 30, thinking on 2026-11-11.
Note from the run: Thinking off: MMLU-Pro, GPQA Diamond, IFEval, the long-text tests (RULER 8K and 32K) and LiveCodeBench ran with thinking off (enable_thinking false in every request). Thinking on: only the last test, GPQA with 30 questions, ran with thinking on (enable_thinking true, at the recipe's default reasoning effort xhigh; no request sets it). MMLU-Pro and GPQA Diamond ran with an answer limit of 1,024 tokens (my usual limit for these two tests is 48; the card of this setup sets 1,024); same questions, seed 42, first-letter extraction. Answers that were cut off at their limit count as wrong. Cut off: 0 of 400 MMLU-Pro answers, 4 of 198 GPQA Diamond answers, 1 of 200 IFEval answers (limit 4,096 tokens), 6 of 40 long-text answers at 8K and 5 of 40 at 32K (limit 128 tokens), 5 of 30 GPQA answers with thinking (limit 16,384 tokens) and 12 of 40 LiveCodeBench answers (limit 32,768 tokens, job glm-mia-80be4d6-tp4-1111-lcb, run after the other tests). The questions of each test ran 8 at a time, the slot count of the recipe's server (same questions, limits and seed for every question). Sampling: temperature 1.0, top_p 0.95 (the model card) and top_k 20. Speed v2, MMLU-Pro, GPQA Diamond, IFEval, the long-text tests and GPQA with thinking ran one after the other on Nov 11, 2026 on one freshly started server; LiveCodeBench ran right after in its own session on a freshly started server and ended after midnight (register date of its rows: Nov 12, 2026). These quality tests have no foreign-load guard; their sampling files list the busiest other process every 10 seconds (the numbers below are read from them): samples above 25 % of one core: in the four instruction tests 1 of 195 (100.0 %, a short helper process), in the thinking test 4 of 127 (up to 100.0 %: a package-manager check, two firmware queries and one short helper process), and in LiveCodeBench 7 of 352 (up to 200.0 %: a package-manager check, two firmware queries, one system update check, one short helper process and 2 samples from the test's own code runner). The full answers files of GPQA with thinking and of LiveCodeBench are not published: the site's filter flagged text in the model's answers (a word in the reasoning of the thinking test that looks like a host name to the filter, and the letter W used as a label in a LiveCodeBench puzzle, which looks like a power unit to it; neither is a host name or a power reading). The rows were counted from the complete files, and the summary, the log and the contract of each of these tests are published. The 10-second sampling files of the quality tests and of the speed test and the sample file of the speed test's load guard are not published either (the filter blocks them, among other things for the name of a network-service process). These are my own tests, and no other run of this setup is mixed into the numbers on this page.
Exact commands we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
bash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts mmlupro --job glm-mia-80be4d6-tp4-1111bash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts gpqa --job glm-mia-80be4d6-tp4-1111bash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts ifeval --job glm-mia-80be4d6-tp4-1111bash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts lcb --job glm-mia-80be4d6-tp4-1111-lcbbash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts ruler --job glm-mia-80be4d6-tp4-1111bash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts ruler --job glm-mia-80be4d6-tp4-1111bash tools/quality2/measure_all.sh tools/quality2/cards/glm53-flash-tf-zig-1104-4x-mia-80be4d6-tp4-ring-1111.json --parts think --job glm-mia-80be4d6-tp4-1111Two Gauntlet races, thinking on and thinking off
Preview, no rank. The difficulty of these races is not calibrated yet, so these two races give no game rank and are in no table. They are shown side by side: one race with thinking on and one with thinking off, both with the same seed. The numbers are the ones in each result.json.
| Race | Targets hitper range | Time | Penalty loopscount, time | Cut offtoken limit, counts as wrong | Raw files |
|---|---|---|---|---|---|
| Race with thinking on seed 21 · prompt version gauntlet-4-hard-2 (start record of log.jsonl) · Nov 11, 2026 | 16 of 20 trace 5 · cups 5 · skyscrapers 4 · sokoban 2 | 1,613.7 s | 4 loops 180 s | 0 | result.json · log.jsonl · io.jsonl · system-prompt.txt · run log · all files |
| Race with thinking off seed 21 · prompt version gauntlet-4-hard-2 (start record of log.jsonl) · Nov 11, 2026 | 7 of 20 trace 3 · cups 1 · skyscrapers 1 · sokoban 2 | 1,844.3 s | 13 loops 585 s | 3 | result.json · log.jsonl · io.jsonl · system-prompt.txt · run log · all files |
Also made this possible
- Model
Z.ai (GLM-5.3-Flash)Hugging Face @Zai_org GitHub Website - Draft model (DFlash2, revision bf582e4e)
Inco AI@inco_ai Hugging Face GitHub Website - Engine (TensorFold, commit f350cd3e)
Ash Hart@ashxhart GitHub Hugging Face Website - EXL3 format
turboderp@turboderp_ Hugging Face GitHub
Run it yourself
What you need and how to start it, step by step. The results below come from exactly this setup.
What you need
- Hardware
- 4x NVIDIA GB10 boxes (DGX Spark class), tensor parallel 4 over a switchless CX7 RDMA ring, two paths per cable (109.2 to 109.4 Gb/s per path, measured before each of the two sessions): 2x ASUS Ascent GX10, 1x Gigabyte AI TOP ATOM, 1x Lenovo ThinkStation PGX. All four run driver 580.178.04 and kernel 7.0.0-1019-nvidia, GPU clock capped at 2200 MHz.
- Model
- Mia GLM-5.3-Flash EXL3 4bpw (rev 76c0b517, ~164 GiB) + incoai DFlash2 (rev bf582e4e)
- Draft model (DFlash2, revision bf582e4e)
- huggingface.co/incoai/GLM-5.3-Flash-DFlash2
- Engine
- Recipe commit 80be4d6 of Nov 11, 2026 (121 patches), TensorFold's native engine in the state f350cd3e (Ash Hart), tensor parallel on 4 GB10 boxes over a switchless CX7 ring, EXL3 4 bpw with DFlash2 drafts — the program that loads the model and answers requests · github.com/ashhart/TensorFold
- Recipe (version 1104, commit 80be4d6) and EXL3 checkpoint (Mia-AiLab/GLM-5.3-Flash-EXL3-4bpw-TensorFold, revision 76c0b517)
- github.com/MiaAI-Lab/GLM-5.3-Flash-DGX-Sparks-1104 by Mia (MiaAI-Lab)
Steps
Get the recipe, the engine and the model files from the list above.
Start the server with this command. It loads the model into memory.
./start-tp4-switchless.sh in glm-tp4-mia-1111-1722 on box-3 via spark-4x-glm-80be4d6-tp4.sh start (scripts/local.sh FINAL-1731); head box-3 rank 0, rank 1 box-4, rank 2 box-1, rank 3 box-2; stop: ./stop-tp4.shThe file names are the ones we used. Run the command in the folder that holds them, or put the full path in front of each name.
Start text for this setupfor reproducing↓
You do not need this to run the model. It is the start text of this setup, based on the setup card of this run, with local paths, machine names and addresses shortened or replaced by placeholders, notes added on some pages, and the engine build in front, so anyone can repeat the result.
TensorFold native Zig engine f350cd3e (ashhart/TensorFold, Zig 0.17.0, NCCL 2.30.x) + 121 patches of Mia's recipe 1104 (80be4d68), TP=4 ring, DFlash2 drafts (4 bit), image tensorfold-glm53-spark:4835fc852d34; ./start-tp4-switchless.sh in $HOME/glm-tp4-mia-1111-1722 on box-3 via $HOME/glm-tp4-v2-1111/spark-4x-glm-80be4d6-tp4.sh start (scripts/local.sh FINAL-1731); head box-3 rank 0, rank 1 box-4, rank 2 box-1, rank 3 box-2; stop: ./stop-tp4.shContext and sampling: 1,048,576 tokens (the recipe default CONTEXT=auto, which resolves to its maximum of 1,048,576; the server log shows a window of 1,048,576 tokens), 8 requests at once (PARALLEL=8, the setting of the recipe's served configuration; the script default is 4), FP8 KV cache on shared pages (16,392 pages), a prompt cache of 8.0 GiB on each box, vision on, DFlash2 drafts, seed 42. Sampling: temperature 1.0, top_p 0.95 (the model's generation config) and top_k 20 (SERVE_EXTRA_ARGS='--top-k 20'), the same with thinking on and off. Thinking-off requests carry no "Reasoning Effort: Max" line (the recipe's EFFORT_LINE=thinking). Thinking off for Speed v2 and for the quality tests, except the GPQA test with 30 questions, which ran with thinking on (at the recipe's default reasoning effort xhigh). The recipe's server default of 32,768 tokens per answer applies only when a request sets none. Weights: the checkpoint at the revision the recipe pins (76c0b517) and the drafter folder bf582e4e; the three other boxes read them from the head box over NFS (the recipe's default). Licence note: the DFlash2 draft model is CC BY-NC-ND 4.0 (non-commercial) according to the recipe, the engine's own log and its Hugging Face page. Hardware: 4x NVIDIA GB10 boxes (DGX Spark class), tensor parallel 4 over a switchless CX7 RDMA ring, two paths per cable (109.2 to 109.4 Gb/s per path, measured before each of the two sessions): 2x ASUS Ascent GX10, 1x Gigabyte AI TOP ATOM, 1x Lenovo ThinkStation PGX. All four run driver 580.178.04 and kernel 7.0.0-1019-nvidia, GPU clock capped at 2200 MHz. All raw files of this setup: raw/v2/glm53-flash-4sparks-mia-tensorfold-1104-80be4d6.