扩散模型反超自家老师:ALoDLM 把算力花在难 token 上
一个事实先摆出来。Amazon 和伊利诺伊大学芝加哥分校的团队,把 Qwen3-8B 拿来,用五十亿 token 做了一轮 SFT,训练目标从「逐个预测下一个词」换成了「并行填空」。同一副骨架,换了一种训练方式,十一个基准的平均分从 78.5 涨到 80.3。扩散语言模型第一次在同等规模上,平均分反超了它的自回归底座…
扩散模型反超自家老师:ALoDLM 把算力花在难 token 上
一个事实先摆出来。Amazon 和伊利诺伊大学芝加哥分校的团队,把 Qwen3-8B 拿来,用五十亿 token 做了一轮 SFT,训练目标从「逐个预测下一个词」换成了「并行填空」。同一副骨架,换了一种训练方式,十一个基准的平均分从 78.5 涨到 80.3。扩散语言模型第一次在同等规模上,平均分反超了它的自回归底座。这篇论文叫 ALoDLM,10 月 2 日放出代码和 8B 权重,arXiv 编号 2610.04198。
先说清楚痛点是什么。扩散语言模型(DLM)一口气预测很多个 token,天生快。但快的手一直有个弱点:质量不如同规模的自回归模型。这篇论文给了一个很干脆的诊断:计算-难度错配。填空题里,有的空一眼就会——「南京长江」后面跟「大桥」;有的空得想很久——一段证明的中间步骤。现有的扩散模型对所有空一视同仁,每个去噪步骤给每个位置同样的计算量。简单的空浪费算力,难的空算力不够。这个诊断本身不新,新的是解法动在了隐状态上。
它把 Transformer 切成三段:开头一段叫 Prelude(嵌入加前置块),中间一段叫 Recurrent Core(循环核心),结尾一段叫 Coda(收尾块)。8B 版的循环核心是中间十六层,前后各留了一些层不参与循环。外层照旧做多步去噪,每个去噪步骤里加一个内循环: representations 过一遍核心,Coda 读出一次 logits,一个额外的 ExitGate 头给出这个 token 「可以交卷」的概率。低熵、高置信的 token 先交卷,交出去的立即变成离散上下文,给还没交卷的邻居当参考;难交的 token 不从头重来,它的隐状态被保留,带着已经积累的思考继续过循环核心,最多四轮。这里有个容易忽略的细节:此前的置信度解码(confidence-based decoding)也会把没把握的 token 推迟,但推迟的代价是隐计算全丢、下一步从掩码嵌入重新算——相当于一个学生每做错一题就把草稿纸撕了重写。ALoDLM 的草稿纸不撕,这是隐状态持续精炼和「延迟提交」的本质区别。
训练怎么让模型学会「什么时候交卷」?答案是别教,建模成隐变量。每个 token 的退出时机是个没人标注的隐变量,作者推导了条件负证据下界(NELBO),把 token 预测和计算分配放进同一个目标函数,又设计了一个带方差缩减的无偏单轨迹梯度估计器把训练稳住。这套数学的产出可以直接看:GSM8K、MATH-500、MBPP、HumanEval 四个任务上,数字类 token 的首轮退出概率只有 0.369,比整体平均低 11.5%——没人教它「数字要多想」,它自己学会了。这个证据是全文我最喜欢的一张图。
战绩和账要一起给。八个 B 的版本:11 个基准平均 80.3,对 Qwen3-8B(78.5)和所有被测扩散模型(LLaDA 53.3、Dream 60.5、Fast-dLLM-v2 61.0、SDAR 74.2、WeDLM 75.1)平均分全超。但「11 个基准上超过」得拆开看:单项是十胜一平——MMLU 上 ALoDLM 与 Qwen3 打平(76.6 对 76.6),而且 MMLU 的最高分其实是 SDAR 的 78.5。1.7B 版本平均分也赢(65.5 对 63.8),但单项有败绩:MATH-500 输给自回归底座 10.2 分(61.8 对 72.0),MMLU 也输。速度那条更要把限定词捡回来:GSM8K 上吞吐约 2.7 倍于 vLLM 部署的 Qwen3-8B,前提是「相同或更高精度」——这个前提不是装饰,是这类比较里最容易作弊的地方,论文把它写在主图注里值得肯定。还有一个反向的账:K=4 是训练时定的最大循环深度,实测 K=8 并不比 K=4 更好,K=2 则明显到顶——深度不是越大越好,中段循环比尾段循环有效。
测试时缩放那笔账很小但真实。推理解码时有个阈值 q 控制退出松紧,把它拧紧,平均每 token 循环深度从 1.6 升到 2.34,十一个基准平均分从 77.9 升到 79.1。1.2 分换 46% 的算力,不是什么惊人的斜率,但这条轴是白送的——底座没变,权重没动,拧一个旋钮就有。默认状态下平均每 token 只用 1.6 轮(上限 4),也就是说平均算力比「每个 token 都跑满」省了六成,分数还更高——自适应不只是重新分配,还在净省。
往主线上挂两笔。一是算力按难度分配这件事,在 agent 那边叫验证带宽按爆炸半径分配,在 RL 那边叫把预算花在硬任务上,这里落到了 token 粒度:同一个序列里,容易的 token 提前退场省下的算力,全部流向难 token。CodeHack 那篇的「判断归模型、执行归代码」是任务级的分工,ALoDLM 是序列内每一步的分工,机制不同,账本同页。二是生成步数的谱系:从自回归到扩散到蒸馏再到一步生成,方向一直是「把步数压少」,ALoDLM 反着来——步数不减,把每一步里面的计算做成自适应的。两条路最后在同一个地方碰头:算力跟着难度走,而不是跟着流程走。
落地前看一眼许可证:ALoDLM-8B 挂的是 CC-BY-NC-4.0,非商用——底座 Qwen3 本身是 Apache 2.0,Amazon 转出来的这版不许直接拿去卖钱。代码仓库 amazon-science/ALoDLM 十月二日建,带优化过的推理实现,六天三十四个 star,权重下载六百多次。想看它真的在干什么,去项目页的退出概率图找数字 token 那根柱子——0.369,全文最诚实的数字都在那里。