MTP在RL里为什么越训越慢?这篇论文把锅甩给了"熵",然后用拒绝采样把它解了

arXiv: 2606.12370 | Breaking Entropy Bounds: Accelerating RL Training via MTP with Rejection Sampling

核心摘要

如果你跑过大模型的 RL 训练,大概率被 rollout 阶段折磨过——一整个 pipeline 的时间,大半都耗在"让模型生成 response"这一步上。很自然的想法是上 MTP(Multi-Token Prediction)做投机解码加速。但几乎所有人都撞到同一堵墙:MTP 的接受率在 RL 训练过程中会一路下滑,加速效果越来越差,最后聊胜于无。

这篇来自 Qwen 团队的工作(代号 Bebop)做了件挺漂亮的事:它先把"接受率为什么下降"这个问题彻底拆开,发现真正的元凶不是大家以为的"策略和草稿模型的分布失配",而是 RL 训练中持续上升的策略熵——接受率和熵之间是一条干净的负线性关系。找到病根之后,药方也很对症:用概率拒绝采样替代贪心采样把接受率和熵解耦,再设计一个直接优化接受率的 end-to-end TV loss 替代传统的 CE/KL 目标。最终把接受率最高推到 95%,熵-接受率的斜率从 −1.68 压到 −0.06(降了 95% 以上),在 Qwen3.5/3.6/3.7 的异步 RL 训练上拿到最高 1.8 倍 的端到端加速。

我个人觉得这篇最值钱的地方,不是那个 1.8 倍,而是它把"MTP 在 RL 里失效"这件玄学讲成了一个可以用一行公式预测的物理现象。下面慢慢聊。


论文信息

  • 标题:Breaking Entropy Bounds: Accelerating RL Training via MTP with Rejection Sampling
  • 作者:Yucheng Li, Huiqiang Jiang, Yang Xu, Jianxin Yang, Yi Zhang, Yizhong Cao, Yuhao Shen, Fan Zhou, Rui Men, Jianwei Zhang, An Yang, Bowen Yu, Bo Zheng, Fei Huang, Junyang Lin, Dayiheng Liu, Jingren Zhou
  • 机构:Qwen 团队(论文实验全部基于 Qwen3.5/3.6/3.7 系列模型)
  • arXiv:2606.12370,提交于 2026 年 6 月 10 日
  • 链接:https://arxiv.org/abs/2606.12370

🤔 先说清楚问题:MTP 在推理里很好用,为什么一进 RL 就废了?

先补个背景,免得有人没跟上。MTP 是投机解码的一种实现方式——主模型(target)每生成一个 token 都要走一遍完整前向,很贵;于是挂几个轻量的 draft head 一次性猜出未来好几个 token,然后让 target 模型并行验证这些猜测。猜对了就一次性吃下多个 token,猜错了就回退。能一次接受多少 token,就是"接受率"或者"接受长度",它直接决定了你能省多少推理时间。

在普通推理部署里,MTP 表现相当能打。但 RL 训练是另一个故事。

RL 训练的 rollout 阶段就是在反复让策略模型生成样本。理论上 MTP 应该无缝接入、白嫖加速。问题是大家都观察到了同一个现象:训练刚开始 MTP 接受率挺高,训着训着就掉下来了

论文 Figure 2 把这个退化过程量化得很清楚。

图2:SWE-bench RL 训练中逐步 MTP 接受率的退化

图2:在 Qwen3.5-3.6 Plus 上跑 SWE-bench RL 训练时,每一步 MTP 的接受率变化。每条线是一次独立的 RL 运行。注意一个细节——越靠后的验证步退化得越狠:step 1 只掉了 1.2%,step 2 掉 2.6%,step 3 直接掉 3.5%。这是个会复利累积的问题,对多步 MTP 尤其致命。

为什么会这样?此前主流的解释是分布失配(distribution mismatch):RL 一直在更新策略模型的权重,但 MTP 模块在训练里通常是冻结的,于是策略模型和 draft 模型之间慢慢对不上号,接受率自然下降。顺着这个逻辑,之前的工作提出"在线更新 MTP"——RL 训练时同步训练 MTP head 让它跟上策略的变化。

听起来合理。但在线更新要额外维护 MTP 的优化器状态、要在 RL 每步插入 MTP 的梯度更新,显存和延迟开销都不小,而且实测改善有限。这就有点尴尬了——花了大代价,病却没怎么治好。

这篇论文的第一个贡献,就是告诉你:药开错了,因为病根诊断错了。


🔬 关键发现一:真正的元凶是熵,而且关系是线性的

