NLP——LLM对齐微调-OAPL

注:本文包含 AI 辅助创作

Paper Summary

  • 整体说明:
    • 严格来说,本文是第一篇直视 LLM 中 Off-policy 方法的论文(忽略 PPO 中可能存在的微小 Off-policy 更新)
    • OAPL 完全接受了 Off-policy 训练,无需任何重要性加权比率
    • 亮点:
      • 在代码生成实验中,策略滞后(Off-policy 程度)可能高达 400 次梯度更新 ,而无需任何重要性采样
      • 稳定地改进了 Pass@k 测试时扩展指标
    • 本文证明了一个简单的 off-policy RL 方法可以比用于 LLM 后训练的 on-policy RL 方法 GRPO 更有效
      • 需要确认的点:是否是因为 \(\pi_\text{ref}\) 被不断向前更新导致的?
    • 使用 Off-policy 方法,本文可以实现完全异步训练,并允许算法重用先前采样的数据,带来极高的样本效率
    • 实验用的模型较小(数学仅 4B,代码仅 14B),在更大的模型上是否有提升还需要进一步验证
    • 本文的最核心思路理解:
      • OAPL 的梯度推动策略 \(\pi\) 向着 使对数比值 \(\beta \ln(\pi/\pi_{\mathrm{vllm} })\) 逼近最优优势函数 \(A^{*}\) 的方向更新
        • 这是一种 回归到最优策略 的过程(其中最优策略由带 KL 正则化的最大化奖励目标定义)
      • 由于 \(A^{*}\) 是通过 \(\pi_{\mathrm{vllm} }\) 采样估计的,因此这个更新是 完全 off-policy 的,不需要重要性采样,也不需要 on-policy 数据
  • 背景 & 问题提出
    • LLM 的 RL 方法常使用 On-policy 算法(例如 PPO 或 GRPO)
    • 分布式训练架构带来的策略滞后以及训练策略与推理策略之间的差异导致数据在设计上就是 Off-policy 的,这破坏了 On-policy 假设
      • 理解:实际上这些 Off-policy 本身是可以解决的,只是说需要一些时间成本
  • 之前工作的解法:
    • 核心思路主要集中于使这些 Off-policy 数据看起来更符合 On-policy 数据
    • 方案一:通过重要性采样
    • 方案二:通过显式修改 Inference Engine 来更紧密地对齐训练策略和推理策略
  • 本文接受了 Off-policy 特性,并提出了一种新颖的、不需要这些修改的 Off-policy 强化学习算法 OAPL
    • 基于最优优势的带滞后推理策略策略优化(Optimal Advantage-based Policy Optimization with Lagged Inference policy, OAPL)
  • OAPL 在竞赛数学基准测试上优于使用重要性采样的 GRPO
    • 在 LiveCodeBench 上匹配公开可用的代码模型 DeepCoder 的性能
    • 而且:训练中使用的生成次数减少了 3 倍
      • 如果能严格说明不是学习率导致,那么这个算是非常大的提升了(当前 LLM RL 训练的耗时大头基本都在 Rollout 上)
  • 实验证明,经 OAPL 训练的模型在 Pass@k 指标下具有改进的测试时扩展能力
  • 即使训练策略和推理策略之间的滞后超过 400 个梯度步 (比先前方法的 Off-policy 程度高 100 倍),OAPL 也能实现高效、有效的后训练
    • 注:之前一般异步不会超过 10,大部分时候是 4 以内

Introduction and Discussion

  • 自 DeepSeek-R1 以来,研究主要集中于改进 GRPO 的训练稳定性训练稳定性 难以实现的一个核心原因是:
    • 现代的 RL 后训练基础设施通常并非真正的 On-policy
    • 特别是, Trainer (例如 HuggingFace 模型)和 Inference Engine (例如 vLLM 模型)可能对相同的序列产生不同的对数概率,即使两个模型具有相同的权重
      • 这种不匹配可能源于 Trainer 和 Inference Engine 内核实现的差异(2025),或者源于异步训练流程,其中 Inference Engine 可能包含一个较旧版本的 Trainer 权重 (2025)
  • 这种对数概率的差异使得实际的策略梯度训练有效地变成了 Off-policy 的:
    • 即用于优化当前策略的数据并非由该策略生成
  • 而经典的策略梯度方法(REINFORCE 等),以及现代的策略优化方法如 GRPO、PPO ,都是在 On-policy 的假设下工作的:
    • 即假定数据由待优化的当前策略生成
  • 大多数对 GRPO 的改进都集中在尽管 Trainer 和 Inference Engine 之间存在差距,也要使其尽可能地保持 On-policy
    • 通常有两个工作系列来解决这个问题:
      • (1)引入额外的重要性权重 (2025)
      • (2)通过修改 Inference Engine 来缩小 Trainer 和 Inference Engine 之间的差距 (2025)
  • 作者认为两者都不是理想
    • 第一种方法(IS):向 GRPO 目标添加重要性权重会给强化学习损失函数引入额外的方差
    • 第二种方法:会使 Inference Engine 变慢,并且在异步强化学习训练中并不能完全消除 Inference Engine 和 Trainer 之间的差距(这里的差距来源于异步训练时,参数本身不是完全对齐的)
  • 本文要解决的核心问题:On-policy 算法对于强化学习后训练是必要的吗?能否开发出简单且可扩展的 Off-policy 强化学习算法?
    • 作者观点:保持 On-policy 对于强化学习后训练并非必要
    • 作者提出了提出了一种易于实现且有效的 Off-policy 后训练算法:
      • 基于最优优势的带滞后推理策略策略优化,缩写为 OAPL
      • 将 Trainer 和 Inference Engine 策略之间的不匹配视为一个 KL 正则化的强化学习问题,其中 KL 项明确地防止训练策略偏离推理策略太远
        • 利用 KL 正则化强化学习的闭式解,推导出一个平方回归目标 ,该目标在来自滞后推理策略的 Rollout 上进行训练,从而消除了对 On-policy 采样的需求
  • OAPL 在一个迭代过程中使用上述推导目标,以很大的间隔同步 Trainer 和推理策略,从而实现比其他方法显著更 Off-policy 的训练
    • 亮点:OAPL 完全接受了 Off-policy 训练,无需任何重要性加权比率
  • 注:作者的观点与经典的强化学习结果一致,即 On-policy 学习对于强化学习后训练并非必要
    • 在经典的强化学习结果中,诸如 PPO 和 REINFORCE 之类的 On-policy 策略梯度方法在传统的机器人控制和视频游戏基准测试上通常不如 DDPG 和 SAC 等 Off-policy 算法高效 (2015; 2018)
  • 实验表明,OAPL 在多个 Pass@k 指标上可以在三个数学竞赛基准测试(AIME 25,HMMT 25 Feb 和 Nov,BRUMO 25)上胜过基于 GRPO 的基线(见图 1)
    • 在 LiveCodeBench v5 上,在各种 Pass@k 指标上,作者的方法可以匹配或胜过 DeepCoder (2025a)
      • DeepCoder 是通过 GRPO 并辅以额外的启发式方法(包括 clip-high、超长过滤等)训练的,同时训练使用的生成次数大约是其三分之一
  • 作者还观察到 OAPL 不仅仅是进行基模型分布锐化
    • OAPL 不会导致熵崩溃,并且稳定地改进了 Pass@k 测试时扩展指标,其中 k 的范围从 1 到 256
  • In Summary,作者证明了保持 On-policy 并非必要,接受 Off-policy 学习可以实现对推理型 LLMs 稳定、有效且高效的训练

