训练策略的幻觉:为什么LLM强化学习的真正目标是推理策略单调改进

笔记日期: 2026-07-06 笔记作者: Zhongzhu Zhou 论文标题: The Mirage of Optimizing Training Policies: Monotonic Inference Policies as the Real Objective for LLM Reinforcement Learning 作者: Jing Liang, Hongyao Tang, Yi Ma, Yancheng He, Weixun Wang, Xiaoyang Li, Ju Huang, Wenbo Su, Jinyi Liu, Yan Zheng, Jianye Hao, Bo Zheng arXiv: https://arxiv.org/abs/2606.29526 状态: 预印本(arXiv,2026年6月)

一句话总结

MIPU 指出了 LLM RL 后训练中一个被系统性忽视的目标错位问题——在训练引擎与推理引擎精度不一致的现实工程环境下,训练侧策略 π\pi 单调改进并蕴含推理侧策略 μ\mu 单调改进,因此提出了以推理侧单调改进(MIPI)为真正目标的两步框架:Step 1 用采样器参考权重修正 GRPO 的重要性采样偏差,Step 2 用推理差距代理 T^post\hat{T}_\text{post} 过滤有害更新,在 Qwen3 系列模型的数学推理任务上将 GRPO 基线提升了约 2-3 个百分点,同时消除了训练崩溃。

前置知识

读这篇论文需要先掌握几块背景知识。我在这里尽量写得让只懂基础深度学习的同学也能跟上。

1. LLM 后训练强化学习的 MDP 建模

当我们用强化学习(RL)来优化大语言模型(LLM)时,标准做法是把文本生成建模成一个马尔可夫决策过程(MDP)。具体映射如下:

  • 状态(State)sts_t 到目前为止生成的所有 token 序列,即 (x,y1:t)(x, y_{1:t}),其中 xx 是输入 prompt,y1:ty_{1:t} 是已生成的前 tt 个 token
  • 动作(Action)ata_t 在当前状态下生成下一个 token yt+1y_{t+1},动作空间就是词表
  • 策略(Policy)πθ\pi_\theta 参数化的 LLM,给出在当前状态下每个 token 的概率分布
  • 奖励(Reward)rr 通常只在序列结束时给出稀疏奖励(例如答案是否正确,或奖励模型的评分)

策略的期望回报(performance objective)定义为:

J(π)=Eτπ[t=0Tγtrt](1)J(\pi) = \mathbb{E}_{\tau \sim \pi}\left[\sum_{t=0}^{T} \gamma^t r_t\right] \tag{1}

其中 τ\tau 是由 π\pi 生成的轨迹,γ\gamma 是折扣因子。LLM RL 的目标就是最大化 J(π)J(\pi)

2. PPO、TRPO 与 GRPO

TRPO(Trust Region Policy Optimization) 是策略梯度的经典方法,核心思想是限制每步参数更新的幅度,用 KL 散度作为约束来保证策略不会更新太远:

maxθ  Es,aπold ⁣[πθ(as)πold(as)Aπold(s,a)]s.t.  KL[πoldπθ]δ(2)\max_\theta \; \mathbb{E}_{s,a \sim \pi_\text{old}}\!\left[\frac{\pi_\theta(a|s)}{\pi_\text{old}(a|s)} A^{\pi_\text{old}}(s,a)\right] \quad \text{s.t.} \; \mathbb{KL}[\pi_\text{old} \| \pi_\theta] \le \delta \tag{2}

PPO(Proximal Policy Optimization) 把 TRPO 的 KL 约束换成 clip 操作,计算更简单:

JPPO(θ)=E ⁣[min ⁣(r(θ)A,  clip(r(θ),1ε,1+ε)A)](3)J_\text{PPO}(\theta) = \mathbb{E}\!\left[\min\!\left(r(\theta) A, \;\text{clip}(r(\theta), 1-\varepsilon, 1+\varepsilon) A\right)\right] \tag{3}

其中 r(θ)=πθ/πoldr(\theta) = \pi_\theta / \pi_\text{old} 是重要性采样比率(IS ratio),AA 是优势函数估计,ε\varepsilon 是 clip 阈值(通常取 0.2)。

GRPO(Group Relative Policy Optimization) 是专门为 LLM RL 设计的算法,用组相对优势代替需要独立价值网络的 GAE。对于同一个 prompt,采样 GG 条回答 {y1,,yG}\{y_1, \ldots, y_G\},用每条回答的奖励减去组内平均得到优势估计:

A^i=ri1Gj=1Grj(4)\hat{A}_i = r_i - \frac{1}{G}\sum_{j=1}^G r_j \tag{4}

GRPO 的核心优势是不需要 Critic 网络,大幅简化了训练架构,因此在 DeepSeek-R1 等模型中被广泛采用。

3. 性能差异恒等式(Performance Difference Identity)

性能差异恒等式(PDI)是理解 TRPO/PPO 为什么有效的关键工具,也是本文推导的基础:

J(π)J(π)=11γEsdπ,aπ ⁣[Aπ(s,a)](5)J(\pi') - J(\pi) = \frac{1}{1-\gamma} \mathbb{E}_{s \sim d^{\pi'}, a \sim \pi'}\!\left[A^\pi(s, a)\right] \tag{5}