作者做了一个分解实验,把 RL 训练中接受长度的变化拆成两块:一块是熵变化驱动的,一块是分布失配驱动的。形式上是这么写的:

\[\Delta\alpha_t = \underbrace{b\cdot(\mathcal{H}_t - \mathcal{H}_0)}_{\text{熵驱动}} + \underbrace{\Delta\alpha_t - b\cdot(\mathcal{H}_t - \mathcal{H}_0)}_{\text{失配驱动}}\]

然后看这两块各自贡献了多少。结果挺反直觉的。

图3:RL 训练中接受长度变化的分解

图3:把接受长度的总变化(灰色)拆成熵驱动分量(橙色)和 draft-target 失配分量(绿色)。三种配置对比下来结论很清楚:贪心采样(target-only)下,熵和失配都在拖后腿;而一旦换成拒绝采样 + CE loss,退化几乎全部由熵贡献,失配分量趋近于零——也就是说,RL 权重更新对 draft 和 target 的分布重叠其实没多大影响。

这个结果直接掀了桌子。大家忙活半天去对付的"分布失配",在拒绝采样下根本不是主要矛盾。真正让接受率往下掉的,是 RL 为了鼓励探索而刻意维持、甚至持续抬高的策略熵

为什么熵会压低接受率?直觉上不难理解:熵越大,说明策略模型的输出分布越平、越分散,下一个 token 的不确定性越高,draft 模型当然就越难猜中。论文把这件事做成了一个可证明的命题。

在最简单的贪心接受(target-only sampling)下,draft 贪心地选 \(\hat{y} = \arg\max_y q(y)\),然后以概率 \(p(\hat{y})\) 被接受。对训练良好的 draft 模型,单步接受率就是:

\[\alpha^{\mathrm{TO}} = \max_y p(y)\]

\(\max_y p(y)\) 是目标熵 \(\mathcal{H}(p)\) 的单调递减函数,下界是 \(\exp(-\mathcal{H}(p))\)。经验上它近似一条直线:

\[\alpha^{\mathrm{TO}} \approx a^{\mathrm{TO}} - b^{\mathrm{TO}} \cdot \mathcal{H}(p)\]

这条线性关系在不同模型规模、不同任务、不同训练阶段都稳得离谱。说白点——贪心接受的接受率天花板被 \(\max_y p(y)\) 死死按住,熵一涨它就跌,没有任何回旋余地。

这就是标题里"Entropy Bounds"(熵界限)的由来。问题是,RL 偏偏需要高熵来维持探索,你又不能为了 MTP 去压熵。死局。

图1a:熵与接受长度的负线性关系

图1(a):每个点代表不同规模 Qwen3.5/3.6/3.7 训练运行中某个 RL step 的平均熵和平均接受长度。可以看到原始的 MTP(受熵支配那条)接受长度随熵上升呈明显的线性下滑;而用 e2e TV loss + 拒绝采样训练出来的 draft(那条几乎水平的线),基本把熵依赖给抹平了。一句话——同样的熵波动,前者跟着抖,后者纹丝不动。


💡 关键发现二:换成拒绝采样,接受率就和熵解耦了

既然贪心接受的天花板被熵锁死,那换一种接受机制呢?

这里就要请出概率拒绝采样(probabilistic rejection sampling)。它和贪心接受的区别在于:draft token 不再贪心地取 argmax,而是从 draft 分布里采样 \(\hat{y} \sim q(\cdot)\),然后以概率 \(\min(1, p(\hat{y})/q(\hat{y}))\) 接受。它的单步接受率长这样:

\[\alpha^{\mathrm{RS}} = \mathbb{E}_{\hat{y}\sim q}\left[\min\left(1, \frac{p(\hat{y})}{q(\hat{y})}\right)\right] = \sum_y \min(p(y), q(y)) = 1 - d_{\mathrm{TV}}(p,q)\]

最后一个等号是关键。这里 \(d_{\mathrm{TV}}(p,q) = \frac{1}{2}\sum_y |p(y)-q(y)|\) 是总变差距离(Total Variation distance)。

看出门道了吗?拒绝采样的接受率等于 1 减去 draft 和 target 两个分布的 TV 距离。它取决于的是两个分布的"重叠程度",而不是某个单点的最大概率 \(\max_y p(y)\)

这意味着什么——只要 draft 模型能把整体分布形状学得跟 target 接近,哪怕熵很高、分布很平,接受率也能维持住。熵的影响被绕开了。而且拒绝采样还自带一个无偏保证:输出分布精确等于目标分布 \(p\),无论 draft 质量好坏,都不会污染最终的采样结果。这对 RL 训练很重要——你不能为了加速把策略采样的分布带偏了。

