扩散大模型(dLLM)出道时曾被寄予厚望,号称要靠并行解码干翻自回归模型(AR)的统治地位。结果呢?现实很骨感:一旦开启“狂暴模式”并行解码,模型智商就断崖式下跌,错误像推多米诺骨牌一样,一张倒、全盘崩。
这就是 dLLM 的阿喀琉斯之踵:想快?那就得接受变傻。
但最近一篇名为《DMax: Aggressive Parallel Decoding for dLLMs》的论文,似乎要给这个死结来上一刀。老实讲,看完数据和方法,个人觉得这可能是近期 dLLM 领域最务实的一次升级。
并行解码的“致命陷阱”
先说个残酷的事实:现有的扩散语言模型,本质上都有点“死脑筋”。
在传统的掩码扩散模型(MDLM)里,解码过程是一场“一锤子买卖”。模型把被遮住的 token 预测出来后,这个 token 就被锁死,当作已知条件去推导下一个。这听起来没毛病,但问题在于——它没有后悔药吃。
一旦并行解码开启,模型一口气预测一堆 token,只要中间混进去一个错误,这个错误就会像病毒一样扩散,污染后续所有的预测。这就好比考试写答案,第一题写错了一个字,后面所有题目都跟着这个错字往下编,最后整张卷子逻辑崩塌。
这就是所谓的“错误累积”。以前大家想解决这个问题,只能牺牲速度,少预测几个词,或者搞搞蒸馏。但 DMax 的思路很野:既然容易出错,为什么不教模型学会“自我修正”?
给模型喂点“后悔药”
DMax 的核心逻辑,就是把那个“非黑即白”的二值解码过程,变成一个可以反复横跳的连续过程。
作者提出了一个叫 On-Policy Uniform Training (OPUT) 的训练策略。这名字听着学术,其实逻辑挺有意思。
以前训练模型,大家喜欢用随机噪声去“污染”文本,然后让模型学怎么还原。但 DMax 觉得这不够真实——推理时模型犯的错,往往不是随机乱填,而是看起来很像那么回事的“一本正经胡说八道”。
所以 OPUT 干脆让模型“吃自己的错”。它用模型自己预测出来的分布去构造训练数据,让模型学会从自己可能犯错的预测中恢复出正确答案。
这就像是专门训练一个改错题高手,不是让他做新题,而是让他反复看自己以前做错的卷子,学会怎么把错题改对。
这种“同策略训练”极大地缩小了训练和推理之间的差距。实验证明,这一招让 LLaDA-2.0-mini 在 GSM8K 上的准确率不降反升,推理速度还更快了。
软解码:给不确定性留个后门
光会改错还不够,DMax 还搞了个更绝的招数:Soft Parallel Decoding (SPD)。
传统的解码,预测出来是 "A" 就是 "A",是个死板的离散 token。但 DMax 引入了一个“软嵌入”的概念。
简单说,模型预测出一个词时,不再把它当成板上钉钉的事实,而是把它看作一个**“带权重的建议”**。如果模型对这个词信心不足,它就会在这个词的嵌入和掩码嵌入之间做个插值。
这操作有点像“骑墙派”。模型不会立刻表态说“这就是答案”,而是说:“我觉得大概是这个词,但我也不太确定,咱们下一轮再看看能不能改。”
这种机制让模型在迭代过程中保留了“悔棋”的权利。哪怕第一轮预测错了,因为保留了不确定性,后续步骤还能通过“软状态”把它修正回来,而不是被错误的上下文带偏。
说实话,这种设计非常符合直觉——人类说话写文章不也是这样吗?先打个腹稿,觉得不对劲再改改,谁也不是张口就是真理。
数据会说话:速度翻 3 倍,智商不掉线
理论吹得再好,还得看疗效。DMax 的实验数据确实有点东西。
基于 LLaDA-2.0-mini 这个基座模型,DMax 在数学推理 benchmark GSM8K 上,把 TPF(每次前向传播生成的 token 数)从 2.04 拉到了 5.47。这是什么概念?速度直接翻了近 3 倍,而且准确率几乎没有损失。
在代码生成 benchmark MBPP 上,TPF 也从 2.71 提到了 5.86。在两块 H200 显卡的加持下,模型甚至跑出了平均 1338 TPS 的惊人速度。
这意味着什么?意味着 dLLM 终于有了在推理速度上和 AR 模型“掰手腕”的资本,而且还没丢掉扩散模型特有的并行优势。
更有意思的是,如果你把 DMax 用在没经过 OPUT 训练的普通扩散模型上,效果会直接崩盘。这也侧面印证了这套方法的逻辑自洽性:先学会改错,才能大胆地“软解码”。
锐评:
DMax 这波操作,把 dLLM 从“落子无悔”的死胡同里拉了出来。它证明了并行解码不必以牺牲准确性为代价,关键在于模型得学会承认错误并自我修正。这不仅是技术的修补,更是对生成模型逻辑的一次重新审视。
参考链接:
https://x.com/_akhaliq/status/2042449645670916384