Background

  • 现代强化学习后训练中,通常有两种类型的策略: Trainer \(\pi\) 和 Inference Engine \(\pi_{\text{vllm} }\)
    • Trainer \(\pi\) 用于根据生成的序列计算梯度更新
    • Inference Engine \(\pi_{\text{vllm} }\) 用于快速生成
  • 即使当 \(\pi\) 和 \(\pi_{\text{vllm} }\) 共享相同的权重,对于相同的 Token 序列,它们也可能输出不同的对数概率
    • 这种来自 \(\pi\) 和 \(\pi_{\text{vllm} }\) 的对数概率的固有差异,破坏了基于策略梯度的方法的 On-policy 假设
    • Liu 等人 (2025b) 测量了 Inference Engine 和 Trainer 之间的 KL 散度,并发现该散度的突然增加导致了 GRPO 训练的不稳定性和策略崩溃
    • Inference Engine 和 Trainer 之间的差距在异步强化学习训练框架中可能会进一步扩大
      • 比如:\(\pi_{\text{vllm} }\) 可能落后 Trainer \(\pi\) 多个梯度步
  • 处理 LLM 后训练中 Off-policy Rollout 的一种常见方法(Baseline)是标准的重要性采样
    • IS 在 Token-level 应用 (2025),也可以在 Sequence-level 应用 (2025a)
    • 给定从 \(\pi_{\text{vllm} }(\cdot |x)\) 采样的任意前缀 \(x\) 和下一个动作 \(a\),重要性采样计算似然比:
      $$\frac{\pi(a|x)}{\pi_{\text{vllm} }(a|x)}$$
    • 用它对 GRPO 损失函数进行重新加权,然后在一个批次样本上取平均
    • 这些似然比旨在纠正因动作 \(a\) 由 \(\pi_{\text{vllm} }\) 而非 \(\pi\) 生成所导致的不匹配
  • 可以将 GRPO 表述为一个带有重要性权重的损失函数:
    $$\mathbb{E}_{\{y_i\}_{i = 1}^c\sim \pi_{\text{vllm} }(\cdot |x)}\left[\frac{1}{G}\sum_{y\in \mathcal{G} }\frac{1}{|y|}\sum_{t = 1}^{|y|}\frac{\pi_{\text{old} }(y_t|x,y_{< t})}{\pi_{\text{vllm} }(y_t|x,y_{< t})}\cdot \min \{r_tA_t,\text{clip}(r_t,1 - \epsilon ,1 + \epsilon)A_t\} \right]$$
    • \(\pi_{\text{old} }\) 是 Trainer 前一次迭代的版本
    • \(r_t = \frac{\pi(y_t|x,y_{< t})}{\pi_{\text{old} }(y_t|x,y_{< t})}\) 是 PPO 风格的似然比
    • \(A_t\) 是归一化的优势
  • Fu 等人 (2025) 为其异步强化学习训练框架引入了上面这个损失函数
    • 在该框架中,数据生成策略 \(\pi_{\text{vllm} }\) 可能落后于当前的训练策略 \(\pi\)
    • 额外的 Token-level 比率 \(\frac{\pi_{\text{old} }(y_t|x,y_{< t})}{\pi_{\text{vllm} }(y_t|x,y_{< t})}\) 对从 \(\pi_{\text{vllm} }\) 采样的 Token \(y_t\) 进行重新加权,就好像它们是由 \(\pi_{\text{old} }\) 生成的一样
    • 但当行为策略和目标策略差异很大时,重要性采样可能变得不可靠,这促使先前的大量工作致力于方差缩减技术 (2016; 2015; 2013)
  • 根据实验,先前的工作尝试了许多额外的启发式方法
    • 例如裁剪重要性采样比率 :明确从 GRPO 目标中删除那些重要性采样比率过大或过小的 Token,或者丢弃那些过于 Off-policy 的整个 Rollout
    • 虽然这些启发式方法专门针对 GRPO 训练并经过测试,使 GRPO 训练稳定,但它们越来越偏离经典策略梯度理论背后的原理
    • 由于这些启发式方法是专门为 GRPO 损失函数设计并在其下测试的,目前尚不清楚它们如何在非常具体的 GRPO 损失函数之外推广
      • 其实其他的任何 On-policy 方法都可以使用 IS 方法进行修正 Off-policy 问题吧!
  • 这项工作没有专注于修改 GRPO 的损失,而是走了一条不同的路线,设计了一个新的、能够自然处理 Off-policy 数据的强化学习训练目标