下面这张对比表,我觉得是理解全文的钥匙:

特性 贪心接受 (Target-Only) 拒绝采样 (Rejection Sampling)
接受率上界 \(\max_y p(y)\) 限制 等于完整分布重叠 \(\sum_v \min(p,q)\)
熵敏感性 高,直接随熵下降 低,对熵偏移不敏感
排名变化鲁棒性 脆弱,离散跳变 平滑退化,连续函数
适用场景 仅低接受率时吞吐略高 几乎所有实际部署(24 个组合里 23 个更优)

论文还给了一个决策边界(§7.5):当 \(d_{\mathrm{TV}}(p,q) \lt 1 - p(\hat{y})\) 时拒绝采样更优。实测 24 个模型-任务组合里有 23 个落在拒绝采样占优的区域。基本可以认为,对绝大多数实际部署,拒绝采样都该是默认选项。

不过这里有个伏笔——前面 Figure 3 里说的是"拒绝采样 + CE loss"下退化由熵驱动。注意,换了接受机制,但只要 draft 还是用传统 CE loss 训练的,熵依赖虽然减弱了却没消失。命题 2 证明了这点:CE/KL 训练的梯度形如 \(q_j - p_j\),会产生均匀的逐 token 失配,累积出来的 TV 距离约为 \(\frac{\sigma}{2}\exp(\mathcal{H}(p))\),又把熵给引回来了。所以光换采样方式还不够,训练目标也得改。


🔧 关键发现三:别再用 CE/KL 了,直接优化接受率本身

这是我认为全文最 elegant 的一刀。

逻辑链条是这样的:拒绝采样的接受率 = \(1 - d_{\mathrm{TV}}\),那 draft 训练的目标函数,理所当然应该直接去最小化 TV 距离。但传统 MTP 训练用的是 CE loss 或 KL 散度。KL 和 TV 是什么关系?Pinsker 不等式告诉你:

\[d_{\mathrm{TV}}(p,q) \leq \sqrt{D_{\mathrm{KL}}(p\|q)/2}\]

KL 只给了 TV 一个间接的上界。最小化 KL 并不能高效地最小化 TV——你在优化一个代理目标,而不是你真正关心的那个量。隔靴搔痒。

那就别绕了,直接拿 TV 距离当 loss

\[\mathcal{L}_{\mathrm{TV}} = d_{\mathrm{TV}}(p,q) = 1 - \sum_{v\in\mathcal{V}}\min(p(v), q(v))\]

其中 \(p\) 当成常数,梯度只流经 draft 模型的 \(q\)。这个 loss 对 logits 的梯度有个很好的性质——命题 3 证明它有界(绝对值 \(\leq 1\)),训练稳定。更妙的是它的梯度行为,我觉得比公式本身更值得品:

  • 对于 \(q_j \leq p_j\) 的 token(会被接受的):梯度推高它的 logit,鼓励 draft 多分配概率质量过去;
  • 对于 \(q_j > p_j\) 的 token(会被拒绝的):梯度压低 logit,惩罚 draft 的过度自信;
  • 对于 \(q_j \approx 0\) 的无关 token:梯度自动趋近 0,不在词表长尾上浪费力气。

对比一下三种目标的梯度(论文 Table 1):

属性 Forward KL Reverse KL TV Loss
梯度形式 \(q_j - p_j\) \(q_j[\log(q_j/p_j) - C]\) \(-q_j[\mathbb{1}[q_j\leq p_j] - C]\)
是否正比于 \(q_j\)
是否抑制尾部

而且作者没停在单步。MTP 是多步验证,\(\gamma\) 步的期望接受长度是个连乘求和:

\[\mathbb{E}[L] = \sum_{j=1}^{\gamma}\prod_{i=1}^{j}\alpha_i = \alpha_1 + \alpha_1\alpha_2 + \cdots + \prod_{i=1}^{\gamma}\alpha_i\]

于是提出 end-to-end TV loss,直接优化归一化的期望接受长度:

\[\mathcal{L}_{\mathrm{e2e}} = 1 - \frac{1}{\gamma}\sum_{j=1}^{\gamma}\prod_{i=1}^{j}(1 - d_{\mathrm{TV}}(p_i, q_i))\]

这个 e2e 形式有个天然的好处:早期的步骤会出现在更多连乘项里,自动获得更大的权重。这其实是一种动态的步级加权——比之前那些固定位置权重的方案更符合多步验证的复利逻辑(前面一步错了,后面再准也白搭)。

