Skip to content

来源:微信公众号「Ai 学习的老章」
原文链接:https://mp.weixin.qq.com/s/oOhApBoM37bl-V86EawOLA
论文:arXiv: 2602.06036
项目:https://z-lab.ai/projects/dflash
整理:红龙 🐉

DFlash:让 Qwen3.5-27B 推理速度飙升 5 倍的扩散式推测解码

简介

DFlash 来自 z-lab(UCSD ML Systems Group),核心思路:把推测解码(Speculative Decoding)中的「猜测」过程从自回归换成扩散模型。一次前向传播就能并行生成一整个 block 的 token,配合大模型验证,实现 5 倍以上无损加速,比 EAGLE-3 快近 2.5 倍。

为什么 DFlash 这么快?

1. 扩散模型天然适合做「猜测」

  • EAGLE-3 的 drafter 是自回归的,猜 8 个 token 要跑 8 次前向传播,成本线性增长
  • DFlash 用 block diffusion 模型——不管猜 8 个还是 16 个 token,都是一次前向传播搞定
  • drafter 可以做到 5 层 Transformer,更有表达力、猜得更准,但延迟反而更低

2. 核心创新:「大模型自己就知道未来」

  • 从大模型隐藏层抽取特征,注入到 drafter 的每一层 KV cache
  • EAGLE-3 只在输入层融合特征,信息随层数衰减;DFlash 每层都注入,信息一致
  • 结果:acceptance length 能随 drafter 层数有效增长,EAGLE-3 加层数收益递减

DFlash 模型覆盖

目前已覆盖的模型(drafter 均在 HuggingFace z-lab 下):

  • Qwen3.5-4B / 9B / 27B ⭐ / 35B-A3B
  • Qwen3-Coder-Next / Qwen3-Coder-30B-A3B
  • Kimi-K2.5 (Preview)
  • gpt-oss-20b / gpt-oss-120b

其中 Qwen3.5-27B-DFlash 最热门(5200+ 下载量),drafter 仅 2B 参数,极其轻量。

实测数据(单张 NVIDIA B200)

以 Qwen3.5-27B 为例,block size = 16,thinking 模式开启:

单并发吞吐量(tok/s):

  • HumanEval:原版 83 → DFlash 427(5.2x
  • Math500:原版 84 → DFlash 397(4.7x
  • MBPP:原版 84 → DFlash 347(4.2x
  • MT-Bench:原版 84 → DFlash 255(3.0x

并发 8 场景下仍有 3.5x 加速,并发 32 仍有 1.5-1.9x 加速。

Acceptance Length(HumanEval):平均每轮 9.18 个 token 被接受,一次猜测就能「猜中」大部分内容。

所有加速均为无损——输出质量跟原版一模一样。

安装与使用

vLLM(推荐生产环境)

bash
# 安装 nightly 版本
uv pip install -U vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly

# 启动服务
vllm serve Qwen/Qwen3.5-27B \
  --speculative-config '{"method": "dflash", "model": "z-lab/Qwen3.5-27B-DFlash", "num_speculative_tokens": 15}' \
  --attention-backend flash_attn \
  --max-num-batched-tokens 32768

SGLang

bash
python -m sglang.launch_server \
    --model-path Qwen/Qwen3.5-27B \
    --speculative-algorithm DFLASH \
    --speculative-draft-model-path z-lab/Qwen3.5-27B-DFlash \
    --speculative-num-draft-tokens 16 \
    --tp-size 1 \
    --attention-backend fa3

Transformers(本地快速体验)

python
from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer

# 加载 drafter 和 target
draft = AutoModel.from_pretrained(
    "z-lab/Qwen3.5-27B-DFlash",
    trust_remote_code=True, dtype="auto", device_map="cuda:0"
).eval()

target = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3.5-27B", dtype="auto", device_map="cuda:0"
).eval()

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3.5-27B")

messages = [{"role": "user", "content": "Write a quicksort in Python."}]
input_ids = tokenizer.apply_chat_template(
    messages, return_tensors="pt",
    add_generation_prompt=True, enable_thinking=False
).to(draft.device)

output = draft.spec_generate(
    input_ids=input_ids, max_new_tokens=2048,
    temperature=0.0, target=target,
    stop_token_ids=[tokenizer.eos_token_id]
)
print(tokenizer.decode(output[0], skip_special_tokens=False))

技术细节

  1. 训练成本极低:drafter 复用 target 的 embedding 和 LM head(冻结),只训练中间几层。27B 版本 drafter 仅 2B 参数,训练集约 80 万条样本
  2. 只需一步去噪:推理时只做一步 denoising step,因为有 target 隐藏特征做条件,一步就够
  3. Reasoning 模型也能加速:thinking mode 下仍能达到约 4.5 倍加速,对生成上千 token 思维链的推理模型价值巨大

总结

核心思路:扩散模型不需要跟自回归模型在生成质量上竞争,它只需要做一个优秀的「猜测者」。扩散模型负责高速并行猜测,自回归模型负责验证保底,两全其美。

优点:

  • 加速比碾压 EAGLE-3,实测高达 5x+
  • 完全无损,输出跟原版一模一样
  • drafter 极轻量(27B 版本 drafter 才 2B)
  • 已适配 vLLM + SGLang + Transformers 三大框架

局限:

  • 需要 nightly 版本框架,稳定性可能有坑
  • drafter 训练代码尚未开源(已承诺即将放出)
  • 高并发场景加速比会下降(speculative decoding 通病)

一句话:如果你在用 Qwen3.5-27B 做推理服务,多加载一个 2B 的 drafter,吞吐量翻几倍——几乎是免费的午餐。

版权声明:本文内容整理自微信公众号「Ai 学习的老章」,仅做排版整理,主体内容未做篡改。