Method: OAPL

  • 基于最优优势的带滞后推理策略策略优化(OAPL)是一个 Principled Off-policy 目标,即使在显著的策略滞后下也能保持稳定
    • 先前的方法:需要定制 Inference Engine 或用额外比率、裁剪算子或删除陈旧 Token/序列来增强 GRPO 及其 变体
    • 本文:接受强化学习后训练的 Off-policy 性质,并设计了一个简单、完全 Off-policy 的强化学习算法

Off-policy Loss Function

  • 本文的 Off-policy 策略优化目标,其动机源于 KL 正则化的强化学习形式,考虑以下目标:
    $$\max_{\pi}\mathbb{E}_{x,y\sim \pi (\cdot |x)}r(x,y) - \beta \text{KL}(\pi ||\pi_{\text{vllm} }) \tag {1}$$
  • 上述 KL 正则化强化学习问题的最优策略 \(\pi^{\star}\)最优值函数 \(V^{\star}\) 具有以下闭式表达式:
    $$\pi^{\star}(y|x)\propto \pi_{\text{vllm} }(y|x)\exp (r(x,y) / \beta),$$ $$V^{\star}(x) = \beta \ln \mathbb{E}_{y\sim \pi_{\text{vllm} }(\cdot |x)}\exp (r(x,y) / \beta).$$
    • \(\pi^{\star}\) 的详细证明可见本人之前的博客:RL——CQL 的附录部分,DPO 论文(NLP——LLM对齐微调-DPO)中也有类似需要证明的式子
    • \(V^{\star}(x)\) 的详细证明见本文附录: 最优优势 \(A^{\star}\) 的推导部分
  • \(\pi^{\star}\) 和 \(V^{\star}\) 之间的关系可表示表示如下:
    $$\beta \ln \frac{\pi^{\star}(y|x)}{\pi_{\text{vllm} }(y|x)} = \underbrace{r(x,y) - V^{\star}(x)}_{\text{optimal advantage } A^{\star}}, \quad \forall x,y.$$
  • 特别说明:定义 \(V^{\star}\) 的期望是在采样策略 \(\pi_{\text{vllm} }\) 下取的,而不是 \(\pi^{\star}\)
  • 在采样分布 \(\pi_{\text{vllm} }\) 的温和假设下,估计量 \(\hat{V}^{\star}\) 可以是准确的
    • 特别是,对于二元奖励,如果 \(\pi_{\text{vllm} }\) 有非零概率解决 \(x\),那么随着 \(G\) 的增加,\(\hat{V}^{\star}(x)\) 收敛到 \(V^{\star}(x)\) (2025; 2025)
    • 这里 \(\beta\) 的作用是平滑:
      • 当 \(\beta \rightarrow 0\) 时,我们有
        $$\hat{V}^{\star}(x) = \max_{i}r(x,y_{i})$$
      • 当 \(\beta \rightarrow \infty\) 时,\(\hat{V}^{\star}(x)\) 成为平均值
        $$\hat{V}^{\star}(x) = \sum_{i}r(x,y_{i}) / G$$
        • 这是当前推理策略 \(\pi_{\text{vllm} }\) 平均奖励的无偏估计
  • 给定 \(\hat{V}^{\star}\),可以将最优优势 \(A^{\star}(x,y)\) 估计为
    $$r(x,y) - \hat{V}^{\star}(x)$$
  • 作者采用 Brantley 等人 (2025) 的 \(A^{\star}\)-PO 目标,并定义以下策略优化目标:
    $$\min_{\pi}\sum_{x}\sum_{i = 1}^{G}\left(\beta \ln \frac{\pi(y_{i}|x)}{\pi_{\text{vllm} }(y_{i}|x)} -(r(x,y_{i}) - \hat{V}^{\star}(x))\right)^{2} \tag {3}$$
    • 上述目标对应的损失函数和梯度 在 (A-PO,APO)Accelerating rl for llm reasoning with optimal advantage regression, 20250527, Harvard 附录 F 中同一批作者已经给出,上述公式的目标对应的损失函数为:
      $$
      \mathcal{l}(\theta) = \sum_{x}\sum_{i = 1}^{G}\left(\beta \ln \frac{\pi_\theta(y_{i}|x)}{\pi_{\text{vllm} }(y_{i}|x)} -(r(x,y_{i}) - \hat{V}^{\star}(x))\right)^{2}
      $$
      • 论文中的梯度不太好理解,本文附录中我给出了这个损失函数梯度和方向的分析
  • 当 \(\hat{V}^{\star} = V^{\star}\) 时,无论 \(y\) 的采样分布如何(例如,它适用于从 \(\pi_{\text{vllm} }\) 抽取的 Rollouts),公式 3 都由 KL 正则化的最优策略 \(\pi^{\star}\) 最小化
  • 虽然作者的损失函数的动机来自 \(A^{\star}\)-PO,但 \(A^{\star}\)-PO 被设计为一种 On-policy 算法,即它在从 \(\pi\) 生成的 On-policy 数据集下制定上述优化
    • 作者反而依赖该目标的唯一最小化器,并直接使用来自 Inference Engine 的 Off-policy 数据和对数概率
  • 正如原始 \(A^{\star}\)-PO 论文所提出的
    • 从 Rollouts 组中估计 \(\hat{V}^{\star}\) 能够避免做额外的假设
    • 例如 \(V^{\star}\) 由一个常数逼近 (2024),不用神经网络建模 \(V^{\star}\)(这可能在计算上很昂贵)