最关键的理论结果是命题 4。它证明 TV 训练得到的 draft 模型,失配是"概率正比"的,即 \(|q^*(v) - p(v)| \lesssim \delta\cdot p(v)\),于是 TV 距离变成:

\[d_{\mathrm{TV}}(p, q^*_{\mathrm{TV}}) \leq \frac{\delta}{2}\sum_v p(v) = \frac{\delta}{2}\]

这个上界里没有熵。 接受率 \(\alpha^{\mathrm{RS}}_{\mathrm{TV}} \geq 1 - \delta/2\),跟熵彻底脱钩。这就是为什么 Figure 1(a) 里 TV 训练那条线能做到几乎水平。理论和实验在这里咬得很死。

图4:SFT 训练中 CE loss 对比 TV loss 的接受长度

图4:SFT 阶段用 CE loss(实线)和 TV loss(虚线)训练 MTP 的接受长度对比,覆盖 Math、Code、Hybrid、Agent、Long-Horizon、SWE-Bench 等任务。TV loss 在所有 MTP 步骤上都一致更高,在 agentic 任务上增益尤其明显。这跟后面 Table 2 的数字能对上——SWE 和 Agent 是提升最大的两类。


📊 实验结果:接受率最高 95%,端到端加速 1.8 倍

光说理论没用,看数。先看核心的接受率对比表,Qwen3.5-35A3B 上、\(\gamma=3\)、拒绝采样,数字是相对 CE baseline 的提升量:

MTP Loss Math Code SWE Agent MTBench (OOD)
CE loss (baseline) 75.0 71.3 75.1 90.3 65.3
KL loss +0.0 +0.0 +0.2 +0.2 +0.0
Reverse KL loss +1.3 +1.0 −0.2 +1.0 +0.5
TV loss +2.4 +2.5 +3.3 +5.2 +1.4
e2e TV loss(本文) +3.0 +3.3 +8.0 +6.7 +2.3

几个值得说的点:

第一,KL loss 几乎没用。+0.0、+0.2,基本是噪声。这恰好印证了前面 Pinsker 不等式的分析——优化 KL 跟优化 TV 不是一回事,KL 训出来的 draft 在拒绝采样下没占到便宜。这个实验设计得挺狠,直接把"用 KL 当代理"的做法证伪了。

第二,e2e TV loss 在 SWE 任务上猛涨 8 个点,Agent 上涨 6.7 个点。作者的解释是 agentic 任务里有大量结构化、可预测的输出(工具调用格式、代码模板之类),draft 模型本来就容易猜,TV loss 又把分布对齐做到位,于是收益叠加。Agent 任务的 CE baseline 已经高达 90.3%,e2e TV 还能进一步推到 97.0%——这已经接近物理上限了。

第三,连分布外的 MT-Bench 都涨了 2.3 个点。说明 TV loss 学到的不是某个任务的过拟合技巧,而是更本质的分布对齐能力。

再看熵解耦的硬证据。论文统计了熵-接受率的拟合斜率:贪心接受和 RS+CE 的斜率约为 −1.68(熵每涨一点,接受率掉 1.68),而 RS + TV loss 的斜率只有 −0.06,几乎水平。降幅超过 95%。

图7b:RL 训练延迟对比

图7:RL 训练每步延迟对比(Qwen3.6-35A3B 和 Qwen3.6-Plus)。MTP + 拒绝采样(RS w/ TV)相比完全不用 MTP、以及用贪心接受,每步延迟都大幅降低。这才是落到工程上真正关心的指标——不是接受率数字好看,而是 RL 一步到底快了多少。

最终的端到端账:

  • 接受率:总体约 +10%,最高可达 95%(agent 任务上甚至到 97%);
  • 吞吐量:最高 +25% 额外推理吞吐;
  • RL 每步延迟:MTP + 拒绝采样相比无 MTP,降低 1.5–1.8 倍;agentic 任务的 rollout 阶段最高 2.4 倍加速;
  • 端到端:在 Qwen3.5/3.6/3.7 的异步 RL 训练中,最高 1.8 倍 加速。

不同模型规模上的接受率(Table 3,\(\gamma=3\),Qwen3.7 用 e2e TV,其余用 CE)也很整齐——接受率随模型规模一致上升,Qwen3.7-Plus 在 agent 任务上能到 98.6%,Qwen3.6-Plus 更是 99.1%:

