Skip to content
AI.info

Research

D3D: Decoupled Diffusion Drafting for Asynchronous Speculative Decoding

Overview Research area: Efficient LLM inference — specifically speculative decoding with diffusion-based draft models. Technical level: Advanced. The paper assumes familiarity with speculative decodin

arXiv
2611.06425
Published
2026-11-04
Authors
Baoyou Chen, Ruiqiao Mei, Guancong Lin, Tao Song, Weihao Yuan, Qun Liu, Siyu Zhu

AI summary

Overview

Research area: Efficient LLM inference — specifically speculative decoding with diffusion-based draft models.

Technical level: Advanced. The paper assumes familiarity with speculative decoding, KV caching, attention masking, and knowledge distillation.

Scope: The paper introduces D3D, a standalone diffusion drafter that predicts candidate token blocks without target-model hidden states, enabling drafting to overlap with target verification, and evaluates it on seven benchmarks with Qwen3-8B and Qwen3-32B targets.

What This Paper Is About

Speculative decoding speeds up language models by having a small "drafter" propose several tokens that a larger target model then verifies in parallel. Recent diffusion drafters generate a whole block of candidate tokens in one forward pass, but they must wait for hidden states produced by the target model's verification of the previous block before they can start the next one, so drafting and verification still run one after the other. D3D's goal is to break that dependency: build a drafter that needs only the token prefix, so it can prepare future candidate blocks while the target is verifying the current one.

Key Contributions

  1. Target-aligned standalone diffusion drafting. D3D combines blockwise denoising with an auxiliary autoregressive loss, both trained on responses generated by the target model, to adapt a pretrained model into a single-pass block drafter that never consumes target hidden states. At block size 16, it exceeds every baseline in acceptance length on all seven benchmarks for both targets, averaging 7.88 (Qwen3-8B) and 7.73 (Qwen3-32B).

  2. Acceptance-guided progressive layer pruning. Layers are removed one at a time, each time choosing the layer whose removal causes the smallest drop in validation acceptance length, with distillation-based recovery training and re-measurement of layer importance between removals. Removing five of 36 layers (13.9%) retains over 99% of mean acceptance length and raises mean speedup from 4.44× to 4.69× across three benchmarks with Qwen3-8B.

  3. Asynchronous speculative decoding. During target verification, the drafter prepares successor blocks for multiple possible rejection outcomes plus full acceptance in one packed forward pass, then reuses the branch matching the verified prefix. This yields the highest mean speedup among evaluated methods: 5.00× with Qwen3-8B and 5.71× with Qwen3-32B across seven benchmarks.

  4. A teacher-distribution adjustment for recovery distillation. Rather than distilling directly from the fixed unpruned teacher, the teacher's distribution is mixed with a one-hot on the supervised token using the smallest mixing weight that gives that token a fixed probability margin (δ = 0.01), retaining as much of the teacher's soft distribution as possible.