OAPL: The Off-policy RL Algorithm

  • 作者将公式 3 转换为一个带有滞后 Inference Engine 的实用后训练流程
  • 这产生了基于最优优势的带滞后推理策略策略优化(算法 1),缩写为 OAPL
    • Step1: 同步 \(\pi\) 和 \(\pi_{\text{vllm} }\),使它们共享相同的权重
    • Step2: 开始迭代:
      • 使用 \(\pi_{\text{vllm} }\) 的 Inference Engine 开始异步生成数据,并将其添加到缓冲区 \(\mathcal{D}\) 中
      • Trainer 通过最小化公式 3 来更新策略 \(\pi\),使用从 \(\mathcal{D}\) 中采样的数据
        • 注:公式中的 \(\hat{V}^{\star}(x)\) 可通过公式 2 直接计算得到(每次采样后可直接得到,不需要建模为神经网络更新)
      • 每隔 \(L\) 次 Trainer 迭代(\(L\) 是一个超参数),算法同步 \(\pi\) 和 \(\pi_{\text{vllm} }\) 的权重
  • 在同步的间隔上,算法以 Off-policy 方式运行:
    • \(\pi_{\text{vllm} }\) 既生成数据,又在公式 3 中充当 KL 参考
    • 由于其完全的 Off-policy 性质,OAPL 可以在 \(\pi\) 和 \(\pi_{\text{vllm} }\) 的两次同步步骤之间完全异步运行
  • 每当我们将 \(\pi_{\text{vllm} }\) 与 \(\pi\) 同步时,我们会清除缓冲区 \(\mathcal{D}\)
    • 以确保 \(\mathcal{D}\) 仅包含来自单个 \(\pi_{\text{vllm} }\) 的数据
    • 这是为了确保估计量 \(\bar{V}^{\star}\) 进而优势始终仅使用来自一个采样分布 \(\pi_{\text{vllm} }\) 的数据进行计算
    • 由于 OAPL 不依赖于重要性比率或裁剪操作,因此得到的更新简化为一个简单的最小二乘回归损失 ,即使在显著的策略滞后下也能保持稳定
Comparison to GRPO
  • GRPO 使用裁剪算子作用于 \(\frac{\pi(y|x)}{\pi_{\text{old} }(y|x)}\) 以防止 \(\pi\) 偏离 \(\pi_{\text{old} }\) 太远
    • 只是遵循了 PPO 的原始设计
    • 其中 \(\pi_{\text{old} }\) 是前一次迭代的 Trainer
  • 这个动机是保守策略迭代 (2002),但裁剪并不总是能有效地防止 \(\pi\) 偏离 \(\pi_{\text{old} }\)
    • 当从 \(\pi = \pi_{\text{old} }\) 开始时,使用 GRPO 损失的第一次梯度更新的计算不会引起任何裁剪
      • 如果第一个梯度很大,一步梯度下降就可能已经使 \(\pi\) 远离 \(\pi_{\text{old} }\),并且裁剪算子无法将 \(\pi\) 拉回到 \(\pi_{\text{old} }\)
      • 这是 PPO/GRPO 损失函数的一个已知问题 (2020)
      • 理解:其实每一步都会发生类似问题,不在于第一步,也不是因为第一步无裁剪,理论上,每一步都会有概率超过裁剪
  • OAPL 将 KL 正则化纳入优化目标,直接针对 \(\pi_{\text{vllm} }\),完全摒弃了 \(\pi_{\text{old} }\) 的概念,并直接使用来自采样分布 \(\pi_{\text{vllm} }\) 的对数概率
    • 在每次迭代中,OAPL 直接鼓励 Trainer \(\pi\) 在优化奖励的同时保持接近 \(\pi_{\text{vllm} }\)
    • 这种设计,加上 \(\pi_{\text{vllm} }\) 不频繁的更新,可以在训练期间防止策略的熵崩溃,从而带来比 GRPO 更好的测试时扩展能力
Comparison to \(A^{\star}\text{PO}\)
  • \(A^{\star}\text{PO}\) 最初被设计为一种 On-policy 强化学习算法,它使用损失函数中的 \(\ln \frac{\pi(y|x)}{\pi_{\text{ref} }(y|x)}\) 来估计在固定参考策略 \(\pi_{\text{ref} }\) 下定义的 \(V^{\star}\)
    • \(A^{\star}\text{PO}\) 在训练期间从不更新 \(\pi_{\text{ref} }\)
  • OAPL 以 Off-policy 方式运行,定期更新 Inference Engine \(\pi_{\text{vllm} }\),并且始终直接在损失函数中使用来自 \(\pi_{\text{vllm} }\) 的对数概率

Off-policy RL Post-Training Approaches

  • 处理强化学习后训练中 Off-policy 采样的方法大致可以分为两类:一类避免重要性采样,另一类应用重要性采样或其相关变体
  • 避免重要性采样的方法示例包括:
    • Melo 等人 (2025) 估计 Fisher 信息用于 Token 掩码
    • Arnal 等人 (2025) 为其目标函数添加偏差以获得性能改进保证
  • OAPL 类似地避免了重要性采样带来的额外方差,但在保持无偏的同时不需要额外的估计过程
  • 这一类中与作者工作最相关的是使用平方回归损失进行 On-policy 或 Off-policy 训练的方法,例如 REBEL (2024a)、REFUEL (2024b)、AGRO (2025) 或 Kimi K2 (2025a)
    • 这些方法不像 OAPL 那样估计 \(V^{\star}\),而是用类似于 RLOO 估计器 (2019) 的组相对基线进行方差缩减
  • 依赖重要性采样,或仅依赖重要性比率 \(\frac{\pi(y|x)}{\pi_{\text{vllm} }(y|x)}\) 的方法,在具体如何应用它方面有所不同
    • 例如,DeepSeek-v3.2 (2025a) 删除那些在 \(\pi\) 下似然较低的 Rollouts
    • Zhao 等人 (2025) 和 Zheng 等人 (2025b) 删除那些 Token-level 比率过大或过小的 Token
    • Roux 等人 (2025) 和 Su 等人 (2026) 构建目标函数来限制具有大重要性比率的 Token 的梯度
  • 通过避免重要性采样,OAPL 避免了删除可能对学习有用的样本或 Token,并且不会因向比率或梯度添加裁剪而引入偏差或额外的调优成本

