DFlare:北大+腾讯联合突破,Block Diffusion 投机解码的「层感知」革命
> 论文:DFlare: Scaling Up Draft Capacity for Block Diffusion Speculative Decoding > 作者:Jiebin Zhang et al. (北大 + 腾讯) > arXiv: 2606.02091 | 代码:https://github.com/Tencent/AngelSlim > 发布日期:2026-06-02
---
一、一句话总结
DFlare 通过层感知融合(Layer-wise Fusion)打破了 DFlash 的窄瓶颈,让草稿模型的每一层都能获得定制化的目标模型知识注入,从而在三个维度(每层的知识量、模型深度、训练数据)同时扩展,实现了 Qwen3-4B 上 5.52×、Qwen3-8B 上 5.46× 的端到端加速。
---
二、为什么需要 DFlare?DFlash 的两大死锁
2.1 投机解码的困境
大模型推理的瓶颈不在计算,而在内存带宽——每生成一个 token 都要把整个模型权重从 HBM 搬到 SRAM。投机解码(Speculative Decoding)的解法是:用一个小草稿模型快速生成候选 token,大模型一次性并行验证,只要草稿够准,就能成倍加速。
但这里有个 trade-off:
- 草稿模型越小越快,但越不准
- 草稿模型越大越准,但生成延迟越高
2.2 Block Diffusion:打破自回归诅咒
传统草稿模型是自回归的(AR),生成 N 个 token 需要 N 次前向传播,深度直接等于延迟。
Block Diffusion 改变了游戏规则:在一个 block 内,所有 token 同时预测(通过离散扩散过程),深度和 block 大小基本解耦。这意味着——我们终于可以用更深的草稿模型了。
2.3 DFlash 的「窄瓶颈」死锁
DFlash(当前 SOTA)用了一个巧妙的设计:把目标模型多层 hidden states 拼接起来,过一个 FC 层,生成一个「上下文特征」,然后通过 KV Injection 注入到草稿模型的每一层。
问题出在这两个耦合的局限:
| 局限 | 具体表现 |
|---|---|
| 单层共享 | 所有草稿层收到同一个融合特征,无法专业化 |
| 层数饱和 | 加深草稿模型时,acceptance length 不再提升,因为新层没有新信息可用 |
这俩问题是耦合死锁:没有差异化输入,加深度没用;深度不够,又无法充分利用注入的知识。
---
三、DFlare 的三把手术刀
DFlare 的核心思路是 "flare out"(扩展开)——把 DFlash 的窄瓶颈撑开,让信息流动更自由。
🔧 手术刀一:Adaptive Layer Fusion(层感知自适应融合)
核心洞察:目标模型的不同层编码不同抽象层次——浅层是语法模式,深层是语义表示。为什么让所有草稿层看同样的混合物?
做法:
- 引入可学习的融合权重矩阵
W^fuse ∈ R^(D×T),D=草稿层数,T=选取的目标层数 - 每层草稿模型学自己的 softmax 权重组合:
α^(i) = softmax(W^fuse_{i,:}) // 第 i 层对 T 个目标层的权重
f_t^(i) = RMSNorm(Σ_j α_j^(i) · h_t^(j)) // 第 i 层的专属融合特征
- 训练完权重预计算缓存,推理时只是标量加权求和,零额外延迟
效果:
- 浅层草稿可以专注目标模型的浅层特征(语法、局部模式)
- 深层草稿可以专注深层特征(语义、推理结构)
- 每层都有「自己的视角」,专业化成为可能
🔧 手术刀二:Heterogeneous KV Projections(异构 KV 投影)
核心洞察:草稿模型的 hidden states 和目标模型的上下文特征,是两种完全不同的信息——前者是扩散过程中的噪声预测,后者是目标模型的语义知识。强行共享同一个 KV 投影矩阵,等于逼一个投影同时服务两个正交空间。
做法:
- 目标上下文特征用独立的
W_K^t, W_V^t - 草稿 token 和目标 decode token 共享
W_K^d, W_V^d - Query 仍来自草稿位置
K = [F^(i)·W_K^t ; x_t·W_K^d ; X̂·W_K^d]
V = [F^(i)·W_V^t ; x_t·W_V^d ; X̂·W_V^d]
效果:目标知识和草稿噪声在 attention 中有各自的子空间,互不干扰。
🔧 手术刀三:Progressive Position-Weighted Loss(渐进位置加权损失)
核心洞察:投机解码中,block 前面位置的误差会级联影响后面所有 token。DFlash 用固定指数衰减权重,小 γ 收敛快但尾部优化不足,大 γ 收敛慢。
做法:线性 warmup 的 γ 调度:
γ(s) = γ_0 + (s/S)·(γ_max - γ_0) // s=当前步,S=总步数
w_k(s) = exp(-(k-1)/γ(s)) // 位置 k 的权重
效果:
- 早期:小 γ,聚焦前几个「简单」位置,快速收敛
- 后期:大 γ,逐渐展开到尾部「困难」位置
- 课程学习风格,最终所有位置都充分优化
四、实验结果:数字说话
4.1 主实验(Greedy Decoding)
| 目标模型 | 方法 | GSM8K | MATH500 | AIME25 | HumanEval | MBPP | MT-Bench | 平均加速 |
|---|---|---|---|---|---|---|---|---|
| Qwen3-4B | EAGLE3 | 2.56× | 2.57× | 2.46× | 2.52× | 2.41× | 2.39× | 2.49× |
| DFlash | 5.31× | 6.20× | 5.78× | 4.62× | 4.89× | 3.13× | 4.99× | |
| DFlare | 6.00× | 6.76× | 6.31× | 5.41× | 5.30× | 3.33× | 5.52× ⬆️11% | |
| Qwen3-8B | EAGLE3 | 2.43× | 2.42× | 2.34× | 2.46× | 2.26× | 2.20× | 2.35× |
| DFlash | 5.28× | 6.29× | 5.77× | 5.32× | 4.81× | 2.85× | 5.05× | |
| DFlare | 6.02× | 6.72× | 6.21× | 5.42× | 5.16× | 3.23× | 5.46× ⬆️8% | |
| GPT-OSS-20B | DFlash | 3.75× | 3.96× | 3.85× | 3.49× | 3.44× | 3.74× | 3.71× |
| DFlare | 4.06× | 4.20× | 3.88× | 3.71× | 3.72× | 3.87× | 3.91× ⬆️5% |
- 数学推理任务收益最大(GSM8K、MATH500 加速最明显)
- GPT-OSS-20B 上绝对加速较低(草稿模型和目标模型差距更大),但相对提升依然稳定
- MT-Bench(开放对话)绝对值低但相对增益最大——说明差异化知识注入对多样本生成尤其有效
4.2 Stochastic Decoding(Temperature=1)
采样引入分布不匹配,所有方法性能下降,但 DFlare 保持优势:
- Qwen3-4B:acceptance length +10.9%
- Qwen3-8B:+11.3%
- GPT-OSS-20B:+3.9%
4.3 消融实验
| 变体 | 相对 DFlare 表现 |
|---|---|
| −Softmax(去掉权重归一化) | 最严重下降——权重约束对稳定性至关重要 |
| −KVProj(去掉异构投影) | 一致下降 |
| −Loss(去掉渐进损失) | 下降 |
| ++FC(融合后加额外 FC 层) | 无提升——说明轻量设计已足够 |
五、Scaling Analysis:三个维度的解锁
5.1 Draft 深度 Scaling
DFlare 5→6→7 层,acceptance length 和 speedup 单调提升,每层都有意义。
DFlash 同样条件下,5→6→7 层,提升迅速饱和。
结论:Layer-wise Fusion 真正解锁了深度扩展的潜力。
5.2 目标层数 Scaling
DFlare:T=5→7→9,acceptance length 和 speedup 持续提升——能消化更多目标层信息。
DFlash:T=5→7 有小幅提升,7→9 几乎无增益——单层 FC 投影的信息瓶颈。
5.3 训练数据 Scaling
从 270K → 800K → 2.4M 样本,DFlare 持续改进,没有饱和迹象。
论文坦诚:受计算资源限制,未能探索更大规模训练,这很可能是下一个收益点。
---
六、工程实践:AngelSlim 集成
DFlare 已集成到腾讯开源的 AngelSlim 工具包中:
# 安装
pip install angelslim
# 一键评估
python -m angelslim.benchmark \
--model Qwen/Qwen3.5-27B \
--draft-model dflare-qwen3.5-27b \
--datasets gsm8k,math500,humaneval,mbpp,mt-bench
支持的推理引擎:
- vLLM(
--backend vllm) - SGLang(
--backend sglang)
| 参数 | 推荐值 | 说明 |
|---|---|---|
num_draft_layers | 7 | 草稿模型层数 |
block_size | 16 | 每 block 预测的 token 数 |
num_target_layers | 9 | 选取的目标模型层数 |
training_samples | 2.4M | 训练数据量 |
七、与 DFlash 的对比总览
| 维度 | DFlash | DFlare |
|---|---|---|
| 目标知识融合 | 单层 FC 投影,所有草稿层共享 | 每层独立的 softmax 加权组合 |
| 可融合目标层数 | 5 层 | 9 层(可更多) |
| KV 投影 | 草稿和目标共享 | 异构独立投影 |
| 训练损失 | 固定指数衰减权重 | 渐进 warmup 调度 |
| 草稿深度扩展 | 迅速饱和 | 持续收益 |
| 训练数据 | 800K | 2.4M |
| Qwen3-4B 加速 | 4.99× | 5.52× |
| Qwen3-8B 加速 | 5.05× | 5.46× |
八、局限与展望
局限: 1. 训练成本高——更深的草稿模型 + 更大的训练集,一次性投入大(但推理收益可快速摊平) 2. 数据_scaling 未饱和——2.4M 可能还不是上限,受资源限制未能继续探索
展望:
- 更大的训练数据可能带来进一步收益
- 结合其他投机解码技术(如 tree-based verification)可能有叠加效果
- 应用到更大规模模型(100B+)的扩展性值得验证
九、为什么这很重要
DFlare 的价值不止于几个百分点的加速提升。它解决了一个更深层的问题:在 Block Diffusion 范式下,草稿模型的容量到底能不能真正扩展?
DFlash 证明了「扩散草稿 + KV 注入」可行,但触及了天花板。DFlare 用三个轻量但精准的设计,证明了天花板是可以打破的——而且打破的方式不是堆参数,而是重新设计信息流动的方式。
Layer-wise Fusion 只有 63 个额外参数,却解锁了深度、数据两个维度的扩展。这是一个典型的「架构创新 > 规模暴力」的案例。
对于实际部署:如果你在用 AngelSlim 或类似的投机解码框架,DFlare 提供了一个经过充分验证的升级路径。5.5× 的加速意味着同样的 GPU 可以服务多一倍的请求,或者同样的请求延迟减半。
---
References
- DFlare 论文:arXiv:2606.02091 | https://arxiv.org/abs/2606.02091
- DFlash 论文:arXiv:2602.06036 | https://arxiv.org/abs/2602.06036
- AngelSlim GitHub:https://github.com/Tencent/AngelSlim
- AngelSlim 文档(DFlare 章节):https://angelslim.readthedocs.io/zh-cn/latest/features/speculative_decoding/dflare.html
#DFlare #投机解码 #SpeculativeDecoding #BlockDiffusion #LLM推理加速 #AngelSlim #腾讯 #北大 #记忆 #小凯