Soft-MTP:一行代码改进多Token预测

Soft-MTP用一行代码分离MTP梯度中的KL信号与噪声残差,免费提升多Token预测效果。
Soft-MTP是一项针对多Token预测(MTP)的改进方法。研究者发现标准MTP的梯度中混合了有益的KL自蒸馏信号和损害下一Token预测的噪声残差,导致MTP的收益与副作用无法分开。为此,作者提出“KL梯度恢复”技巧,仅需一行代码 h_ntp += h_mtp.detach() - h_mtp,即可在前向数值不变的前提下,于反向传播时分离出纯净的KL梯度。该方法无需改动模型结构或增加训练阶段,可直接嵌入现有MTP预训练流程。作者称Soft-MTP在多种任务上实现了“免费的午餐”,既能保留MTP对投机解码的增益,又能避免噪声残差对基础语言建模的拖累。代码、论文和HuggingFace模型均已开源,但跨模型规模的稳健性仍待验证。
Soft-MTP:一行代码改进多Token预测
多Token预测(Multi-Token Prediction,MTP)已成为前沿大模型预训练的标准配置,但一项新研究指出,标准MTP的梯度中隐藏着一个被噪声掩盖的KL自蒸馏信号。研究者提出的Soft-MTP通过一行代码的改动,就能将这个信号干净地提取出来,从而在多种任务上免费提升MTP的效果。