Off-Policy RL in Asynchronous Settings

  • 关于异步和大规模强化学习训练的工作也处理了 Off-policy 采样
  • 例如,最近关于扩展基于人类反馈的强化学习系统的工作 (2025; 2025) 为此使用了截断的重要性采样
  • 在语言模型领域之外,扩展策略梯度算法和利用 Off-policy 数据的方法也使用某种形式的(通常是截断的)重要性采样 (2018; 2016; 2017; 2015),或者约束其数据生成以避免收集过于 Off-policy 的数据 (2019)
  • 其他方法通过学习 Q 函数完全避免重要性采样 (2018; 2015, 2016)
  • OAPL 同样不需要重要性采样,并且实际上可以理解为一种值学习方法
    • OAPL 使用 \(\ln \frac{\pi}{\pi_{\text{vllm} } }\) 作为函数逼近器来直接估计最优优势 \(A^{\star}\)

Experimental Setup

  • 在竞赛数学问题求解和代码生成上评估 OAPL,重点关注异步训练期间的稳定性以及通过 Pass@k 衡量的性能
  • 对于竞赛数学和代码生成两种设置,与 Brantley 等人 (2025) 的做法一致,作者在公式 2 和公式 3 中分别使用两个不同的 beta(\(\beta_{1}\) 和 \(\beta_{2}\)),而不是单一的 \(\beta\)
    • 这为选择超参数提供了额外的自由度
  • 关于实验的训练设置和超参数的更多细节可以在附录 A 中找到

Math Experimental Setup

  • 数学实验使用 Deepscaler (2025b) 作为作者的训练数据集,并使用 AIME 25、HMMT 25(02 月和 11 月)和 BRUMO 25 作为作者的评估集
  • 将 OAPL 与 GRPO 进行比较,后者增加了考虑 Inference Engine 和 Trainer 之间对数概率差异的重要性采样 (2025)
  • 对于这两种方法,作者都实现了异步优化,即着 Inference Engine 可以在作者优化 Trainer 的同时生成数据
  • 对于 OAPL,作者设置 \(L = 50\),即作者每 50 次迭代同步一次 Inference Engine 和 Trainer
  • 对于 GRPO,作者使用错位一步的异步训练
    • Trainer 使用的训练数据可能来自比 Trainer 自身最多老 1 次迭代的推理策略
  • 使用 Qwen3-4B-Thinking-2507 作为作者的基础模型,两种方法的最大生成长度均为 16384 个 token

Code Generation Experimental Setup

  • 代码生成实验使用一个高度 off-policy 的两阶段训练过程来复现 DeepCoder (2025a) 的性能
    • DeepCoder 是一个公开可用的、通过 GRPO 并辅以几个额外启发式方法训练的代码模型
  • 从基础模型 DeepSeek-R1-Distill-Qwen-14B 开始,为 DeepCoder 训练数据集中的每个 Prompt 生成一个包含 8 个 Response 的离线数据集
  • 为了将训练集中在可解的问题上,额外过滤掉了模型没有生成任何正确 Response 的所有 Prompt
  • 使用 OAPL 在这个数据集上训练基础模型 1 个 epoch,期间不同步 Trainer 和 Inference Engine
    • 使用得到的模型,从一个随机抽取的 4000 个 Prompt 的子集(由于资源限制)生成一个新的离线数据集,并在这个数据集上继续训练额外的 4 个 epoch
    • 这相当于运行 OAPL,其中 \(L\) 设置为 1 个 epoch(大约 400 次梯度更新),总迭代次数 \(T = 2\)
    • 两轮训练的最大生成长度均为 32K 个 token
  • 对于评估,遵循 DeepCoder 的 LiveCodeBench (2024) 设置,使用相同的 279 个 LiveCodeBench 问题子集,并以最大生成长度 64K 进行评估
    • 本文评估了 OAPL 第二轮训练中每个 epoch 的所有四个检查点,并报告表现最佳的检查点的结果

Experimental Results

  • 作者从三个方面评估 OAPL:在标准推理基准上的最终准确率、异步 Rollout 下的训练动态和稳定性,以及通过 Pass@k 衡量的测试时扩展性
  • 作者首先研究竞赛数学,在那里作者可以跟踪学习曲线和训练过程中的熵,然后转向代码生成,在那里作者评估极端策略滞后下的鲁棒性,并与经过 GRPO 训练的 DeepCoder 模型进行比较

Results on Competition Math

Performance on benchmarks
  • 图 1 表明,在三个基准测试的所有 Pass@k(针对不同的 \(k\))上,OAPL 都优于 GRPO 基线
  • 图 2 展示了在三个基准测试上的平均训练过程性能
  • 总体来说 OAPL 比 GRPO 学习得更稳定且性能更优
    • 还观察到,对于 GRPO 和 OAPL,在 Pass@1 奖励(即仅结果奖励)上进行训练可以提高 \(k > 1\) 时的 Pass@k。包括作者将要展示的代码生成实验,作者通常没有观察到 RL 不能提高 \(k > 1\) 时 Pass@k 的现象
