DiggTop ⌕

One Spark, 552B: Engine Beats Card Count

A DGX Spark is a $3,999 desktop box with 128 GB of unified memory and a GB10 part in it. DeepSeek-V4.1-Flash is a 552B-parameter mixture-of-experts model that ships as a ~475 GiB checkpoint. The obvious read is that one cannot run the other, and the second obvious read is that you would need a stack of boxes if it could.

Our board says both intuitions are wrong in interesting ways. One Spark does run it — slowly, and only with an engine someone wrote for the job. Two Sparks run it very differently depending on which engine is driving them. And going from two boxes to four does not buy what you would expect.

As of 2026-09-15. Every number is an imported, sourced row on our board, with engine, format and context attached. We did not run these tests, and they come from different submitters on different days — see the caveat at the end.

What the board has, in one table

All rows: DeepSeek-V4.1-Flash (552B MoE) on DGX Spark hardware, decode tok/s.

Boxes Engine Format Decode tok/s Context
1 custom v41_engine.py FP4 13.0 – 22.1 8K – 32K
1 custom v41_engine.py FP4 47.0 32K
1 exl3 EXL3 2.05bpw (on GLM-5.3-Flash) 64.1 512
2 exl3 EXL3 2.9bpw 45.5 – 154.0 1K – 559K
3 vllm EXL3 3.5bpw 46.0 300K
4 vllm EXL3 3.5bpw 73.8 – 82.0 300K

Read the box column against the speed column and nothing lines up. One box reaches 47; two reach 154; three, with a more capable engine on paper, come in at 46; four land at 82. If card count were the variable, this table would be monotonic. It is not, because card count is not the variable.

The variable is the engine, and it is not close

Look at the single-box rows first, because they isolate it. The same 552B checkpoint on the same class of box:

That is a 3–5× spread with the hardware held constant and the engine variable. The second row is also the more interesting one: EXL3's 2.05 bits per weight fits an enormous model into 128 GB of unified memory with enough left for a working context, and the kernel is fast enough to produce a usable number. Nothing about the box changed.

Two boxes: the best result on the board

The two-Spark rows are the fastest thing we have for this model, and they are also the most informative:

Context Decode tok/s
1,000 45.5
2,000 74.6
4,000 154.0
17,000 32.4
67,000 35.0
268,000 32.6
559,000 30.5

EXL3 2.9bpw, tensor-parallel across two boxes, with speculative decoding. At 4K context it is 3.3× the best single-box number, at 559K it is still 30.5 — and the 5× drop between 4K and 17K is the speculative-decoding acceptance curve, not a memory wall. We wrote about that curve separately in Context Is Not a Cliff; here what matters is that the fastest configuration on the board is the one that pairs the right format with the right engine — not the one with the most boxes.

Three and four boxes: more hardware, less throughput

The three-box row is the trap. It runs vLLM with EXL3 3.5bpw at a 300,000-token context and produces 46 tok/s. The four-box row, same engine, same format, same context, produces 82 — a 1.8× gain from adding a box, which is a poor return compared to what two boxes did with a different engine.

Two things are going on, and neither is "three boxes are slower than two":

  1. The context is different. The two-box ladder at 4K is not competing with the four-box row at 300K; the comparable two-box numbers at long context are 32.4 (17K) and 30.5 (559K). At matching long context, four boxes on vLLM do beat two boxes on exl3 — 82 vs 35.
  2. The format is different. EXL3 2.9bpw (two boxes) versus EXL3 3.5bpw (three and four boxes) is a different checkpoint, decompressed by a different kernel. As our format comparison shows, that alone has been worth 2× on this hardware family.

So the honest reading is not "add boxes, lose speed". It is: the four-box row is not comparable to the two-box row, and any table that puts them on the same line and sorts by tok/s is lying to you.

What this means if you are considering this class of machine

FAQ

Can a single DGX Spark run a 552B-parameter model?

Yes, with the right quantization. Rows on our board show DeepSeek-V4.1-Flash running on one Spark at 13–47 tok/s at 8K–32K context, and a larger model at 64.1 tok/s under EXL3 2.05bpw.

Why is four boxes not four times faster?

Because throughput at this scale is set by the engine's dequantization and communication path, not by raw card count. The four-box vLLM rows (82 tok/s at 300K context) use a different format from the two-box EXL3 rows (154 tok/s at 4K), so the two configurations are not comparable.

What is the best configuration on the board for this model?

Two DGX Sparks with EXL3 2.9bpw and speculative decoding: 154 tok/s at 4K context, 45.5 at 1K, and 30.5 at 559K context.

How much does context length matter here?

At long context the two-box configuration settles at 30–35 tok/s regardless of whether the window is 17K or 559K. Decode throughput is largely insensitive to context once the speculative-decoding acceptance rate stabilises — see the context piece.

Is one box enough for a 500B-class model in practice?

For batch-1 chat at a few dozen tokens per second, yes — that is what the single-box rows show. For serving multiple users, the four-box rows at 300K context are the relevant shape, and there the limit is memory and communication rather than format.

Sources

Imported upstream measurements as of 2026-09-14, from multiple submitters on different days. This is not a controlled experiment: engines, formats and contexts differ between rows, which is precisely the point being made. Each row carries its provenance on the board.

↑