DFlash 完全解读:Block Diffusion 实现 6x 无损推理加速 — 比 EAGLE-3 快 2.5 倍

发布: 2026-05-08 • 阅读: 10 分钟 • 标签: DFlash, Block Diffusion, Speculative Decoding, vLLM, SGLang, Gemma 4, Qwen 3.5

2026 年 5 月 7 日 z-lab 开源了 DFlash 项目 上线不到一天 GitHub 就冲到 3300+ Stars 654 个 Star 日增在所有 Trending 项目里排名第二 只比 addyosani 的 agent-skills 慢一点

DFlash 是什么 简单说就是新一代推测解码方案 用 Block Diffusion 模型做并行草稿生成 取代传统自回归逐 token 生成的模式 整个 draft 一次前向传播搞定

论文发了 arXiv 完整代码也开源了 支持 vLLM / SGLang / Transformers / MLX 四种推理后端 从 4B 的小模型到 120B 的大模型全覆盖

Speculative Decoding 为什么重要

大模型推理慢的根本原因在于自回归解码 每生成一个 token 就要跑一次完整的前向传播 GPU 算力严重浪费 尤其小 batch 场景 GPU 利用率可能不到 5%

推测解码的思路很直接 用一个更小的 draft 模型快速生成一批候选 token 然后用目标大模型并行验证 验证的代价和生成一个 token 几乎一样 但一次能验证 5-15 个 token

之前的 SOTA 方案是 EAGLE-3 用自回归 draft 模型做推测解码 已经比最开始的投机解码快了很多 但它的 draft 模型还是逐 token 生成的 顺序执行的瓶颈没完全解决

DFlash 的核心创新:Block Diffusion

DFlash 的创新点在于彻底抛弃了自回归 draft 模式 它用的 Block Diffusion 模型可以一次性生成整个 block 的 draft tokens

具体来说 论文搞了个轻量级的块扩散模型 把目标 LLM 的中间特征(hidden states / KV cache)作为条件输入 然后一个前向传播就并行生成 15-16 个候选 token

这套方法有几个关键设计

性能数据:6x 加速 vs EAGLE-3 2.5x 领先

论文在多个模型和数据集上做了 benchmark 关键数据如下

这个性能提升幅度在推理优化领域是相当大的 之前的 EAGLE 系列每次迭代也就提升 20-30% 而 DFlash 直接跨代升级

支持的模型和推理后端

DFlash 覆盖了目前主流的所有开放模型 从 4B 到 120B 都有预训练好的 draft 模型可以直接下载

已支持的目标模型

所有 draft 模型都发布在 Hugging Face z-lab 组织下 模型命名规则是 目标模型名 + DFlash 后缀

推理后端

上手实战:vLLM 部署 DFlash

最推荐的方式是用 vLLM 跑 配置文件一行搞定

以 Gemma 4 26B 为例 用 Docker 一步启动

docker pull ghcr.io/z-lab/vllm-openai:gemma4-dflash-cu130
docker run --rm -it \
  --gpus all \
  --ipc=host \
  --shm-size=16g \
  -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  ghcr.io/z-lab/vllm-openai:gemma4-dflash-cu130 \
  google/gemma-4-26B-A4B-it \
  --host 0.0.0.0 \
  --port 8000 \
  --speculative-config '{"method": "dflash", "model": "z-lab/gemma-4-26B-A4B-it-DFlash", "num_speculative_tokens": 15, "attention_backend": "flash_attn"}' \
  --attention-backend triton_attn \
  --max-num-batched-tokens 32768 \
  --trust-remote-code

对非 Gemma 4 的模型 用标准 vLLM serve 即可

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 部署

export SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1
python -m sglang.launch_server \
  --model-path Qwen/Qwen3.5-35B-A3B \
  --speculative-algorithm DFLASH \
  --speculative-draft-model-path z-lab/Qwen3.5-35B-A3B-DFlash \
  --speculative-num-draft-tokens 16 \
  --tp-size 1 \
  --attention-backend trtllm_mha \
  --trust-remote-code

MLX(Apple Silicon)

from dflash.model_mlx import load, load_draft, stream_generate
model, tokenizer = load("Qwen/Qwen3.5-4B")
draft = load_draft("z-lab/Qwen3.5-4B-DFlash")
messages = [{"role": "user", "content": "How many positive whole-number divisors does 196 have?"}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
for r in stream_generate(model, draft, tokenizer, prompt, block_size=16, max_tokens=2048, temperature=0.6):
    print(r.text, end="", flush=True)
print(f"\nThroughput: {r.generation_tps:.2f} tok/s")

跟 EAGLE-3 比有何不同

EAGLE-3 是目前用得最广的推测解码方案 也是投机解码领域的 state-of-the-art 但 DFlash 在几个维度上明显领先

不过 EAGLE-3 也有它的优势 训练框架更成熟 文档也更完善 DFlash 的训练 recipe 还没完全开源 这可能是团队还在 finalize

适合谁用

什么时候该用 DFlash

不是所有场景都适合用推测解码 如果你的延迟预算非常苛刻 或者 prompt 非常短 推测解码带来的 overhead 可能划不来

一般来说 当需要生成长文本(几百 token 以上)时 DFlash 的价值最大 短 query 场景比如简单的 QA 反而可能感受不到明显加速

另一个需要考虑的是显存 DFlash 需要同时加载目标模型 + draft 模型 显存占用会比单模型高出 10-30% 如果显存紧的话可能需要权衡

总结

DFlash 是 2026 年 LLM 推理优化领域最令人兴奋的进展之一 Block Diffusion 的思路完全打破了自回归 draft 的天花板 6x 无损加速在工程上非常实用

z-lab 把主流模型全覆盖了 + vLLM / SGLang / MLX 全支持 + 训练 recipe 即将开源 可以说是一套相当完整的方案

如果你的生产环境在用自部署的 LLM 做推理 或者你在本地跑 Qwen 3.5 / Gemma 4 做实验 值得花半天时间试试 DFlash

← 返回博客列表