Entropy behavior
  • 图 3(左)显示了训练过程中序列熵的变化
  • 观察到 OAPL 的熵没有崩溃,而 GRPO 的熵崩溃了
  • 在使用 OAPL 训练时观察到的熵增加,有助于 OAPL 在图 2 中的 Pass@5Pass@10 指标上优于 GRPO
  • 作者相信这种行为是由于 Inference Engine 和 Trainer 之间的不同步同步以及 Trainer 对 Inference Engine 的显式 KL 正则化所致
  • 注意,在作者的实验中,GRPO 和 OAPL 都不包含对 \(\pi_{\text{ref} }\) 的固定 KL 正则化
    • 这是因为 OAPL 和 GRPO 基线的目标都只是找到优化奖励的策略
Scaling k in Pass@k
  • OAPL 中更高的熵是否会导致 Pass@k 下更好的扩展行为?
    • 作者为每种方法选择最佳检查点(基于三个基准的平均 Pass@1),并随着 \(k\) 的增加评估 Pass@k
  • 图 4 表明
    • \(OAPL\) 平均而言(左图)比 GRPO 扩展得更好,并且在除 BRUMO 之外的每个基准上都是如此,在 BRUMO 上两种方法在 \(k = 64\) 时都已经达到了 \(90\) 以上的准确率
    • 特别是,对于 HMMT Nov 2025,OAPL 和 GRPO 之间存在很大差距
    • 有趣的是,RL 训练(OAPL 和 GRPO)在广泛的 \(k\) 范围内提高了 Pass@k
      • 与基础模型相比(例如,在 HMMT 25 Nov 上,OAPL 和基础模型之间的差距实际上随着 \(k\) 的增加而增加)
      • 这与许多先前的工作(例如 (2025))形成鲜明对比,后者认为 RL 只会锐化基础模型分布,从它不能提高大 \(k\) 时的 Pass@k 这个意义上说
Training stability with large policy lags
  • 当 Inference Engine 策略显著落后于 Trainer 时,OAPL 还能稳定学习吗?
    • 作者进一步评估了 \(L = 100\) 的 OAPL,即作者每 100 次迭代才同步 \(\pi_{\text{vlmm} }\) 和 \(\pi\)
  • 如图 3(右)所示,OAPL 继续稳定学习,这证明了 OAPL 对训练数据中不同程度的 off-policyness 的鲁棒性

Results on Code Generation

  • 使用第 5.2 节中描述的两阶段离线 Rollout 程序评估 OAPL 在极端 off-policyness 下是否仍然有效,并在 LiveCodeBench 上与 DeepCoder (2025a) 进行比较
Pass@k performance
  • 图 5(左)显示了 DeepCoder、作者的 OAPL 训练复现模型以及两者使用的基础模型 (Deepseek-R1-Distill-Qwen-14B) 在 LiveCodeBench 上的 Pass@k 性能
  • 对于所有模型,Pass@k 随着 \(k\) 的增加而增加
  • 在整个 \(k\) 范围内,OAPL 训练的模型与 DeepCoder 性能相当或略优
  • 与基础模型的扩展曲线相比,再次看到 RL 训练(OAPL 和用于 DeepCoder 的 GRPO 变体)提高了大 \(k\) 下的 pass@k
Sample efficiency
  • 使用 OAPL 训练也比原始的 DeepCoder 训练流程具有显著的样本效率
  • 图 5(右)显示了 OAPL 和 DeepCoder 的 Pass@1 性能随总训练样本数的变化
  • DeepCoder 在训练中使用了大约 65 万个样本
    • 相比之下,使用 OAPL 训练只需要 \(\sim 20\) 万个样本
  • 这表示所需的样本数量减少了大约 3 倍,同时达到相同或更好的性能
  • 这种比较确实略微夸大了 DeepCoder 的实际总计算成本,因为他们训练的第一部分(160 步)限制在 16K 长度的生成,之后才切换到 32K
  • 但即使作者将 16K 生成计为“半个”样本以进行更公平的核算,总数也大约是 58 万个样本,OAPL 仍然提供了显著的样本效率提升

附录 A:Experimental Details

A.1 Math Training Hyperparameters

  • 表 1 显示了两种方法使用的优化器超参数
    • 作者没有针对数学任务调整优化器
  • 表 2 显示了特定于方法的超参数
  • 表 3 显示了两种方法共享的超参数
  • 对于 OAPL,作者对 \(\beta_{1} = \{1,5\}\) 和 \(\beta_{2} = \{1e - 2,1e - 3\}\) 进行了超参数搜索
    • 可以观察到 \(\{\beta_{1} = 1,\beta_{2} = 1e - 3\}\) 给出了最佳的整体性能(平均而言),并报告使用这些值时的性能

Code Generation Training Hyperparameters

  • 表 4、5 和 6 分别显示了作者的代码生成实验的优化器、OAPL 特定和训练超参数
    • 由于运行的计算成本,作者没有进行超参数搜索来选择超参数,而是根据在其他实验中发现有效的默认值,为 OAPL 选择了 \(\beta_{1}, \beta_{2}\)

附录:公式 1 到 \(V^{\star}\) 的证明

证明目标

  • 在 KL 正则化 RL 的框架下,下面目标函数
    $$
    \max_{\pi} \mathbb{E}_{x, y \sim \pi(\cdot|x)} \left[ r(x, y) \right] - \beta , \text{KL}(\pi | \pi_{\mathrm{vllm} })
    $$
  • 的最优值函数 \(V^{\star}(x)\) 具有以下封闭形式:
    $$
    V^{\star}(x) = \beta \ln \mathbb{E}_{y \sim \pi_{\mathrm{vllm} }(\cdot|x)} \exp\left( \frac{r(x, y)}{\beta} \right)
    $$

证明

