Report

DSpark speculative decoding on two DGX Spark: the 1M-token depth curve

Our fp8 DSpark bring-up on GB10, an independent reproduction of the community NVFP4 build, and the depth data nobody had published: the single-stream curve to a real million-token prompt — plus two negative results, stated as such.

lab_single_run internal research August 5, 2026 · Funding: Self-funded internal research

Scope note. This study ran on the lab’s DGX Spark pair with the repository’s own benchmark suite — apples-to-apples throughput as completion_tokens / wall_time, non-streaming (streamed SSE event counts undercount real tokens badly, which is exactly why the method is pinned). It is not part of the claim registry behind our tested-configuration cards: the numbers below are quoted from the published repository, where the raw checkpoints sit next to them.

Two recipes, honestly attributed

DeepSeek’s DSpark speculative decoding serves DeepSeek-V4-Flash across two DGX Spark (GB10, sm_121) nodes, TP=2 over 200G RoCE, at a configured million-token window. The repository carries two lines and is explicit about which is whose: the fp8 DSpark bring-up is ours — the draft head and proposer wired into vLLM as patches, plus the numerical fixes that took the draft from predicting noise to matching the reference. The faster NVFP4-KV line is tonyd2wild’s recipe: we reproduced it byte-identically on our own cluster and measured it; we did not author it, and we claim no speed win over it — our reproduction of his concurrency benchmark lands inside his own run-to-run variance.

The depth curve nobody had published

The community had single-depth numbers; what was missing was the curve. On the NVFP4 build, single-stream decode runs 42.7 tok/s at 16K context, 17.6 at 512K, and 17.2 at a real 1,032,953-token prompt — the curve flattens past 512K instead of collapsing. At full depth, a cold prefill takes about 642 seconds; with the prefix cache warm, the same request starts in about 4 seconds. A configured million-token window on consumer silicon is real — if you plan around the prefill bill and know the decode floor you will live on.

Why the speed behaves this way

The mechanism is acceptance, not bandwidth: with speculation disabled both KV builds decode at an essentially identical ~26.6 tok/s — the NVFP4 line wins by keeping more speculative tokens accepted per step, and per-position acceptance decay is what drives the depth curve down. Concurrency is where the box earns its keep: our fp8 line sustains ~99 tok/s aggregate at 8 streams and 141–146 tok/s at 12, and single-stream speculation is worth +21–24% over no-spec.

Two negative results, published as results

Why this belongs in the lab’s record

This is the posture the lab sells, applied to ourselves: reproduce someone else’s result before comparing to it, publish the curve with its raw checkpoints, credit the lineage, and file the failures next to the wins. The DGX Spark lane still has no methodology-v1 cells — that stays the planned next step — but the depth curve, the acceptance mechanism and both negatives are quotable today from the repository.

Evidence

Recipes, patches, benchmark checkpoints and raw outputs: DeepSeek-V4-Flash-DSpark-GB10-2x-DGX-Spark-1m-fp4-fp8. Upstream NVFP4-KV recipe: tonyd2wild (credited in the repo). Related lab material: the MoE-kernel finding on the same pair and the earlier 1M serving study. Russian long-reads: part 5 and the 0731 study on Habr.

Cite this report

AGmind Systems Lab (2026-08-05). DSpark speculative decoding on two DGX Spark: the 1M-token depth curve. Evidence level: lab_single_run. https://agmind.ai/reports/dspark-speculative-1m-dgx-spark/
← Reports