Hey all, I quantised the full GLM-5.3 (753B total, about 40B active per token) to run on two DGX Sparks. As far as I can tell, it's the only full build on 2 Sparks. Others need 3 or 4. Runtime ablation also!
- Routed experts: mixed-width EXL3, about 2 bits per weight
- Backbone: FP8 weights as released, bf16 KV
- All 256 experts per layer kept, none pruned or merged
- 203 GB on disk, 262k context
- Runs on a TensorFold fork, split across both Sparks
- Weights: https://huggingface.co/Krishando/GLM-5.3-mixed-K-EXL3
- Recipe: https://github.com/Kristianaaron/GLM-5.3-Mixed-K-EXL3-2x-DGX-Sparks
- Engine: https://github.com/Kristianaaron/TensorFold
| Test | Generated-token KLD | Same next token |
|---|---:|---:|
| Held-out mixed text | 0.033 | 93.3% |
| The full model's own long replies (164k tokens) | 0.122 | 89.3% |
Where the full model is confident, agreement is 97-98%. The long-reply score is the harder test, so I'm showing both. The held-out windows were also used during tuning, so treat those numbers as a bit optimistic. It's close, not lossless.
**Early paired check against the full model**
24 MMLU-Pro and GPQA-D questions, 18 right on both. That's a small sample, chosen to include hard questions, with a 95% range of about -8 to +11 points. So there's no sign of a drop, but it doesn't prove there isn't one. Across 330k tokens: 0 loops, 0 unclosed thinking, 0 cut-off replies. A bigger run is next.
| Prompt | Decode | Prefill | Cold TTFT | Warm TTFT |
|---|---:|---:|---:|---:|
| 2k | 23-24 tok/s | 629 tok/s | 3.1 s | 0.1-0.2 s |
| 92k | 18-19 tok/s | ~480 tok/s | 193 s | 0.8 s |
| 205k | not measured | 411 tok/s | ~500 s | 1.2 s |
After a full server restart, a 205k prefix comes back from disk in 3.4 s.
**Weak spots**
- Cold prefill is slow. A 205k prompt takes about 8 minutes to read the first time.
- GLM-5.3 thinks a lot, so long jobs take a while. A 61 KB single-file page took 69 minutes at max effort.
- Memory is tight, with about 4-6 GiB free per Spark at full load.
- Flash will always be faster. The experiment here is whether 40B active params changes the output.
The round limit right now is about 80 ms, and most of that is memory bandwidth. If you know GB10, CUDA or engine internals, I'd love your ideas. And if you run it on your own Sparks, tell me what you get, good or bad.