Main Findings

  • Best average speedup across seven benchmarks: D3D reaches 5.00× with Qwen3-8B and 5.71× with Qwen3-32B, versus 4.03× and 3.67× for DFlash, and 4.44× and 3.92× for DSpark (the strongest baseline averages). The paper reports these as improvements of 12.6% and 45.7% over the highest baseline average.

  • Peak speedup: 7.48× on GSM8K with Qwen3-32B, compared with 4.46× for DFlash and 4.59× for DSpark on the same benchmark.

  • Longer accepted sequences everywhere: D3D beats all five baselines in acceptance length τ on every benchmark for both targets. Average τ is 7.88 (Qwen3-8B) and 7.73 (Qwen3-32B), versus DFlash's 5.96 and 4.82 at the same block size of 16.

  • Benchmark-level consistency: D3D is fastest on five of seven benchmarks with Qwen3-8B and all seven with Qwen3-32B. Its weakest relative gains are on MT-Bench (2.68× with 8B, 3.01× with 32B).

  • Pruning has a sweet spot: Going from 36 to 31 layers keeps over 99% of mean τ on MATH-500, HumanEval, and MT-Bench and gives the highest mean speedup of the tested depths at 4.69×. Below 31 layers, both acceptance length and speedup decline.

  • Pretrained initialization dominates random initialization: At the final measured training step on GSM8K, pretrained initialization gives τ ≈ 9.8 versus τ ≈ 4.5 from random initialization, with the gap appearing early in training and persisting.

  • Auxiliary AR loss helps, then saturates: Setting λ = 1 raises τ by 0.24 to 0.40 tokens over diffusion-only training (λ = 0) across four benchmarks; λ = 1.5 gives no further improvement.

  • Smaller drafter beats a larger DFlash: D3D-1.7B (2.0B total parameters) achieves higher acceptance than DFlash (2.3B) on MATH-500, HumanEval, and MT-Bench, scoring 8.16 / 6.25 / 4.57 versus 6.87 / 5.42 / 3.23.

  • Drafter scale shows diminishing returns: On MATH-500, going from 1.7B to 4B improves τ by 1.29 tokens, while 4B to 8B adds only 0.44 tokens — the motivation for pruning the 8B drafter.

  • Bigger blocks hurt speedup despite better acceptance: Increasing block size from 16 to 32 on MATH-500 raises τ from 9.89 to 12.39 but drops speedup from 5.55× to 3.16×. Block size 16 gives the highest mean speedup.

  • Draft budget is a tradeoff, not a free win: On AIME25 both sweeps peak at roughly 5.0× with C = 12, F = 2, and a 384-token asynchronous budget. Raising C from 12 to 16 lifts cache hit rate from 71.3% to 78.3% but lowers speedup; raising F from 2 to 5 lifts hit rate to 81.8% and the budget to 912 tokens, with lower speedup than F = 2.

  • Throughput rises with concurrency but relative speedup falls: With a D3D-1.7B drafter and Qwen3-32B target, MATH-500 goes from 154 tokens/s (6.1×) at 1 request to 864 tokens/s (2.7×) at 16 requests; MT-Bench goes from 75 tokens/s (2.9×) to 386 tokens/s (1.5×).

  • Anchor count saturates: Increasing sampled anchors from 16 to 64 per response improves τ by 0.25, 0.21, and 0.04 tokens on MATH-500, HumanEval, and MT-Bench; going from 64 to 256 adds only 0.03, 0.03, and 0.06. K = 128 is used.

Methodology in Plain English

Training the drafter. The researchers start from a pretrained language model (a Qwen3 variant) rather than training from scratch. They take prompts from Open-PerfectBlend (1.42 million examples), have the big target model generate the responses, and train only on those target-produced responses. For each response they randomly pick K anchor positions. At each anchor they build a block of length B in which the anchor token stays visible and the remaining B−1 positions are replaced with a reserved mask token; the drafter must fill in the masked positions in a single pass. Many such blocks are packed into one sequence, sharing a causal encoding of the prompt and response prefix while each block attends bidirectionally to itself. Positions nearer the anchor get exponentially decaying loss weights, because verification keeps tokens only up to the first rejection. Alongside this, a standard next-token autoregressive loss on the unmasked response keeps the model's original language-modeling ability intact.

Slimming the drafter. Because a deeper drafter takes longer per blocked pass, the authors test each remaining layer by deleting it and measuring the resulting acceptance length on validation data. They delete the least damaging layer, then run recovery training that distills from the fixed unpruned drafter, then re-measure importance on the recovered model before the next deletion. In recovery, they nudge the teacher's probability distribution toward the correct token just enough that it wins by a small margin, so the student is not pushed toward a plausible but wrong teacher preference.

