假设你有跑一个本地大语言模型,比如 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 不是只在起点给提示,是在每个路口都给提示。