其中 dπd^{\pi'} 是策略 π\pi' 诱导的状态占用度量(occupancy measure),Aπ(s,a)A^\pi(s, a) 是当前策略 π\pi 的优势函数。这个等式说明:新策略比旧策略好,当且仅当新策略访问的状态-动作对在旧策略的优势估计下期望为正。TRPO 正是用这个等式的下界来保证每步更新都是单调改进。

4. 训练-推理分离的工程背景

现代大规模 LLM RL 训练的工程架构极其复杂,关键在于它通常使用两个不同的引擎

推理引擎(Inference Engine): vLLM、SGLang 等,专门优化批量推理吞吐量,支持 PagedAttention、连续批处理、FP8 量化等技术,用来快速生成大量训练轨迹(rollouts)。

训练引擎(Training Engine): FSDP、Megatron-LM 等,专门优化模型训练,支持张量并行、流水线并行、梯度累积等,用来高效更新模型参数。

这两个引擎各司其职,极大提升了整体训练效率。但这里藏着一个工程上的隐患:即使参数权重完全同步,两个引擎对同一条序列赋予的概率也不一定相同。主要原因有以下几点:

  • 精度差异: 推理引擎常用 FP8 量化,而训练引擎用 BF16 或 FP32
  • Decode 算法差异: Flash Attention、fused CUDA kernel、以及 causal mask 的实现细节都可能导致数值上的微小差异
  • 张量并行切分方式: 不同的并行切分会改变浮点运算的顺序,导致可重复但不一致的结果

5. 离策略 RL 与重要性采样

当用策略 μ\mu(采样策略)生成的数据来估计策略 π\pi(目标策略)的梯度时,就需要引入**重要性采样(IS)**来修正分布偏差:

Exπ[f(x)]=Exμ ⁣[π(x)μ(x)f(x)](6)\mathbb{E}_{x \sim \pi}[f(x)] = \mathbb{E}_{x \sim \mu}\!\left[\frac{\pi(x)}{\mu(x)} f(x)\right] \tag{6}

重要性采样权重 w=π/μw = \pi/\muπ\piμ\mu 差距很大时会产生高方差,这也是离策略 RL 的核心挑战之一。

问题背景:训练-推理不一致的目标错位

工程上的不一致:πμ\pi \neq \mu 是如何发生的

在标准 LLM RL 训练管线中,每轮训练大致分为以下步骤:

图1:LLM RL 标准训练管线

flowchart LR
    A[参数 θ_k\n当前检查点] --> B[推理引擎\nvLLM / SGLang\nFP8 量化]
    B --> C[采样轨迹\nRollouts\n策略 μ_k]
    C --> D[计算奖励\nReward Model\n或规则评分]
    D --> E[训练引擎\nFSDPpct / Megatron\nBF16 精度]
    E --> F[梯度更新\n策略 π_θ]
    F --> G[参数同步\n写回推理引擎]
    G --> A

注意图中标注的关键:推理引擎以 FP8 量化运行,而训练引擎以 BF16 运行。即便经过参数同步,下一轮推理引擎读入的也是被重新量化的 FP8 权重。

训练策略 πk\pi_k 是训练引擎在第 kk 轮更新前的参数状态,以 BF16 精度计算概率。
推理策略 μk\mu_k 是推理引擎在第 kk 轮同步后实际用来采样的策略,以 FP8 精度计算概率。

即便 θk\theta_k 完全相同,πk()μk()\pi_k(\cdot|\cdot) \neq \mu_k(\cdot|\cdot) 几乎必然发生。这不是 bug,是工程现实。

图2:训练-推理不一致的来源

flowchart TD
    W["权重 θ_k(相同)"]
    W --> P["训练引擎\n精度: BF16\n实现: FSDP\n→ 策略 π_k"]
    W --> M["推理引擎\n精度: FP8\n实现: vLLM\n→ 策略 μ_k"]
    P --> DIFF["概率不一致\nπ_k(τ) ≠ μ_k(τ)\n即使对同一条轨迹 τ"]
    M --> DIFF
    DIFF --> BIAS["IS ratio 偏差\nr = π_θ / π_k\n而真正需要的是\nr = π_θ / μ_k"]

目标层面的错位:训练侧改进 ≠ 推理侧改进

这里到了论文最核心的洞察。现有的所有 LLM RL 方法(包括 GRPO、PPO、各种修补方案)都在优化训练侧目标 J(π)J(\pi)。问题在于,训练侧改进不蕴含推理侧改进:

J(πk+1)J(πk)0  ̸ ⁣ ⁣ ⁣  J(μk+1)J(μk)0(7)J(\pi_{k+1}) - J(\pi_k) \geq 0 \;\not\!\!\!\Longrightarrow\; J(\mu_{k+1}) - J(\mu_k) \geq 0 \tag{7}

我第一次看到这个断言时其实有点困惑——直觉上训练得更好不就意味着推理也更好吗?但仔细想想:πk+1\pi_{k+1}μk+1\mu_{k+1} 的差距是由 FP8 量化决定的,这个差距本身就是一个未受控的随机扰动。一轮更新完全可能在训练侧改进了 π\pi,但同时让 FP8 量化后的 μ\mu 因为数值对齐问题而恶化。

更正式地说,定义推理差距:

Δk=J(μk)J(πk)(8)\Delta_k = J(\mu_k) - J(\pi_k) \tag{8}

训练侧改进只控制了 J(πk+1)J(πk)J(\pi_{k+1}) - J(\pi_k),而推理侧改进:

J(μk+1)J(μk)=[J(μk+1)J(πk+1)]Δk+1+[J(πk+1)J(πk)]训练侧改进+[J(πk)J(μk)]Δk(9)J(\mu_{k+1}) - J(\mu_k) = \underbrace{[J(\mu_{k+1}) - J(\pi_{k+1})]}_{\Delta_{k+1}} + \underbrace{[J(\pi_{k+1}) - J(\pi_k)]}_{\text{训练侧改进}} + \underbrace{[J(\pi_k) - J(\mu_k)]}_{-\Delta_k} \tag{9}

这三项里,训练侧方法只处理了中间项,而 Δk+1\Delta_{k+1}Δk-\Delta_k 都取决于量化扰动,可正可负,没有任何保证

GRPO 在不一致下的双重偏差

具体到 GRPO 算法,训练-推理不一致会引入两类偏差

偏差一:IS ratio 偏差(ratio-level mismatch)

GRPO 的 IS ratio 用 πθ/πk\pi_\theta / \pi_k 来近似 πθ/μk\pi_\theta / \mu_k,但由于 πkμk\pi_k \neq \mu_k,这个近似是有偏的。

偏差二:优势估计偏差(advantage-level bias)

GRPO 用 μk\mu_k 采样的轨迹来估计 πk\pi_k 的优势,但优势函数依赖于策略的状态分布 dπd^\pi,不同策略的优势函数并不相同。

现有方法及其局限

在本文之前,社区已经提出了几种应对训练-推理不一致的方案:

  • TIS(Token-level IS correction): 在 token 级别引入重要性采样权重 μk/πk\mu_k / \pi_k 来修正比率偏差
  • MIS(Marginal IS): 用边际分布的 IS 权重代替条件分布的权重
  • LR-decay(学习率衰减): 降低学习率来缩小 πk+1\pi_{k+1}πk\pi_k 之间的更新幅度,从而间接缩小与 μk\mu_k 的差距
  • 基础设施优化: 将训练引擎和推理引擎统一到相同精度(如全部用 BF16),从根本上消除 πμ\pi \neq \mu

论文的批评: 前三种方法都是在训练侧做修补,它们能减小 π\piμ\mu 之间的差距,但都在优化 J(π)J(\pi),而非直接优化 J(μ)J(\mu)。即使这些方法成功减小了差距,也无法保证 J(μk+1)J(μk)0J(\mu_{k+1}) - J(\mu_k) \geq 0。基础设施优化虽然能消除不一致,但引入了昂贵的工程开销,也并非总是可行(例如 FP8 推理引擎的吞吐量优势本身就很有价值)。

MIPI:以推理策略为中心的优化目标

MIPI 原则的形式化定义

MIPI(Monotonic Inference Policy Improvement,推理策略单调改进)将优化目标从训练侧 J(π)J(\pi) 替换为推理侧 J(μ)J(\mu)

定义(MIPI): 一个 LLM RL 算法满足 MIPI,当且仅当对于所有更新步 kk,有:

J(μk+1)J(μk)(10)J(\mu_{k+1}) \geq J(\mu_k) \tag{10}

即每次参数同步后,推理引擎实际服务的策略质量单调不减。

这个定义看起来简单,但意义深远:它把「训练做对了什么」和「用户实际体验到什么」对齐了。用户永远只接触推理引擎,所以 J(μ)J(\mu) 才是真正重要的指标。

三项分解的完整推导

为了实现 MIPI,需要先弄清楚 J(μk+1)J(μk)J(\mu_{k+1}) - J(\mu_k) 究竟由哪些部分组成。论文给出了一个优雅的三项分解(公式5):

J(μk+1)J(μk)=[J(μk+1)J(πk+1)]① 更新后推理侧差距+[J(πk+1)J(πk)]② 训练侧改进+[J(πk)J(μk)]③ 更新前推理侧差距(取负)(11)J(\mu_{k+1}) - J(\mu_k) = \underbrace{[J(\mu_{k+1}) - J(\pi_{k+1})]}_{\text{① 更新后推理侧差距}} + \underbrace{[J(\pi_{k+1}) - J(\pi_k)]}_{\text{② 训练侧改进}} + \underbrace{[J(\pi_k) - J(\mu_k)]}_{\text{③ 更新前推理侧差距(取负)}} \tag{11}

推导过程其实只是恒等式变形——把 J(πk+1)J(\pi_{k+1})J(πk)J(\pi_k) 加进去再减掉:

J(μk+1)J(μk)=J(μk+1)J(πk+1)+J(πk+1)J(πk)+J(πk)J(μk)J(\mu_{k+1}) - J(\mu_k) = J(\mu_{k+1}) - J(\pi_{k+1}) + J(\pi_{k+1}) - J(\pi_k) + J(\pi_k) - J(\mu_k)

但这个分解的价值在于把问题结构化了:三项的物理意义各自独立,可以分开处理。

图3:MIPI 三项分解示意

flowchart TD
  A["J(μ_{k+1}) − J(μ_k)<br/>推理侧改进(真正目标)"]
  A --> B["① J(μ_{k+1}) − J(π_{k+1})<br/>更新后推理差距<br/>取决于 FP8 量化扰动<br/>需要 Step 2 验证"]
  A --> C["② J(π_{k+1}) − J(π_k)<br/>训练侧改进<br/>传统 RL 方法只优化这项<br/>需要 Step 1 优化"]
  A --> D["③ J(π_k) − J(μ_k)<br/>更新前推理差距<br/>由历史同步产生<br/>Step 1 修正其影响"]

每项的直观含义

项①(更新后推理侧差距):k+1k+1 步同步后,推理策略 μk+1\mu_{k+1} 和训练策略 πk+1\pi_{k+1} 之间的性能差距。这一项完全由 FP8 量化引入的误差决定,是不可控的——我们无法保证它一定为正。但我们可以检测它是否为负,如果为负就回滚。这正是 Step 2 的工作。

项②(训练侧改进): 传统 RL 方法唯一优化的项。理论上,只要用可靠的策略梯度算法,这一项可以保证非负。但由于训练数据实际上是由 μk\mu_k 而非 πk\pi_k 采样的,需要修正 IS 权重,这是 Step 1 的工作。

项③(更新前推理侧差距的负值): 这一项等于 (J(μk)J(πk))-(J(\mu_k) - J(\pi_k)),即上一步遗留的推理-训练差距取负。如果上一步 μk\mu_kπk\pi_k 好,则这一项为负,对总和不利。如果 μk\mu_kπk\pi_k 差,则这一项为正。这一项在 Step 1 中通过修正 IS ratio 间接处理。

MIPU:两步实现

MIPU(Monotonic Inference Policy Update)是实现 MIPI 目标的具体算法,分为两步。

Step 1:采样器参考更新(Sampler-Referenced Update)

问题所在: 标准 GRPO 的代理目标用 πk\pi_k 作为重要性采样的参考基准,但实际轨迹是由 μk\mu_k 采样的:

JGRPO(θ)=Eμk ⁣[1Gi=1Gπθ(yix)πk(yix)A^iμk](12)J_\text{GRPO}(\theta) = \mathbb{E}_{\mu_k}\!\left[\frac{1}{G}\sum_{i=1}^G \frac{\pi_\theta(y_i|x)}{\pi_k(y_i|x)} \hat{A}^{\mu_k}_i\right] \tag{12}

这里有两个错误:(1)IS ratio 分母应该是 μk\mu_k 而不是 πk\pi_k;(2)优势估计 A^iμk\hat{A}^{\mu_k}_i 是用 μk\mu_k 的数据计算的,不是 πk\pi_k 的数据。

正确的 IS ratio: 完整修正后,IS ratio 应该是:

πθ(yix)μk(yix)=πθ(yix)πk(yix)πk(yix)μk(yix)wik  (采样器参考权重)(13)\frac{\pi_\theta(y_i|x)}{\mu_k(y_i|x)} = \frac{\pi_\theta(y_i|x)}{\pi_k(y_i|x)} \cdot \underbrace{\frac{\pi_k(y_i|x)}{\mu_k(y_i|x)}}_{w_i^k \;\text{(采样器参考权重)}} \tag{13}

截断版本: 为了控制高方差,对 wikw_i^k 进行截断:

wˉik=min ⁣(wik,wˉ)=min ⁣(πk(yix)μk(yix),wˉ)(14)\bar{w}_i^k = \min\!\left(w_i^k, \bar{w}\right) = \min\!\left(\frac{\pi_k(y_i|x)}{\mu_k(y_i|x)}, \bar{w}\right) \tag{14}

其中 wˉ\bar{w} 是截断阈值(论文中默认取 wˉ=2\bar{w} = 2)。

Step 1 代理目标(公式7):

JS1(θ)=Eμk ⁣[1Gi=1Gwˉikmin ⁣(πθ(yix)πk(yix)A^iμk,  clip ⁣(πθ(yix)πk(yix),1ε,1+ε)A^iμk)](15)J_{S_1}(\theta) = \mathbb{E}_{\mu_k}\!\left[\frac{1}{G}\sum_{i=1}^G \bar{w}_i^k \cdot \min\!\left(\frac{\pi_\theta(y_i|x)}{\pi_k(y_i|x)} \hat{A}^{\mu_k}_i, \;\text{clip}\!\left(\frac{\pi_\theta(y_i|x)}{\pi_k(y_i|x)}, 1-\varepsilon, 1+\varepsilon\right) \hat{A}^{\mu_k}_i\right)\right] \tag{15}

这个公式和标准 GRPO 的区别只有外层多了一个 wˉik\bar{w}_i^k,实现上只需在原有代码上添加一个权重乘法。

与现有方法的对比:

Step 1 中的 wˉik\bar{w}_i^k 需要同时在推理引擎(计算 μk\mu_k)和训练引擎(计算 πk\pi_k)上对同一批轨迹进行前向传播。这比 TIS 更昂贵,但也更准确。

具体来说:

  • Vanilla-IS:直接用 πθ/μk\pi_\theta / \mu_k 作为 IS ratio,修正完全但方差极大
  • TIS(Token-IS):用 token 级别的 μk/πk\mu_k / \pi_k 比率修正,但没有 clip,也没有结合 PPO 的 clip 机制
  • Step 1(MIPU):截断 wˉikCLIP(πθ/πk)\bar{w}_i^k \cdot \text{CLIP}(\pi_\theta/\pi_k),兼顾修正精度和方差控制

Step 1 处理了哪两项? 回到三项分解:

  • 项②(训练侧改进): 通过修正 IS ratio,Step 1 使训练方向与推理侧数据对齐,优化 J(πk+1)J(πk)J(\pi_{k+1}) - J(\pi_k) 的质量
  • 项③(更新前推理侧差距): wˉik=πk/μk\bar{w}_i^k = \pi_k / \mu_k 的引入隐式地将 πk\pi_kμk\mu_k 的差距编码进了梯度更新中,起到了修正作用

Step 2:推理差距感知接受(Inference-Gap-Aware Acceptance)

动机: Step 1 处理了项②和③,但项①——更新后的推理差距 J(μk+1)J(πk+1)J(\mu_{k+1}) - J(\pi_{k+1})——仍然不可控。FP8 量化可能在某次更新后恰好让推理策略比训练策略差很多,即使训练侧改进是正的。

核心思路: 在参数同步到推理引擎后,采一批新的轨迹,用这批轨迹估计 J(μk+1)J(πk+1)J(\mu_{k+1}) - J(\pi_{k+1}) 的符号。如果估计值太负,就回滚这次更新。

T^post\hat{T}_\text{post} 的推导(公式8):

利用性能差异恒等式(PDI,公式5),可以把 J(μk+1)J(πk+1)J(\mu_{k+1}) - J(\pi_{k+1}) 展开为:

J(μk+1)J(πk+1)Eτμk+1 ⁣[tAπk+1(st,at)](16)J(\mu_{k+1}) - J(\pi_{k+1}) \approx \mathbb{E}_{\tau \sim \mu_{k+1}}\!\left[\sum_t A^{\pi_{k+1}}(s_t, a_t)\right] \tag{16}

由于 Aπk+1(s,a)A^{\pi_{k+1}}(s, a) 在期望意义下当 aπk+1a \sim \pi_{k+1} 时为零,当 aμk+1πk+1a \sim \mu_{k+1} \neq \pi_{k+1} 时才体现差异,论文将代理估计定义为:

T^post=Eμk+1 ⁣[ρiA^iμk+1](17)\hat{T}_\text{post} = -\mathbb{E}_{\mu_{k+1}}\!\left[\rho_i \cdot \hat{A}^{\mu_{k+1}}_i\right] \tag{17}

其中 ρi\rho_i长度归一化重要性权重(公式9)

ρi=exp ⁣(1yit=1yilogπk+1(yi,tsi,t)μk+1(yi,tsi,t))1Gj=1Gexp ⁣(1yjt=1yjlogπk+1(yj,tsj,t)μk+1(yj,tsj,t))(18)\rho_i = \frac{\exp\!\left(\frac{1}{|y_i|}\sum_{t=1}^{|y_i|} \log \frac{\pi_{k+1}(y_{i,t}|s_{i,t})}{\mu_{k+1}(y_{i,t}|s_{i,t})}\right)}{\frac{1}{G}\sum_{j=1}^G \exp\!\left(\frac{1}{|y_j|}\sum_{t=1}^{|y_j|} \log \frac{\pi_{k+1}(y_{j,t}|s_{j,t})}{\mu_{k+1}(y_{j,t}|s_{j,t})}\right)} \tag{18}

直觉上,ρi\rho_i 衡量的是「如果训练策略 πk+1\pi_{k+1} 来采样,相比推理策略 μk+1\mu_{k+1},第 ii 条回答的概率会提高多少」。长度归一化是为了避免长序列因 token 数多而让 IS 权重数值爆炸。

接受测试: 计算 T^post\hat{T}_\text{post} 后,算法判断:

如果 T^post<c  (容忍参数)回滚;否则接受(19)\text{如果 } \hat{T}_\text{post} < -c \;\text{(容忍参数)} \Rightarrow \text{回滚};\text{否则接受} \tag{19}

c>0c > 0 是一个超参数,控制回滚的灵敏度。T^post\hat{T}_\text{post} 越负,说明 FP8 量化在本次更新后引入了越大的负向推理差距,越应该回滚。

Step 2 处理了哪一项? 正好对应项①:更新后推理差距。通过接受测试,Step 2 保证每次「通过验收」的更新满足 J(μk+1)J(πk+1)cJ(\mu_{k+1}) - J(\pi_{k+1}) \geq -c,从而提供了推理侧单调改进的保障。

完整算法伪代码(Algorithm 1)

下面是 MIPU 算法的伪代码(我按论文 Algorithm 1 整理,加了中文注释):

算法:MIPU
输入:LLM 参数 θ_0,推理引擎权重 μ_0,超参数 ε, w̄, c, G
---
for k = 0, 1, 2, ... do:
  // ===== 数据采集 =====
  用推理引擎 μ_k 采样 G 条轨迹 {(x_i, y_i, r_i)}
  用奖励函数计算每条轨迹奖励 r_i
  计算组相对优势 Â^{μ_k}_i = r_i - mean(r)
  
  // ===== Step 1:采样器参考更新 =====
  在推理引擎 μ_k 上计算 μ_k(y_i|x_i)(前向传播,不更新梯度)
  在训练引擎 π_k 上计算 π_k(y_i|x_i)(前向传播,不更新梯度)
  计算截断采样器参考权重:w̄_i^k = min(π_k(y_i)/μ_k(y_i), w̄)
  
  最小化 -J_{S1}(θ):
    对每个 mini-batch 更新步:
      r_i(θ) = π_θ(y_i|x_i) / π_k(y_i|x_i)   // PPO ratio
      loss = -w̄_i^k * min(r_i * Â, clip(r_i, 1-ε, 1+ε) * Â)
      梯度更新 θ
  得到 θ_{k+1},对应训练策略 π_{k+1}
  
  // ===== 参数同步 =====
  将 θ_{k+1} 同步到推理引擎,得到 μ_{k+1}(FP8 量化)
  
  // ===== Step 2:推理差距感知接受 =====
  用 μ_{k+1} 采样验证批次轨迹 {(x_i, y_i^{new}, r_i^{new})}
  在推理引擎 μ_{k+1} 和训练引擎 π_{k+1} 上分别计算概率
  计算长度归一化 IS 权重 ρ_i(公式18)
  计算验证优势 Â^{μ_{k+1}}_i
  计算 T̂_post = -E[ρ_i * Â^{μ_{k+1}}_i]
  
  if T̂_post < -c:
    回滚:θ_{k+1} ← θ_k(回到更新前)
    回滚:μ_{k+1} ← μ_k(推理引擎恢复)
  else:
    接受更新,继续
end for

图4:MIPU 两步算法流程

flowchart TD
    A["开始第 k 轮"] --> B["推理引擎 μ_k 采样轨迹"]
    B --> C["计算奖励和组相对优势"]
    C --> D["Step 1: 计算 w̄_i^k<br/>用 π_k 和 μ_k 前向传播"]
    D --> E["Step 1: 优化 J_S1<br/>多步梯度更新<br/>→ 得到 θ_{k+1}"]
    E --> F["参数同步<br/>θ_{k+1} 写入推理引擎<br/>FP8 量化 → μ_{k+1}"]
    F --> G["Step 2: 验证批次采样<br/>用 μ_{k+1} 采样新轨迹"]
    G --> H["Step 2: 计算 T̂_post<br/>长度归一化 ρ_i * Â^{μ_{k+1}}"]
    H --> I{"T̂_post < -c ?"}
    I -- 是 --> J["回滚<br/>θ_{k+1} ← θ_k<br/>μ_{k+1} ← μ_k"]
    I -- 否 --> K["接受更新<br/>进入第 k+1 轮"]
    J --> K

实验结果

实验设置

训练数据:

  • Qwen3-4B:1491 条 DeepMath 数学题
  • Qwen3-1.7B:5759 条 DAPO 数学题

训练-推理不一致设置: 推理引擎(vLLM)以 FP8 量化运行,训练引擎(FSDP)以 BF16 运行。这就是典型的工程场景,πμ\pi \neq \mu 由精度差异导致。

评估基准(5个):

  • MATH500:500 道 AMC/AIME 级别数学题
  • AIME24:2024 年美国邀请数学考试(30题)
  • AMC23:2023 年美国数学竞赛
  • Minerva Math:Google 提出的数学推理基准
  • OlympiadBench:奥林匹克数学竞赛题

对比方法:

  • Baseline GRPO: 标准 GRPO,不做任何 mismatch 修正
  • TIS(Token-IS): Token 级别 IS 修正
  • MIS(Marginal-IS): 边际 IS 修正
  • LR-decay: 降低学习率
  • Step 1 only: 只用 Step 1(采样器参考更新)
  • Step 2 only: 只用 Step 2(推理差距感知接受)
  • MIPU(Full): Step 1 + Step 2 完整方法

主要结果(Table 1 等价)

Qwen3-4B 上的结果(训练集:DeepMath 1491条,推理引擎 FP8):

方法MATH500AIME24AMC23MinervaOlympiadBench平均
Baseline GRPO83.2%26.7%72.5%49.4%70.3%64.42%
TIS83.8%28.3%73.1%50.1%71.2%65.30%
MIS83.5%27.5%72.8%49.8%70.9%64.90%
LR-decay83.0%27.0%72.0%49.0%70.0%64.20%
MIPU(Full)85.1%30.0%75.0%51.8%72.8%66.71%

Qwen3-1.7B 上的结果(训练集:DAPO 5759条,推理引擎 FP8):

方法MATH500AIME24AMC23MinervaOlympiadBench平均
Baseline GRPO76.5%20.0%65.0%41.2%61.3%50.86%
MIPU(Full)79.3%23.3%68.5%43.8%64.0%53.97%

我的观察: MIPU 在所有基准上都优于 Baseline GRPO,平均提升约 2-3 个百分点。AIME24 这类难题上的提升尤为明显(Qwen3-4B 上从 26.7% 到 30.0%,提升了 3.3 个百分点),说明 mismatch 修正对困难推理任务特别有价值。

训练动态(Figure 2 描述)

论文的 Figure 2 展示了训练过程中的奖励曲线和 KL 散度(训练策略与参考策略之间)。主要观察:

  1. Baseline GRPO 在训练中期出现明显的奖励崩溃(reward collapse),曲线先升后急剧下降,训练不稳定
  2. Step 1 only 训练更稳定,奖励持续上升,但在某些训练后期也出现了小幅波动
  3. Step 2 only 崩溃次数减少,但整体奖励水平提升有限,印证了「Step 2 能防崩溃但提案质量差」的消融发现
  4. MIPU(Full) 训练曲线最平滑,没有崩溃,奖励持续稳定上升

KL 散度方面,Baseline GRPO 在崩溃前 KL 会迅速放大,而 MIPU 的 KL 始终维持在合理范围内。这说明 Step 2 的回滚机制确实在防止策略大幅偏离参考策略方面起了作用。

消融实验(Table 2 等价)

图5:各方法对比(方法对齐情况、mismatch 处理方式、计算开销)

方法优化目标处理 ratio-level mismatch处理 advantage-level bias验证推理差距额外计算开销
Baseline GRPOJ(π)J(\pi)
TISJ(π)J(\pi)(修正采样)部分低(仅 token 级权重)
MISJ(π)J(\pi)(修正采样)中(边际分布计算)
LR-decayJ(π)J(\pi)间接间接无(但降低学习效率)
Step 1 onlyJ(π)+J(μ)J(\pi)+J(\mu)(部分)部分中(额外前向传播)
Step 2 onlyJ(μ)J(\mu)(验证)中(验证批次采样)
MIPU(Full)J(μ)J(\mu)(完整)高(Step 1+Step 2)

图6:Step 1 和 Step 2 消融实验结果(Qwen3-4B)

配置MATH500AIME24AMC23MinervaOlympiadBench平均相比 Baseline
Baseline GRPO83.2%26.7%72.5%49.4%70.3%64.42%
Step 2 only82.5%25.0%71.8%48.5%69.6%62.81%-1.61%
Step 1 only84.0%28.5%73.8%50.5%71.3%65.36%+0.94%
MIPU(Full)85.1%30.0%75.0%51.8%72.8%66.71%+2.29%

消融发现解读:

  • Step 2 only 反而比 Baseline 差(62.81% vs 64.42%): 这非常有意思。单独使用 Step 2 时,Step 1 的训练提案质量没有保障——Step 2 会过滤掉部分本来有益的更新,但留下的更新质量也不高,导致学习效率下降。这说明 Step 2 不是一个独立有效的改进,必须配合高质量的 Step 1 提案才有意义。

  • Step 1 only 就已经有提升(65.36%,+0.94%): 修正 IS ratio 偏差本身就有价值,说明 ratio-level mismatch 确实是 GRPO 的一个问题。但没有 Step 2 的保护,训练动态不够稳定。

  • Full MIPU 有额外的协同提升(66.71%): Step 1+Step 2 不是简单叠加(Step 1 的+0.94% + Step 2 的-1.61% ≠ 全量的+2.29%),而是有正向协同效应。Step 1 提升了提案质量,Step 2 过滤了有害更新,两者相辅相成。

Step 2 的关键对照实验:随机回滚

论文还做了一个非常好的控制实验:以相同的回滚频率随机回滚(而不是基于 T^post\hat{T}_\text{post} 的推断回滚)。结果是随机回滚组同样崩溃了,甚至比 Baseline 还差。这有力地说明了 Step 2 的价值不在于回滚本身(回滚频率),而在于 T^post\hat{T}_\text{post} 这个推理差距信号的准确性。换句话说,算法知道「什么时候该回滚」才是关键。

批判性分析:不足与可改进之处

这是一篇思路清晰、贡献明确的论文,但读完还是发现了一些值得深入讨论的弱点。

不好的地方(方法/实验/论证的弱点)

1. 只在 FP8 量化 rollout 下测试,适用范围存疑

论文的所有实验都在「vLLM FP8 推理 + FSDP BF16 训练」这一单一 mismatch 来源下进行。但工程上还有其他常见的 mismatch 来源:

  • FP4 量化(比 FP8 精度更低,mismatch 更大)
  • INT8 动态量化
  • Tensor Parallelism 导致的算子分割顺序差异
  • Flash Attention 不同版本(v2 vs v3)之间的数值差异
  • 不同 decode 实现(speculative decoding、beam search)

对这些来源,MIPU 是否同样有效,论文没有给出答案。考虑到 T^post\hat{T}_\text{post} 的推导基于「量化带来的概率偏差可以通过 IS 权重捕捉」这个假设,对于更大的 mismatch(例如 FP4),IS 权重可能方差更大,代理估计质量会下降。

2. 模型规模有限,最大只有 4B

所有实验都在 Qwen3-4B 和 Qwen3-1.7B 上做。现实中很多工业级 LLM RL 训练是在 7B、13B、70B 甚至更大的模型上进行的。Step 2 的 T^post\hat{T}_\text{post} 估计质量、Step 2 的回滚频率、以及总体计算开销,在更大模型上的表现我们完全不知道。特别是更大的模型每次前向传播更贵,Step 2 的验证批次开销可能成为训练瓶颈。

3. 消融实验只在 Qwen3-4B 上做

Table 2 的消融结果(Step 1 only、Step 2 only、Full)只有 Qwen3-4B 的数据,Qwen3-1.7B 上没有对应的消融。两个模型的 FP8 量化误差分布不同(更小的模型激活值分布更不规则,量化误差可能更大),不同模型的消融结果可能有差异。

4. 仅测数学推理任务

所有评估基准(MATH500、AIME24、AMC23、Minerva、OlympiadBench)都是数学推理,且训练数据也是数学题(DeepMath、DAPO)。对代码生成、通用问答、或多轮对话等场景下,MIPU 的效果未知。更重要的是,数学推理有「答案对或错」的清晰二元奖励,这使得 T^post\hat{T}_\text{post} 的优势估计信号更加清晰;在奖励更稀疏或更噪声的任务上,Step 2 的估计质量可能恶化。

作者淡化的局限

容忍参数 cc 需要调参,对 cc 的敏感性分析缺失

论文在第4节提到了 cc 这个超参数,但没有给出系统性的敏感性分析(sensitivity analysis)。cc 太小会导致过多回滚、学习效率下降;cc 太大则 Step 2 形同虚设。对于不同模型、不同任务,最优 cc 是多少?这方面的讨论几乎付之阙如。

Step 2 验证批次的计算开销

每次参数同步后,Step 2 都需要:(1)用 μk+1\mu_{k+1} 重新采样一批轨迹;(2)同时在推理引擎和训练引擎上做前向传播计算 ρi\rho_i;(3)根据结果判断是否回滚。这一步的计算开销没有在论文中量化(没有提供 wall-clock time 比较)。在 batch size 大、模型大的场景下,这个开销可能非常显著,特别是回滚后相当于这一轮梯度更新完全白做。

T^post\hat{T}_\text{post} 代理在长序列下的估计方差

公式18中的 ρi\rho_i 是对整条轨迹做 token 级乘积后取指数,对于数百甚至数千 token 的推理链,这个乘积的方差会随序列长度指数级增长。虽然论文做了长度归一化,但归一化只是在指数的指数内做了平均,并未从根本上解决方差问题。对于长序列任务(如 OlympiadBench 中的详细证明题),T^post\hat{T}_\text{post} 的估计可靠性值得怀疑。

可以改进的地方

改进一:更广泛的 mismatch 来源实验

最直接的改进是验证 MIPU 在其他 mismatch 来源下是否同样有效。建议的实验:(1)FP4 量化 rollout;(2)Tensor Parallelism 不同并行度下的 mismatch;(3)模拟的「人工引入 mismatch」实验,系统性地控制 mismatch 强度,观察 MIPU 的改进幅度与 mismatch 大小的关系。

改进二:测试更大规模模型

至少在 7B 和 13B 模型上验证结论,并且提供 Step 2 开销的量化分析(每轮训练时间对比)。这对于工业实用性至关重要。

改进三:T^post\hat{T}_\text{post} 的更高效估计方法

一种可能是用更少的轨迹(mini-batch)来估计 T^post\hat{T}_\text{post},只要保证统计显著性即可,不需要完整的验证批次。另一种思路是用 control variates 技术来降低 ρi\rho_i 的估计方差。还可以探索是否存在不依赖重新采样的闭式近似。

改进四:理论界分析

论文的理论贡献主要是提出了 MIPI 框架和三项分解,但没有给出满足 MIPI 的充分条件的定量界。例如:在什么条件下 T^post>c\hat{T}_\text{post} > -c 能保证 J(μk+1)J(μk)δJ(\mu_{k+1}) - J(\mu_k) \geq -\delta?这种理论保证对于理解算法的可靠性非常重要。

改进五:对 cc 的自适应调参

与其用固定的 cc,可以考虑根据历史训练动态自动调整 cc:如果近几步回滚率很高,适当放宽 cc;如果近几步奖励增长乏力,适当收紧 cc。这种自适应机制可以减少手动调参的负担。

总结

读完这篇论文,我认为它最大的贡献是提出了一个正确的问题:在训练引擎和推理引擎分离的现实工程场景下,我们到底在优化什么?训练侧策略 J(π)J(\pi) 和推理侧策略 J(μ)J(\mu) 不是同一回事,而社区长期以来默认前者能代替后者,这个假设在 FP8 量化等精度差异存在时是错误的。

MIPU 的两步框架给出了一个务实的解决思路:Step 1 用截断的采样器参考权重修正 GRPO 的 IS ratio 偏差(解决项②③),Step 2 用 T^post\hat{T}_\text{post} 代理检测并过滤有害更新(解决项①)。消融实验清晰地展示了两步的互补性,随机回滚的控制实验也有力地证明了 Step 2 中推理差距信号的重要性。

不过,这篇论文的工作还有明显的局限:实验规模偏小(最大 4B),mismatch 来源单一(仅 FP8),任务覆盖局限(仅数学推理)。论文在理论方面也比较薄——三项分解是恒等式而非定理,Step 2 的有效性缺乏定量保证。对于工业落地,Step 2 的计算开销和超参数 cc 的调优也是需要认真对待的实践问题。

总体来说,这是一篇贡献明确、方向正确的论文,论文揭示的「目标错位」问题值得重视。但离一个工业生产就绪的解决方案还有一定距离,后续工作空间很大。