DSpine vs DFlash2: How Much Faster Is It? Benchmarks
DSpine vs DFlash2 on Qwen3.8-27B: acceptance length, agent throughput, and a hands-on H100 test that hit about 156 tokens/s versus 33.
For Engineering and IT

How much faster is DSpine than DFlash2 and autoregressive decoding?
On Tencent's published agent benchmarks, DSpine runs Qwen3.8-27B about 2.7x to 3.8x faster than plain autoregressive (AR) decoding. It beats DFlash2 by roughly 8% to 21% in end-to-end throughput, depending on the task. In a separate hands-on single-GPU test on an 80 GB H100, DSpine reached about 156 tokens/s versus about 33 tokens/s without it, roughly 4.7 to 4.8x. The two setups differ, so the numbers are not interchangeable.
TL;DR
- DSpine is a five-layer draft model for Qwen3.8-27B that proposes 16 tokens per block and is released as an open checkpoint.
- On general benchmarks at greedy decoding, acceptance length rises from 5.69 to 7.20 on GSM8K compared with DFlash2.
- On five agent benchmarks, DSpine's end-to-end throughput is 2.71x to 3.84x over AR, against 2.33x to 3.17x for DFlash2.
- Gains over DFlash2 shrink under temperature sampling, and MT-Bench shows the smallest lift (4.03 vs 3.89 at T=1).
- A creator's single-stream H100 test measured about 156 tokens/s with DSpine versus about 33 without, with per-prompt speeds from 95 to 235 tokens/s.
- The comparison is not perfectly like for like: DSpine drafts 16-token blocks while DFlash2 drafts 8, and DSpine uses dynamic verification.
What is DSpine and how does it work?
DSpine is a speculative decoding method from Tencent. A small draft model guesses several tokens ahead, and the big model verifies all of them in a single forward pass. It keeps the correct prefix, fixes the first wrong token, and discards the rest. The big model has the final say, so output quality stays tied to the target model.
The weakness of block-parallel drafters is that each position guesses without seeing its neighbors' guesses. They can contradict each other, and verification stops at the first mismatch. DSpine addresses this inside the draft network. According to the model card, each layer passes predicted predecessor features to adjacent positions, so causal dependencies travel through network depth rather than across sequential steps. The paper title says the same thing: "Draft in Parallel, Condition Through Depth: Adjacent Causal Injection for Speculative Decoding."
The released checkpoint, tencent/Qwen3.8-27B-DSpine-b16, has five layers, a block size of 16, and an 8,192-token sliding window.
How does DSpine differ from Eagle 3, DFlash, and DFlash2?
Roughly, the families split like this:
| Approach | How it drafts | Main weakness |
|---|---|---|
| Eagle 3 style | One token at a time | Careful but slow |
| DFlash | Whole block in one pass | Guesses ignore each other |
| DFlash2, Domino, DSpark | Block pass plus a fix-up step | Fix-up comes after the main pass |
| DSpine | Block pass with neighbor conditioning in every layer | Needs matching runtime support |
The fix-up approaches repair disagreement afterward. DSpine tries to prevent it during drafting.
What do the acceptance length benchmarks show?
Acceptance length is the average number of tokens the target model accepts per verification round. Higher means fewer slow passes through the 27B model. Tencent's general benchmark numbers, run at xhigh reasoning with at most 4,096 new tokens:
| Task | DFlash2 (T=0) | DSpine (T=0) | DFlash2 (T=1) | DSpine (T=1) |
|---|---|---|---|---|
| GSM8K | 5.69 | 7.20 | 5.45 | 6.31 |
| MATH-500 | 5.49 | 6.49 | 5.27 | 5.66 |
| HumanEval | 4.87 | 5.71 | 4.34 | 4.71 |
| MBPP | 5.04 | 6.14 | 4.79 | 5.41 |
| MT-Bench | 4.11 | 4.48 | 3.89 | 4.03 |
Three patterns stand out.
- Structured tasks gain the most. Math and code are predictable, so long drafts survive. GSM8K at greedy decoding improves by about 27%.
- Sampling narrows the gap. At temperature 1.0 (with
top_p=0.95,top_k=20), every task gains less. MT-Bench goes from 3.89 to 4.03, about 4%. - Open-ended chat is the hardest case. MT-Bench has the lowest acceptance for both methods.
Agent acceptance length
The agent tests replay recorded tool-decision prefixes from 20 conversations per subset, with temperature sampling.
| Benchmark | DFlash2 low | DSpine low | DFlash2 xhigh | DSpine xhigh |
|---|---|---|---|---|
| WorkBuddy Code | 4.19 | 5.08 | 4.06 | 4.92 |
| WorkBuddy Web | 3.95 | 4.91 | 3.95 | 5.01 |
| WorkBuddy Office | 4.24 | 5.63 | 4.20 | 5.49 |
| SWE-bench Pro | 4.19 | 4.99 | 4.00 | 4.77 |
| τ²-bench | 4.70 | 5.53 | 4.29 | 4.95 |
DSpine leads in every cell. WorkBuddy Office at low reasoning shows the biggest jump, from 4.24 to 5.63.
How much throughput does DSpine add on agent workloads?
Throughput here is total output tokens divided by end-to-end concurrent replay wall time. The setup uses SGLang 0.5.22, BF16, FlashAttention 3, and concurrency 8. Speedups are relative to AR.
| Benchmark | Reasoning | AR (tok/s) | DFlash2 | DSpine |
|---|---|---|---|---|
| WorkBuddy Code | low | 253.35 | 590.27 (2.33x) | 686.23 (2.71x) |
| WorkBuddy Code | xhigh | 193.00 | 550.40 (2.85x) | 613.55 (3.18x) |
| WorkBuddy Web | low | 247.40 | 639.74 (2.59x) | 773.19 (3.13x) |
| WorkBuddy Web | xhigh | 252.26 | 734.04 (2.91x) | 840.14 (3.33x) |
| WorkBuddy Office | low | 210.03 | 664.77 (3.17x) | 805.53 (3.84x) |
| WorkBuddy Office | xhigh | 215.05 | 662.34 (3.08x) | 763.83 (3.55x) |
| SWE-bench Pro | low | 241.86 | 657.71 (2.72x) | 713.41 (2.95x) |
| SWE-bench Pro | xhigh | 248.17 | 711.60 (2.87x) | 791.30 (3.19x) |
| τ²-bench | low | 301.39 | 891.37 (2.96x) | 964.30 (3.20x) |
| τ²-bench | xhigh | 340.39 | 871.98 (2.56x) | 978.39 (2.87x) |
Dividing DSpine by DFlash2 in each row gives gains from about 8% (SWE-bench Pro and τ²-bench at low) to about 21% (WorkBuddy Web and Office at low). Most rows land between 11% and 16%. That is consistent with Tencent's reported average of about 11% more throughput than DFlash2, though the exact average depends on how the paper weights tasks.
Notice that acceptance length gains are larger than throughput gains. WorkBuddy Office at low improves acceptance by about 33% but throughput by about 21%. Longer drafts cost more to produce and verify, so not every accepted token converts to wall-clock savings.
What did the hands-on H100 test show?
A creator ran DSpine locally on a single 80 GB H100 with SGLang. The script sent eight different prompts one at a time to Qwen3.8-27B and reported tokens per second.
| Setup | Overall tokens/s | Approx. VRAM |
|---|---|---|
| With DSpine | about 156 | just under 79 GB |
| Without DSpine | about 33 | just under 72 GB |
With DSpine, individual prompts ranged from about 95 to 235 tokens/s. That is a speedup of roughly 4.7 to 4.8x. The draft model and its cache cost about 7 GB of extra VRAM in that configuration. The creator also reported that the setup did not work on an A100 and that an H100 was required.
Why is the hands-on speedup larger than the published one?
The test conditions differ in at least three ways, and the sources do not fully explain the gap.
- Concurrency. The published agent numbers use concurrency 8. The hands-on run sent prompts one at a time, which is the regime where speculative decoding helps most, since the GPU is otherwise underused.
- Workload. The published agent tables replay tool-calling traces. The hands-on run used eight generic prompts whose content was not detailed.
- Baseline. The 33 tokens/s AR figure is a single-stream number. The AR figures in the agent table are aggregate throughput across concurrent requests.
Treat 4.8x as a best-case single-user result and 2.7x to 3.8x as a more realistic range for batched agent traffic. Neither is a guarantee for your prompts.
Is the DSpine vs DFlash2 comparison fair?
Mostly, with caveats worth knowing before you rely on the margins.
- DSpine uses a 16-token draft block. The official DFlash2 checkpoint uses 8. A longer block raises the acceptance ceiling.
- DSpine inference uses dynamic verification, which references DSpark, and has ReplaySSM enabled.
- The benchmarks come from the authors of DSpine, using their own harness. Independent replication on other hardware would add confidence.
None of this makes the results wrong. It means the gap reflects the whole package (architecture, block size, and verification), not the architecture alone.
How do you run DSpine?
Install from the repository, then serve with SGLang using the DSPINE speculative algorithm:
git clone https://github.com/Tencent/DSpine.git
cd DSpine
pip install -e .
The model card's serve command sets --speculative-algorithm DSPINE, --speculative-num-draft-tokens 16, the FlashAttention 3 backends, --enable-linear-replayssm-spec, --mem-fraction-static 0.80, --context-length 131072, and --max-running-requests 8, among other flags. Copy the full command from the model card rather than assembling it piecemeal. The base model is Qwen/Qwen3.8-27B, and the draft path points at the downloaded Qwen3.8-27B-DSpine-b16 checkpoint.
Frequently Asked Questions
What is acceptance length in speculative decoding?
It is the average number of tokens the target model accepts from the draft in each verification pass. A value of 7.20 means about seven tokens are committed per slow pass instead of one. Higher values generally mean higher speed, though drafting overhead reduces the payoff.
Does DSpine change the output quality of Qwen3.8-27B?
By design, the target model verifies every drafted token and has the final say. The method aims to speed up generation, not alter what the big model would produce. The sources here do not include a separate quality evaluation, so check your own outputs if exactness matters.
Which GPU do I need for DSpine?
The creator ran it on an 80 GB H100 and reported usage just under 79 GB of VRAM with DSpine enabled. They said an A100 attempt did not work. The model card does not list a hardware requirement beyond its benchmark runtime.
Is DSpine open source?
Yes. The checkpoint and code are released under the Apache 2.0 license, with the paper on arXiv and the code on GitHub under Tencent.
Is DSpine better than DFlash2 everywhere?
In the published tables, it leads in every listed acceptance length and agent throughput row. The margin varies. It is largest on math and structured agent tasks and smallest on open-ended chat under temperature sampling.
Topics
Useful for
How we source, write, and correct our articles. Editorial standards