Model Math Code SWE Agent Long-horizon MTBench
Qwen3.7-Max 87.6 87.7 81.9 94.6 77.2 73.2
Qwen3.7-Plus 87.4 85.7 79.2 98.6 78.0 74.3
Qwen3.6-Plus 82.2 78.7 75.2 99.1 75.6 71.0
Qwen3.6-35A3B 78.3 74.4 71.3 97.1 71.3 65.2

🎯 一个被顺手解决的工程难题:不用在线更新 MTP 了

前面埋的伏笔在这里收掉。既然分解实验证明了 RL 权重更新引入的失配在拒绝采样下可忽略,那个"在线更新 MTP"的昂贵操作——根本没必要做了

论文的实践结论是:在 RL 之前的 SFT 阶段,用 e2e TV loss + 拒绝采样把 MTP 训好一次(pre-RL 训练),这个 draft 就能在整个 RL 训练过程中保持稳定的高接受率,全程不用再碰它。这省掉的是 RL 期间 MTP 优化器状态的显存、以及每步插入 MTP 梯度更新的计算开销。

图1b:TV 训练带来更好的分布重叠

图1(b):TV 训练出来的 MTP 与策略模型实现了明显更好的分布重叠,这直接转化成更高的接受率和加速。这张图配合 (a) 看:左边解释了"为什么 TV 训练能抗熵",右边给出了"长什么样"的直观证据。

作者还做了反向验证(§6.3):如果你非要在 RL 期间在线更新 MTP,会怎样?

  • 从训好的 TV checkpoint 出发、继续用 TV loss 更新:没有明显改善(已经到位了,更新是多余的);
  • 用 CE loss 在线更新:接受率反而退化回 RS+CE 的水平——因为 CE 会把 draft 分布重新抹平,把 TV 训练辛苦换来的尖锐度给侵蚀掉了;
  • 贪心接受 + CE 在线更新:因为分布失配甚至可能掉得更惨。

这组对比挺有说服力的。它不只说"在线更新没必要",还说明"用错了 loss 的在线更新是负优化"。


我的判断:把玄学做成了物理

读完最大的感受是,这篇论文的价值不在某个单点技巧,而在它的诊断方式

"MTP 在 RL 里接受率会掉"这件事,业界观察很久了,但大家的归因停留在"分布失配"这种说得通却没法量化的解释上,开出的药方(在线更新)又贵又不灵。这篇做的事是:把退化拆成熵和失配两个可测量的分量,用一条线性关系把熵那一块钉死,然后顺着这条线一路推导出"该用拒绝采样"+"该用 TV loss"两个对症的解法。整条逻辑链是闭合的——从现象到理论到方法到实验,每一环都咬得上。我尤其欣赏 KL loss 那个 +0.0 的结果,它等于把"用 KL 当代理目标"这条老路当众判了死刑。

要说几个需要冷静看待的地方:

一是所有实验都在 Qwen 自家模型上做的,跨架构(比如别家的 MoE、不同的 tokenizer)能不能复现这条线性关系,论文没覆盖。熵-接受率的线性关系作者声称很稳健,但样本毕竟都来自同一个模型家族。

二是 TV loss 的工程实现有坑。论文 §7.8 提到 top-K 近似不稳定——即使 K=20000,收敛也比全词表慢,最后只能上 fused 全词表 TV loss kernel。这意味着想复现得有相应的 kernel 工程能力,不是改几行 loss 就完事。

三是那个 1.8 倍的端到端加速,依赖 agentic 任务的特性(长生成、结构化输出、多轮交互压低有效 batch size)。在纯数学推理这种生成相对短、熵也更集中的任务上,收益会打折。论文自己的数字也显示 agent 任务的 rollout 加速(2.4 倍)远高于其他任务,所以"1.8 倍"更像是 agent 场景下的上限,不是普适数字。

但这些都是工程落地的细节,不影响核心贡献的成色。如果你正在搭大模型的 RL 训练 pipeline、又被 rollout 阶段卡着喉咙,这篇论文给的三条 recipe——上拒绝采样、用 e2e TV loss、pre-RL 训一次就够——非常值得直接抄作业。尤其是"pre-RL 训一次"这条,几乎是零额外训练成本就能拿到稳定加速,性价比极高。

最后留个开放问题:论文 §7.6 提到接受率随生成位置变化、长链推理里熵会上升,作者顺嘴提了一句"自适应 MTP 策略的潜力"。这暗示着还有一层优化空间没挖——在一条生成序列内部,根据当前熵动态调整 MTP 的验证步数 \(\gamma\)。这个方向如果做出来,可能又是一篇。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我