先求解最优策略的表达式
  • 本节证明亦可参考 RL——CQL 的附录部分
  • 给定 \(x\),作者考虑以下优化问题:
    $$
    \max_{\pi(\cdot|x)} \mathbb{E}_{y \sim \pi(\cdot|x)} \left[ r(x, y) \right] - \beta , \text{KL}(\pi(\cdot|x) | \pi_{\mathrm{vllm} }(\cdot|x))
    $$
  • KL 散度的定义:
    $$
    \text{KL}(\pi | \pi_{\mathrm{vllm} }) = \mathbb{E}_{y \sim \pi} \left[ \ln \frac{\pi(y|x)}{\pi_{\mathrm{vllm} }(y|x)} \right]
    $$
  • 因此目标函数可写为:
    $$
    \mathcal{L}(\pi) = \mathbb{E}_{y \sim \pi} \left[ r(x, y) - \beta \ln \frac{\pi(y|x)}{\pi_{\mathrm{vllm} }(y|x)} \right]
    $$
  • 可以用拉格朗日乘子法求解带归一化约束 \(\sum_y \pi(y|x) = 1\) 的优化问题,写出拉格朗日函数:
    $$
    \mathcal{L} = \sum_y \pi(y|x) \left[ r(x, y) - \beta \ln \frac{\pi(y|x)}{\pi_{\mathrm{vllm} }(y|x)} \right] + \lambda \left( 1 - \sum_y \pi(y|x) \right)
    $$
  • 对 \(\pi(y|x)\) 求导并令其为零(注意 \(\ln \pi\) 的导数):
    $$
    \frac{\partial}{\partial \pi(y|x)} \left[ \pi(y|x) \left( r(x, y) - \beta \ln \pi(y|x) + \beta \ln \pi_{\mathrm{vllm} }(y|x) \right) \right] - \lambda = 0
    $$
  • 展开得:
    $$
    r(x, y) - \beta \ln \pi(y|x) - \beta + \beta \ln \pi_{\mathrm{vllm} }(y|x) - \lambda = 0
    $$
  • 整理有:
    $$
    - \beta \ln \pi(y|x) + \beta \ln \pi_{\mathrm{vllm} }(y|x) + r(x, y) - \beta - \lambda = 0
    $$
  • 即:
    $$
    \ln \frac{\pi(y|x)}{\pi_{\mathrm{vllm} }(y|x)} = \frac{r(x, y) - \beta - \lambda}{\beta}
    $$
  • 令 \(Z = e^{(\beta + \lambda)/\beta}\),则:
    $$
    \pi(y|x) = \frac{1}{Z} \pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)
    $$
  • 由归一化条件 \(\sum_y \pi(y|x) = 1\),得:
    $$
    Z = \sum_y \pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)
    $$
  • 因此最优策略为:
    $$
    \pi^{\star}(y|x) = \frac{\pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)}{\sum_{y’} \pi_{\mathrm{vllm} }(y’|x) \exp\left( \frac{r(x, y’)}{\beta} \right)}
    $$
最优值函数 \(V^{\star}(x)\)
  • 将 \(\pi^{\star}\) 代入原目标函数:
    $$
    V^{\star}(x) = \mathbb{E}_{y \sim \pi^{\star} } \left[ r(x, y) - \beta \ln \frac{\pi^{\star}(y|x)}{\pi_{\mathrm{vllm} }(y|x)} \right]
    $$
  • 由 \(\pi^{\star}\) 的表达式:
    $$
    \ln \frac{\pi^{\star}(y|x)}{\pi_{\mathrm{vllm} }(y|x)} = \frac{r(x, y)}{\beta} - \ln \sum_{y’} \pi_{\mathrm{vllm} }(y’|x) \exp\left( \frac{r(x, y’)}{\beta} \right)
    $$
  • 代入得:
    $$
    \begin{align}
    V^{\star}(x) &= \mathbb{E}_{y \sim \pi^{\star} } \left[ r(x, y) - \beta \left( \frac{r(x, y)}{\beta} - \ln \sum_{y’} \pi_{\mathrm{vllm} }(y’|x) e^{r(x, y’)/\beta} \right) \right] \\
    &= \mathbb{E}_{y \sim \pi^{\star} } \left[ r(x, y) - r(x, y) + \beta \ln \sum_{y’} \pi_{\mathrm{vllm} }(y’|x) e^{r(x, y’)/\beta} \right] \\
    &= \beta \ln \sum_{y} \pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)
    \end{align}
    $$
  • 即,最终得到:
    $$ V^{\star}(x) = \beta \ln \sum_{y} \pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right) $$
  • 证毕

附录:最优优势 \(A^{\star}\) 的推导

  • 副标题:公式 \(\pi^{\star}\) 和 \(V^{\star}\) 的关系推导

证明目标

  • 本节的证明目标是:
    $$\beta \ln \frac{\pi^{\star}(y|x)}{\pi_{\text{vllm} }(y|x)} = \underbrace{r(x,y) - V^{\star}(x)}_{\text{optimal advantage } A^{\star}}, \quad \forall x,y.$$