Running inference asynchronously. Normally the drafter must wait for the target's hidden states before drafting the next block. Here, while the target verifies the current block, the drafter uses one packed pass to precompute continuations for several possible outcomes: rejection at each of the first C−1 positions, with F alternative anchor tokens each, plus the full-acceptance case. If the actually verified prefix matches one of these prepared branches, the cached continuation is reused immediately; if not (a cache miss), the drafter must synchronously generate a fresh block and the target waits. Drafting latency is fully hidden only when the packed drafting time is no longer than the verification time.

Why This Matters

The work shows that a diffusion drafter does not need target hidden states to be useful — a claim that simplifies deployment, since the drafter can live on a separate device and its memory/compute does not have to be interleaved with the target's internals. It also reframes drafter design around accepting fewer but cheaper tokens, rather than always pushing acceptance length upward.

Real-world applications:

  • Low-latency chat and assistant serving, where per-token latency is the user-visible metric, especially for long-form dialogue like the MT-Bench setting.
  • Code completion and coding assistants, where the paper reports HumanEval and MBPP speedups of 6.22× and 5.71× with Qwen3-32B.
  • Mathematical and reasoning workloads, which show the largest gains — 7.48× on GSM8K and 7.46× on MATH-500 with Qwen3-32B.
  • Multi-tenant inference serving, where the concurrency results (up to 864 tokens/s on MATH-500 at 16 requests) indicate behavior under realistic batching.
  • Long-context serving with prompt selection, explored in Appendix C, where the same standalone drafter both scores prompt chunks for selective prefilling and drafts candidate tokens.

Industry relevance: the two-GPU split between target and drafter, the off-the-shelf Transformers implementation, and the explicit pruning recipe make the approach a plausible drop-in for teams already running speculative decoding, though the authors note that integration with SGLang or vLLM remains untested.

Future Directions

  • Evaluating under production serving stacks. The authors state that testing D3D in frameworks such as SGLang or vLLM, with their batching and scheduling optimizations, is future work.
  • Making the two-GPU budget pay off. The paper has not compared throughput per GPU against alternative uses of the same budget, such as running the target with tensor parallelism — an open question about whether decoupling is the best use of hardware.
  • Handling cache misses better. A miss forces synchronous drafting and stalls the pipeline; reducing miss cost or predicting outcomes more accurately (higher hit rate without larger budgets, since both C = 16 and F = 5 hurt speedup) is a natural next step.
  • Extending selective prefilling. Appendix C positions combining prompt selection with speculative decoding as a new long-context setting and notes that SpecPrefill suggested the combination but provided no experimental results, leaving room for fuller characterization of the quality–latency tradeoff.

Target Audience

Researchers and engineers working on LLM inference acceleration who already understand speculative decoding and want to know whether a drafter can be fully decoupled from the target model. It is most useful to those building serving systems or training draft models, and to readers interested in layer pruning guided by a task-specific metric (acceptance length) rather than by language-model loss. Readers new to speculative decoding will need background reading first, since the paper assumes fluency in verification, block drafting, and KV-cache mechanics.

Authors’ abstract

Target-conditioned diffusion drafters predict candidate tokens in parallel, yet each new block must wait for updated target-model hidden states. This forces drafting and verification to run sequentially, limiting speedup even though each block is generated in one pass. We introduce D3D, a standalone diffusion drafter that removes this inter-round dependency. D3D combines blockwise denoising with auxiliary autoregressive supervision to achieve long accepted prefixes without target hidden states. This independence lets D3D draft successor blocks during verification in one packed pass, enabling asynchronous speculative decoding. We progressively prune layers according to their effect on acceptance length to reduce the cost of packed drafting. Removing five of 36 layers retains over 99\% of mean acceptance length across three benchmarks with Qwen3-8B as the target. Across seven benchmarks, D3D averages 5.00$\times$ and 5.71$\times$ decoding speedup with Qwen3-8B and Qwen3-32B targets, compared with 4.03$\times$ and 3.67$\times$ for DFlash. On GSM8K with Qwen3-32B, speedup reaches 7.48$\times$. Code is publicly available at https://github.com/fudan-generative-vision/D3D.

Read the original paper