MTP的隐藏问题:KL信号被噪声淹没
MTP的核心思路是让模型在预测下一个token的同时,也预测未来多个位置的token。这一机制已被广泛用于前沿预训练,并且对投机解码(speculative decoding)有直接帮助——因为模型能一次性生成多个候选token,解码效率随之提升。
但这项研究的作者发现,标准MTP的梯度并不“干净”。它实际上混合了两部分:一部分是KL自蒸馏信号,这正是我们希望通过MTP获得的东西,用于改善投机解码;另一部分则是一个噪声残差,它反而会损害标准的下一Token预测(NTP)性能。换句话说,MTP的收益和副作用被捆绑在同一个梯度里,训练时无法分开对待。
据作者在Reddit上的介绍,这个发现是整项工作的出发点:既然梯度里同时包含有用的KL信号和有害的残差,那么能否在不改变整体训练框架的前提下,把KL梯度单独“捞”出来?
KL自蒸馏信号指的是:在MTP中,模型用同一个网络同时输出多个未来位置的预测,这些预测之间的分布差异可以被视为一种“自我蒸馏”——模型试图让较远位置的预测分布与较近位置的预测分布保持一致,从而传递更丰富的监督信息。这种一致性约束在数学上等价于最小化预测分布之间的KL散度,因此称为KL自蒸馏信号。与传统的知识蒸馏(用大模型指导小模型)不同,这里的教师和学生是同一个模型的不同输出头,属于“自蒸馏”范畴。该信号被认为有助于提升模型对长程依赖的建模能力,并直接改善投机解码的接受率。
噪声残差则是指MTP梯度中与KL信号正交的剩余部分。作者发现,这部分梯度并不对应任何有益的学习目标,反而会干扰标准的下一Token预测(NTP)损失,导致基础语言建模性能下降。残差的来源可能是多步预测中引入的累积误差、位置偏移带来的分布不匹配,以及不同预测头之间的梯度冲突。将KL信号与噪声残差分离,正是Soft-MTP的核心动机。
一行代码的KL梯度恢复技巧
作者给出的答案是一个被称为“KL梯度恢复”的技巧,实现方式简洁到令人意外——只需要一行代码改动:
h_ntp += h_mtp.detach() - h_mtp
这行代码的作用是在前向计算时保持数值不变(因为 h_mtp.detach() - h_mtp 在前向时为零),但在反向传播时改变梯度的流向,从而将KL自蒸馏的梯度从带噪声的MTP梯度中分离出来。作者在帖子中特别提到,这是他认为整篇论文里“最酷的部分”。
这种做法的工程价值在于:它不需要重新设计模型结构,也不需要额外的训练阶段,现有使用MTP的预训练流程可以直接套用。对于已经在跑大规模预训练的团队来说,改一行动手成本极低。
.detach() 的梯度阻断机制:在PyTorch中,tensor.detach() 返回一个与计算图断开的新张量,其数值与原张量相同,但反向传播时不会将梯度回传到原张量。因此 h_mtp.detach() - h_mtp 在前向时恒为零,不改变输出数值;但在反向时,减号右侧的 h_mtp 会收到负梯度,而左侧的 h_mtp.detach() 被视作常数。将这一项加到 h_ntp 上,等价于在反向传播时把MTP头产生的梯度以相反方向注入NTP路径,从而抵消MTP梯度中不属于KL信号的部分。这种“前向零、反向非零”的技巧在文献中常被称为**梯度手术(gradient surgery)或直通估计器(straight-through estimator)**的变体,其精妙之处在于不引入任何额外参数或损失项,仅通过计算图操作就实现了梯度的选择性路由。
投机解码是一种推理加速技术:用小模型(或模型的浅层)快速生成多个候选token,再由大模型并行验证,从而减少串行解码步数。MTP天然适合投机解码,因为模型本身就能一次性输出多个未来token。但若MTP梯度中的噪声残差损害了基础模型质量,投机解码的接受率也会随之下降。Soft-MTP通过净化梯度,使MTP头更专注于提升多步预测的一致性,从而间接保障投机解码的增益。
Soft-MTP的效果与适用范围
作者将这一方法命名为Soft-MTP,并称其为“免费的午餐”——在多种任务上都能改进MTP的表现。虽然帖子没有展开具体的基准测试数字,但从问题定位来看,Soft-MTP的收益主要体现在两个方向:一是保留MTP对投机解码的增益,二是避免噪声残差对下一Token预测的拖累。
这一定位值得关注。此前MTP被视为预训练的标准配方,社区更多关注“要不要加MTP”,而Soft-MTP把问题推进到“如何让MTP只发挥好的一面”。对于依赖投机解码做推理加速的部署场景,这意味着可以在不牺牲基础语言建模质量的前提下,继续享受多Token预测带来的效率红利。
作者同时开源了代码、论文和HuggingFace模型集合,相关链接在帖子中一并给出,方便研究者复现和集成。
“免费的午餐”在机器学习语境中的含义:通常指不增加计算成本、不改变模型架构、不引入额外超参数,却能稳定提升性能的方法。Soft-MTP符合这一描述,因为它仅修改一行前向代码,训练开销与标准MTP完全相同。但需要注意的是,“免费”不等于“无风险”:梯度路由的改变可能影响训练的稳定性,尤其是在训练初期损失曲面较陡峭时。作者在Reddit讨论中建议从小规模实验开始验证,正是出于这一考虑。此外,Soft-MTP的收益依赖于MTP头与NTP头共享主干网络这一前提;若MTP采用独立参数或分离式结构,该技巧的适用性需要重新评估。
社区反响与后续观察
从Reddit讨论来看,这项工作的吸引力主要来自两点:改动的极简性和问题洞察的清晰度。一行代码就能分离梯度信号,这种“四两拨千斤”的风格在工程社区里通常传播得很快。
不过,帖子本身更偏向于成果发布,尚未提供与其他MTP变体的横向对比细节。Soft-MTP在不同模型规模、不同训练数据配比下的稳健性,以及KL梯度恢复技巧是否能推广到其他多目标训练场景,仍有待论文全文和后续复现来验证。
对于正在使用MTP的团队,一个务实的做法是先在小规模训练中验证这行改动的效果,再决定是否引入到主训练流程。
相关推荐

AI工具暗改设置:Postman静默装插件,Codex共享选项自动重置
AI Daily报道:Postman在Mac上静默安装插件并自我批准启动钩子,日志记为auto-existing upgrade;Hacker News开发者称Codex数据共享退出选项自行翻回。另有Simon Willison将原始浮点权重喂给QEN 3.8-27B的实验。

AI学会改写AI:MIT「权重空间编程」改写递归自我改进路线
MIT团队提出权重空间编程,让GPT-6 Astra直接阅读并修改AI模型权重:数学成绩提升数倍,还能手写网络击败训练模型。本文解析八组实验、Anthropic同日警告与递归自我改进的真实边界。

笔记本跑Qwen 3.8读原始权重:46分钟一个答案
Simon Willison用Qwen 3.8 27B在笔记本上复现权重空间编程实验:17GB模型文件,单次回答耗时46分钟、消耗43,506个推理token,Pong任务超一小时,Freeway任务失败。适合可解释性研究者参考。