假设你有跑一个本地大语言模型,比如 Qwen3.5-27B,它写代码的时候一个字一个字往外蹦——这是自回归,一个 token 生成完了才能生成下一个。GPU 算力很强,但这样串行跑,大部分时间都在等,利用率低得可怜。
以前有人想了个办法叫 Speculative Decoding:让一个小模型先快速"猜"一串 token,大模型再并行检查哪些猜对了。猜得准就省时间。EAGLE-3 是这个方向的顶尖方案,但它的"猜"模型也是自回归的——猜 8 个 token 要跑 8 次,成本线性增长。所以只能做得很浅,猜不准。
**DFlash 换了个思路。它用扩散模型来"猜"。**
扩散模型是什么?想象你有一张模糊的照片,扩散过程就是一步步让它变清晰。反过来,从噪声开始,一步步去噪,最后得到清晰的图像。关键点:这个"去噪"过程是并行的——一步操作就能影响整张图的所有像素。
DFlash 把这个思路用到文本上。它训练了一个小扩散模型(drafter),只负责"猜测"。不管要猜 8 个还是 16 个 token,都是一次前向传播搞定。这意味着 drafter 可以做得很深——5 层 Transformer,比 EAGLE-3 的 1 层强多了,猜得更准,但延迟反而更低。
但这还不够。如果小模型完全从零开始猜,肯定猜不准。**DFlash 的核心创新是:它从大模型的隐藏层抽取特征,注入到小模型的每一层。** 大模型"知道"接下来可能发生什么,小模型用这个信息来"猜"。
这就好比——想象你在走一条从没走过的路。如果完全瞎走,大概率走错。但如果有个对讲机,前面有个朋友告诉你"前面路口左转",你猜对的概率就高多了。而且 DFlash 不是只在起点给提示,是在每个路口都给提示。
**实测数据**:Qwen3.5-27B 在 HumanEval 上,原本每秒 84 个 token,用 DFlash 加速后每秒 427 个 token——**5.2 倍**。而且是完全无损的加速,输出质量和原版一模一样。
这让我想起一件事。以前人们认为扩散模型生成质量不如自回归模型,所以大家都在想办法让扩散模型"追赶"自回归。但 DFlash 问了一个不同的问题:扩散模型真的需要在质量上竞争吗?还是只需要做一个优秀的"猜测者"?
答案现在看来很明显——它只需要猜。猜得快、猜得准,验证交给自回归模型来做。各取所长。
这算不算理解了?让我检验一下。如果让你给一个大一新生解释 DFlash,你会怎么说?
你会说:想象你在写一个长句子。普通的大模型像是一个字一个字认真想。DFlash 呢,它先用一个"草稿生成器"快速写一版——这个生成器写得很快但不一定对。然后大模型像老师改作业一样,快速检查一遍,对的保留,错的改掉。草稿生成器用的是一种叫"扩散模型"的技术,特点是写得快(一次能写一堆字),而且它会偷看大模型的"思路"来提高自己的猜测准确率。
这样解释,你能听懂吗?如果听懂了,说明我理解得还行。如果还是晕,那我可能自己也还没搞清楚。
这就是 DFlash。不是什么魔法,就是把两个东西拼在一起,让各自干自己擅长的事。聪明,但不复杂。
---
技术细节补充:
- **训练成本极低**:drafter 复用 target 的 embedding 和 LM head(冻结),只训中间层
- **一步去噪**:因为有 target 隐藏特征做条件,传统扩散的多步迭代不需要了
- **已适配框架**:vLLM、SGLang、Transformers
- **drafter 仅 2B 参数**(27B 版本),非常轻量
参考:z-lab.ai/projects/dflash, arXiv:2602.06036
#科普 #DFlash #Qwen3.5 #推理加速 #扩散模型 #费曼风格
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!