证明过程

  • 由之前的推导已知:
    $$
    \begin{align}
    \pi^{\star}(y|x) &= \frac{\pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)}{\sum_{y’} \pi_{\mathrm{vllm} }(y’|x) \exp\left( \frac{r(x, y’)}{\beta} \right)} \\
    V^{\star}(x) &= \beta \ln \sum_{y} \pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)
    \end{align}
    $$
  • 对 \(\pi^{\star}(y|x)\) 取对数:
    $$
    \ln \pi^{\star}(y|x) = \ln \pi_{\mathrm{vllm} }(y|x) + \frac{r(x, y)}{\beta} - \ln \sum_{y’} \pi_{\mathrm{vllm} }(y’|x) \exp\left( \frac{r(x, y’)}{\beta} \right).
    $$
  • 整理对齐待证明式子:
    $$
    \ln \pi^{\star}(y|x) - \ln \pi_{\mathrm{vllm} }(y|x) = \frac{r(x, y)}{\beta} - \ln \sum_{y’} \pi_{\mathrm{vllm} }(y’|x) \exp\left( \frac{r(x, y’)}{\beta} \right).
    $$
  • 两边乘以 \(\beta\):
    $$
    \beta \ln \frac{\pi^{\star}(y|x)}{\pi_{\mathrm{vllm} }(y|x)} = r(x, y) - \beta \ln \sum_{y’} \pi_{\mathrm{vllm} }(y’|x) \exp\left( \frac{r(x, y’)}{\beta} \right).
    $$
  • 由 \(V^{\star}(x)\) 的定义:
    $$
    V^{\star}(x) = \beta \ln \sum_{y} \pi_{\mathrm{vllm} }(y|x) \exp\left( \frac{r(x, y)}{\beta} \right),
    $$
  • 代入得:
    $$
    \beta \ln \frac{\pi^{\star}(y|x)}{\pi_{\mathrm{vllm} }(y|x)} = r(x, y) - V^{\star}(x).
    $$
  • 这是本文最优优势 \(A^{\star}(x, y)\) 的定义,证毕

附录:OAPL 策略更新损失函数的梯度推导及分析

  • 回顾论文中的公式 (3) 如下:
    $$
    \min_{\pi} \sum_{x} \sum_{i=1}^{G} \left( \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} - \big( r(x, y_i) - \hat{V}^{*}(x) \big) \right)^2
    $$
    • \(\pi\) 是当前要优化的策略(trainer policy)
    • \(\pi_{\mathrm{vllm} }\) 是固定的推理策略(inference engine policy)
    • \(\beta > 0\) 是正则化系数
    • \(r(x, y_i)\) 是奖励
    • \(\hat{V}^{*}(x)\) 是通过组内样本估计的最优值函数
    • \(A^{*}(x, y_i) = r(x, y_i) - \hat{V}^{*}(x)\) 是估计的最优优势函数

OAPL 目标对 \(\pi\) 的梯度推导

  • 首先,上述目标对应的损失函数为:
    $$
    L = \sum_{x} \sum_{i=1}^{G} \left( \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} - A^{*}(x, y_i) \right)^2
    $$
  • 为简化分析,令:
    $$
    u_i = \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} - A^{*}(x, y_i)
    $$
  • 于是有:
    $$
    \frac{\partial L}{\partial \ln \pi(y_i | x)} = 2 u_i \cdot \beta
    $$
    • 注:对 \(\pi(y | x)\) 求梯度,本来考虑的是对某个具体的 token 序列 \(y\) 对应的 logits 的梯度,但为了清晰,我们直接先对 \(\ln \pi(y|x)\) 求导(这样已经足够分析梯度的含义了)
  • 因此有:
    $$
    \frac{\partial L}{\partial \pi(y_i | x)} = \frac{\partial L}{\partial \ln \pi(y_i | x)} \cdot \frac{\partial \ln \pi(y_i | x)}{\partial \pi(y_i | x)} = 2 \beta u_i \cdot \frac{1}{\pi(y_i | x)}
    $$
  • 故,原始损失函数的梯度为:
    $$
    \nabla_{\pi(y_i | x)} L = 2\beta \left( \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} - A^{*}(x, y_i) \right) \cdot \frac{1}{\pi(y_i | x)}
    $$

OAPL 梯度方向分析

  • 这里本文关注的是 梯度下降 更新规则:
    $$
    \pi_{\text{new} }(y|x) = \pi_{\text{old} }(y|x) - \eta \nabla_{\pi} L
    $$
  • 当 \(u_i > 0\) 时
    $$
    \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} > A^{*}(x, y_i)
    $$
    • 左边是当前的策略 \(\pi\) 相对于 \(\pi_{\mathrm{vllm} }\) 的对数比值,乘以 \(\beta\)
    • 右边是估计的最优优势函数
    • 如果 \(u_i > 0\),说明 当前策略 \(\pi\) 对 \(y_i\) 的偏好程度(相对于 \(\pi_{\mathrm{vllm} }\))已经超过了最优优势所指示的合理程度
    • 此时梯度为正,更新时会 降低 \(\pi(y_i|x)\) 的概率
  • 当 \(u_i < 0\) 时
    $$
    \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} < A^{*}(x, y_i)
    $$
    • 说明 当前策略 \(\pi\) 对 \(y_i\) 的偏好程度低于最优优势所指示的合理程度
    • 此时梯度为负,更新时会 增加 \(\pi(y_i|x)\) 的概率
  • 当 \(u_i = 0\) 时
    $$
    \beta \ln \frac{\pi(y_i | x)}{\pi_{\mathrm{vllm} }(y_i | x)} = A^{*}(x, y_i)
    $$
    • 此时梯度为零,\(\pi(y_i|x)\) 已经达到最优

整体理解

  • OAPL 梯度更新方向实际上是在做 一种隐式的策略调整
    • 目标是最小化 \(\beta \ln(\pi/\pi_{\mathrm{vllm} })\) 与 \(A^{*}\) 之间的平方误差
    • 换句话说,它希望 当前策略 \(\pi\) 对某个序列的偏好程度(相对于 \(\pi_{\mathrm{vllm} }\))与最优优势函数的值匹配
    • 如果 \(\pi\) 对某个高优势序列的偏好不足(\(u_i < 0\)),就增加它的概率;
    • 如果 \(\pi\) 对某个低优势序列的偏好过高(\(u_i > 0\)),就降低它的概率;
    • 同时,这种调整受 \(\beta\) 控制,\(\beta\) 越大,越强调保持与 \(\pi_{\mathrm{vllm} }\) 接近