Home / 512 GB

512 GB · 4× DGX Spark (GB10)

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.

Recipe (version 1104, commit 80be4d6) and EXL3 checkpoint (Mia-AiLab/GLM-5.3-Flash-EXL3-4bpw-TensorFold, revision 76c0b517)Mia's AI LabX @MiaAI_labGitHubHugging FaceWebsite
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:4835fc852d34commit recipe MiaAI-Lab/GLM-5.3-Flash-DGX-Sparks-1104 80be4d6882837d8e0840827ae2aab6124fd48da3 (Nov 11, 2026 15:26 UTC); TensorFold f350cd3ea253a042e205746928271f9d8f71a82d; 121 patches4 GB10 boxes (CX7 Ring, TP4, switchless)measured 2026-11-11 and 2026-11-12independent check passed

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.

Speed v2

How fast it runs

Decode
65.4tok/s
Decode, code
64.1tok/s
Decode, prose
66.6tok/s
500 words
≈ 10.6s
Prefill at 8K
1599.4tok/s
First token at 2K
1.3s
MeasurementResult
Decode65.4 tok/s
Words per second47.0 words/s
Characters per second306.2 chars/s
Decode, code prompt64.1 tok/s
Decode, prose prompt66.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 168.8 tok/s
Prefill at 2K1595.3 tok/s
Prefill at 8K1599.4 tok/s
Prefill at 32K1908.2 tok/s
Time to first token at 2K1.3 s
Time to first token at 8K5.1 s
Time to first token at 32K17.2 s
Draft acceptance rate57.3 %
Mean accepted length2.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 time100.6 s

Long prompts

Prompt lengthPrefillTime to first tokenDecode, code promptDecode, prose prompt
16K tokens1428.4 tok/s11.5 s60.4 tok/s65.4 tok/s
32K tokens1631.5 tok/s20.1 s81.7 tok/s61.7 tok/s
64K tokens1824.3 tok/s35.9 s60.3 tok/s61.9 tok/s
128K tokens1827.6 tok/s71.7 s58.8 tok/s59.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.

Speed v2 (run glm-mia-80be4d6-tp4-1111-speed-r0)
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 ctx
Quality v2

How well it answers

TestResult95 % marginRightCut offcount as wrongRaw files
MMLU-Pro
400 fixed questions, letter only
64.3 % ± 4.7 pts257 / 4000answers · summary · log · contractcommand
GPQA Diamond
198 questions, letter only
40.4 % ± 6.8 pts80 / 1984answers · summary · log · contractcommand
IFEval
200 fixed prompts, strict
78.5 % ± 5.7 pts157 / 2001answers · summary · log · contractcommand
LiveCodeBench
40 newest tasks, the code runs
65.0 % ± 14.2 pts26 / 4012answers · summary · log · contractcommand
Long text 8K
4 tasks x 10 at 8192 tokens
72.5 % ± 13.4 pts29 / 406log · contract · answers · summarycommand
Long text 32K
4 tasks x 10 at 32768 tokens
60.0 % ± 14.5 pts24 / 405log · contract · answers · summarycommand
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 / 305log · contract · summarycommand

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.

MMLU-Pro (run glm-mia-80be4d6-tp4-1111-inst-r1)
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-1111
GPQA Diamond (run glm-mia-80be4d6-tp4-1111-inst-r1)
bash 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-1111
IFEval (run glm-mia-80be4d6-tp4-1111-inst-r1)
bash 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-1111
LiveCodeBench (run glm-mia-80be4d6-tp4-1111-lcb-inst-r0)
bash 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-lcb
Long text 8K (run glm-mia-80be4d6-tp4-1111-inst-r1)
bash 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-1111
Long text 32K (run glm-mia-80be4d6-tp4-1111-inst-r1)
bash 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-1111
GPQA 30, thinking on (run glm-mia-80be4d6-tp4-1111-think-r2)
bash 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-1111
Game races (preview)

Two 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.

RaceTargets hitper rangeTimePenalty loopscount, timeCut offtoken limit, counts as wrongRaw 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 s4 loops
180 s
0result.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 s13 loops
585 s
3result.json · log.jsonl · io.jsonl · system-prompt.txt · run log · all files
Credits

Also made this possible

Setup

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

  1. Get the recipe, the engine and the model files from the list above.

  2. 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.sh

    The 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.

Start, based on the setup card of this run
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.sh

Context 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.