Executable programs and extensions
Last updated
Run and compare GLM-5.3 Flash recipes on two, three, and four Sparks
Single-request decode measured 60.4, 77.6, and 95.2 tok/s on two, three, and four Sparks; four-Spark tp4 remains experimental.
MIA's GLM-5.3-Flash Spark recipe adds 96 patches to TensorFold 0.6.0. With its default EXL3 4-bit setup, single-request decode1 measured 60.4 tok/s on two Sparks, 77.6 on three, and 95.2 on four. Aggregate throughput2 was 108.8 tok/s at four requests on two Sparks, 146.2 at four on three, and 222.4 at eight on four. The four-Spark run uses the experimental tp4 branch.
Start with the scope of the two-Spark recipe
GLM-5.3-Flash is a different model from full GLM-5.3 744B. This guide covers the Flash model's two-rank TensorFold recipe. MIA's default run places patches on TensorFold v0.6.0, with one Spark per rank.
Connect the ConnectX-7 ports directly and configure RoCE v2. The three-Spark experiment needs a triangle layout and rank order; four Sparks use a switch or ring and the separate tp4 branch procedure.

Compare one request and concurrent throughput separately
The one-request column is the generation speed of one answer. The aggregate column includes its request count: four concurrent requests for two or three Sparks, and eight for four Sparks. Keep these workloads distinct when comparing shared-server capacity.
Scroll sideways to compare all columns.
| Sparks | One request | Aggregate (request count) | Status |
|---|---|---|---|
| 2 | 60.4 tok/s | 108.8 tok/s (4 requests) | Base recipe |
| 3 | 77.6 tok/s | 146.2 tok/s (4 requests) | Patched experiment |
| 4 | 95.2 tok/s | 222.4 tok/s (8 requests) | tp4 branch · experimental |
The two-Spark figures were measured with sparkDash at the defaults: 1M context, FP83 KV cache4, 4-bit dense weights, DFlash2 and copy drafts, vision on, and GPU5 clocks capped at 2,200 MHz. The three-Spark run also used its default four streams, 1M window, FP8 KV, and DFlash2 plus copy drafts. Compare model version and request count alongside the table.

Prepare the machines and repository, then start the server
Each Spark uses a GB10 with 128 GB unified memory6 and needs about 110 GiB free when the server starts. For the two-Spark recipe, install Docker and the NVIDIA Container Toolkit on both machines and verify key-based SSH from head to worker. Reserve disk for the checkpoint7, DFlash2, and container image.
Clone the repository on the head and copy scripts/local.sh.example to scripts/local.sh. Save the following settings in the matching entries of scripts/local.sh with a file editor. WORKER is the worker's management-LAN SSH address; FABRIC_PEER is its CX7 address when needed. Check the saved file, then verify key-based SSH using the actual address before starting the server.
git clone https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold.git
cd GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold
cp scripts/local.sh.example scripts/local.shWORKER=user@192.0.2.2
FABRIC_PEER=192.0.2.12grep -nE 'WORKER=|FABRIC_PEER=' scripts/local.sh
# Replace the reserved address with the actual worker SSH target.
ssh-copy-id user@192.0.2.2
ssh -o BatchMode=yes user@192.0.2.2 trueOn first run, the two-Spark starter prepares the container, checkpoint, and DFlash2, then smoke-tests both ranks. Success prints GLM-5.3-Flash-EXL3 is now LIVE! on port 8888. Three Sparks use start-tp3.sh; four use the tp4 branch's switchless-ring procedure. The four-Spark path is experimental, so verify detected cabling and rank order in a dry run first.
./start.shcurl -fsS http://127.0.0.1:8888/v1/models
curl -fsS http://127.0.0.1:8888/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"GLM-5.3-Flash-EXL3","messages":[{"role":"user","content":"Say READY in one word."}],"max_tokens":8,"temperature":0}'./start-tp3.shgit clone --branch tp4 https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold.git ../glm-flash-tp4
cd ../glm-flash-tp4
DRY_RUN=1 ./start-tp4-switchless.sh./start-tp4-switchless.shcurl -fsS http://127.0.0.1:8888/v1/models
curl -fsS http://127.0.0.1:8888/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"GLM-5.3-Flash-EXL3","messages":[{"role":"user","content":"Say READY in one word."}],"max_tokens":8,"temperature":0}'Treat the four-Spark run as a separate validation scope
The progression from two to four Sparks shows decode gains as machines are added. The three-Spark setup adds recipe patches, while four Sparks use an experimental branch that has not received the same breadth of exactness checks as the three-Spark setup. Treat the four-Spark figure as a reproduction target for a specific topology and branch, not a guaranteed result on any setup.
If concurrent throughput is your goal, record both aggregate and per-request tok/s. With only one or two users, single-request speed and TTFT8 matter more. More concurrent requests can still mean longer waits per user, so measure using your own prompts9 and reply lengths.

Terminology notes
Token decoding — The stage that generates successive output tokens using the input and the response produced so far.
Back to the textThroughput — The amount of work processed or generated over time. Comparisons need the unit, such as tokens per second or requests per second.
Back to the textFP8 — A floating-point format that represents each value with 8 bits.
Back to the textKV cache — Memory that stores attention keys and values from earlier tokens for reuse during later token generation. Its size depends on context length and batch size.
Back to the textGPU — A processor designed to handle many calculations in parallel. It performs model computations during AI inference.
Back to the textUnified memory — An architecture where the CPU and GPU share one physical memory pool.
Back to the textCheckpoint — A file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.
Back to the textTime to First Token — The time from sending a request until its first output token arrives.
Back to the textPrompt — The input text sent to a model. For generative models it describes the desired result and strongly shapes the output.
Back to the text
Frequently asked questions
- What should you check first in this article?
- MIA's GLM-5.3-Flash Spark recipe adds 96 patches to TensorFold 0.6.0. With its default EXL3 4-bit setup, single-request decode measured 60.4 tok/s on two Sparks, 77.6 on three, and 95.2 on four. Aggregate throughput was 108.8 tok/s at four requests on two Sparks, 146.2 at four on three, and 222.4 at eight on four. The four-Spark run uses the experimental tp4 branch.
- How much memory does it need?
- Each Spark uses a GB10 with 128 GB unified memory and needs about 110 GiB free when the server starts. For the two-Spark recipe, install Docker and the NVIDIA Container Toolkit on both machines and verify key-based SSH from head to worker. Reserve disk for the checkpoint, DFlash2, and container image.
Read next
Model setup recipes
GLM-5.3-Flash Serving Guide: A 320B Server-Scale MoE Recipe
Executable programs and extensions
Which local LLM app or serving engine should you start with?
memory and model
How much VRAM or unified memory does a local LLM need?
Executable programs and extensions
How to Back Up and Restore a Local LLM You Already Use
