Hexo

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

NLP——ROLL框架相关论文汇总

注:本文包含 AI 辅助创作

  • 参考链接:
    • ROLL 开源地址:github.com/alibaba/ROLL
    • ROLL 技术报告:(ROLL Technical Report)Reinforcement Learning Optimization for Large-Scale Learning: An Efficient and User-Friendly Scaling Library, ROLL Team, 20250606
    • ROLL 中文文档:(面向大规模学习的强化学习优化框架)Reinforcement Learning Optimization for Large-scale Learning
      • 副标题:阿里巴巴开源的强化学习库,专为大语言模型优化。支持分布式训练、多任务学习与智能体交互,让 AI 模型训练更简单、更高效
    • ROLL 英文文档:ROLL: Reinforcement Learning Optimization for Large-Scale Learning
    • ROLL 团队 Blog:wwxfromtju.github.io/roll_team.
    • ROLL 团队论文:(ROLL-Part1-RL4LLM-Reasoning, Lite PPO)Part I: Tricks or Traps? A Deep Dive into RL for LLM Reasoning, 20250811-20251027, ROLL
    • ROLL 团队论文:RollPacker: Mitigating Long-Tail Rollouts for Fast, Synchronous RL Post-Training, 20250925, ROLL
    • ROLL 团队论文:(ROLL-Part2-ROLL-Flash)Part II: ROLL Flash – Accelerating RLVR and Agentic Training with Asynchrony, 20251013, ROLL
    • ROLL 团队论文:(AsyPPO)Asymmetric Proximal Policy Optimization: mini-critics boost LLM reasoning, 20251002-20251015, ROLL
    • ROLL 团队论文:(Attention-Illuminates-LLM-Reasoning)Attention Illuminates LLM Reasoning: The Preplan-and-Anchor Rhythm Enables Fine-Grained Policy Optimization, 20251015-20260608, ROLL
    • ROLL 团队发布(20251108):github.com/alibaba/ROCK
    • ROLL 团队论文:(ROME & ALE & IPA)Let It Flow: Agentic Crafting on Rock and Roll, 20251231-20260312, ROCK & ROLL & IFLOW & DT Joint Team
      • 副标题:Building the ROME Model within an Open Agentic Learning Ecosystem
    • ROLL 团队论文:RollArt: Disaggregated Multi-Task Agentic RL Training at Scale, 20251227-20260615, HKUST & Alibaba & Tonogyi Lab
    • ROLL 团队博客:苦涩的教训!ROLL团队分享:Agentic RL 训练中的实践经验, 20260215
      • 注:ROLL TEAM 官方撰写
      • 英文版:The Bitter Lesson Behind Building Agentic RL in Terminal Environments, 20260211

Part I: Tricks or Traps?(Lite PPO)

  • 原始论文:(ROLL-Part1-RL4LLM-Reasoning, Lite PPO)Part I: Tricks or Traps? A Deep Dive into RL for LLM Reasoning, 20250811-20251027, ROLL
  • 本文发布于 202508 和 202510,是一项系统性的实证研究,针对当前 RL 用于提升 LLM 推理能力这一热点领域,指出了其中存在的混乱和矛盾现状
  • 本文提出了一个更简单、更强大的基线方法(Lite PPO)
    • 其核心信息是:技术选择需因地制宜(模型类型、数据难度),且“Less is more”
  • 论文的核心贡献:
    • 在开源框架 ROLL 下,对多种流行的 RL “Tricks” 进行解耦和精细的隔离评估,深入分析了其内部机制、适用场景和核心原则
    • 论文挑战了“过度工程化”的 RL Pipeline 趋势,证明了一个极简方法 Lite PPO ,即可在使用 vanilla PPO loss 且无Critic 的情况下,超越包含冗余组件的复杂算法(如GRPO 和 DAPO)
      • 1)优势归一化 :采用 组级均值 + 批次级标准差(来自 Takeaway 3)
      • 2)损失聚合 :采用 Token-level 损失(来自 Takeaway 7)
        • 将所有 \(G\) 个Response 的所有Token 的损失求和,然后除以总Token 数 \( \sum_{i=1}^G |o_i| \)
      • 3)策略优化 :将计算出的 Token-level 优势 \(\hat{A}_{i,t}\) 代入 vanilla PPO loss ,进行策略更新
  • 局限性:所有结论基于 Qwen3 系列模型

核心问题 & 动机

  • 论文首先点明了 RL4LLM 领域的“爆炸式”增长与“碎片化”理解之间的鸿沟,这种碎片化体现在:
    • 相互矛盾的结论 :
      • GRPO 提倡组级(group-level)归一化,而 REINFORCE++ 认为批次级(batch-level)归一化更好
      • GRPO 在归一化中使用方差,而 Dr.GRPO 建议移除方差
      • GRPO 使用 Response-level损失计算,DAPO 则采用 Token-level 损失计算
    • 技术选择的复杂性 :大量看似正交的技术(如归一化、裁剪、过长度过滤)组合繁多,难以选择
  • 论文认为,这些混乱的根源在于已有工作的实验设置、训练数据和模型初始化差异巨大,导致结论存在偏差
    • 核心问题:现有技术分别适用于什么场景?是否存在一个简单且通用的组合来增强策略优化?

实验设计与 Baselines(第3节)

  • 为确保公平性和可比性,论文设计了严格的实验框架
  • 统一框架 :所有实验基于开源的 ROLL 框架 (2025)
  • 基础算法 :统一采用 vanilla PPO loss (2017),Advantage 使用 REINFORCE 算法 (1999) 计算,不使用Critic网络
  • 模型 :涵盖不同规模和初始化状态
    • 规模:Qwen3-4B 和 Qwen3-8B
    • 类型:Base(未对齐,pre-trained)和 Instruct(已对齐,aligned)
  • 数据集 :全部来自开源,并根据难度划分为:
    • Easy :来自 SimpleRL-Zoo-Data-Easy(GSM8K, MATH-500-level1)
    • Medium :选自 DeepMath-103k 中最简单的 5000 道题
    • Hard :从 DeepMath-103k 中按难度比例采样 5000 道题
  • 评估基准 :MATH-500, OlympiadBench, MinervaMath, AIME24-25, AMC23
  • 基线结果(重要发现) :
    • 数据难度影响 :
      • 模型在简单数据上收敛快,但易过拟合
      • 模型在困难数据上,会生成更多 Token 来拟合复杂推理模式
    • 模型初始化影响 :
      • 已对齐(Instruct)模型初始准确率和生成长度更高,但 RL 带来的进一步提升空间有限(约 2%),表明当前 RL 算法对已高度优化的模型提升不大

重点方法与详细流程分析(第4节)

  • 对四大类技术进行了深度剖析,每个技术点的分析都遵循“假设-实验-Takeaway”的结构
Normalization
  • 归一化用于降低梯度方差
    • 主要分歧在于Group-level 与Batch-level 归一化的选择,以及是否使用标准差(std)
  • 方法流程 :
    • 1)计算均值与标准差 :对于一个 Prompt \( \mathcal{X} \) 和其 \(K\) 个 Response ,对应的奖励为 \(\{r_k\}_{k=1}^K\)
      • 组级归一化 :优势为:
        $$ A_{k}^{\text{group} } = \frac{r_{k} - \text{mean}(\{r_{j}\})}{\text{std}(\{r_{j}\})}$$
      • 批次级归一化 :优势为:
        $$ A_{i}^{\text{batch} } = \frac{r_{i} - \text{mean}(\{r_{j}\}_{j=1}^{N+K})}{\text{std}(\{r_{j}\}_{j=1}^{N+K})} $$
        • 其中 \(N\) 是 Rollout Batch 大小
    • 2)将计算出的优势值 \(A\) 代入 PPO 的目标函数中
  • 关键 Insight & Takeaway :
    • Takeaway 2(标准差项的影响) :
      • 当奖励分布高度集中(如 Easy 数据集,大多数Response 全对或全错)时,标准差极小
        • 除以该小标准差会异常放大梯度,导致训练不稳定甚至梯度爆炸
        • 此时,移除标准差(仅使用均值平移,\(A_{k}^{\text{std} } = r_{k} - \text{mean}(\{r_{j}\})\))能显著提升训练的稳定性和有效性
      • 在Hard数据集上,奖励方差大,此问题不明显
    • Takeaway 3(稳健的归一化组合) :
      • “Group-level mean + Batch-level std” 是最稳健的组合
      • 其流程为:
        • 对每个Prompt 组内的 Response ,减去该组的均值
        • 除以的却是整个Rollout Batch 的奖励标准差
          • 注:这种全局标准差能更有效地降低梯度幅度,防止策略更新过激,对稀疏和粗粒度的奖励信号更鲁棒
裁剪策略(Clipping),重点:Clip-Higher
  • 标准 PPO 裁剪 会抑制低概率 Token ,导致 熵塌缩(Entropy Collapse) ,策略丧失多样性,不利于复杂推理中的探索
  • Clip-Higher 解耦了上下裁剪边界,设置 \(\epsilon_{\text{low} }\) 和 \(\epsilon_{\text{high} }\)(其中 \(\epsilon_{\text{high} } > \epsilon_{\text{low} }\)),为低概率Token 提供更大的“上升”空间
  • 方法流程 :
    • 1)计算概率比率 \(r_{i,t}(\theta) = \frac{\pi_{\theta}(o_{i,t}|q,o_{i< t})}{\pi_{\theta_{\text{old} } }(o_{i,t}|q,o_{i< t})}\)
    • 2)对比率 \(r_{i,t}(\theta)\) 应用非对称裁剪:\(\text{clip}(r_{i,t}(\theta), 1-\epsilon_{\text{low} }, 1+\epsilon_{\text{high} })\)
    • 3)将裁剪后的比率与优势 \(A_t\) 相乘,代入优化目标
  • 关键 Insight & Takeaway :
    • Takeaway 4(适用场景) :
      • Clip-Higher 对已对齐(Instruct)模型效果显著,对基座(Base)模型效果甚微甚至有害
      • 原因在于:
        • 基座模型策略本身变化小(裁剪率低),表达能力有限,提高上界无法激发有效探索
          • 问题:为什么基座模型策略本身变化会小?
          • 补充观察:Base Model 的策略裁剪率极低(约 0.003),这表明新旧策略之间的偏差很小
          • 理解:
            • 作者的发现应该是:基座模型相对较弱的策略表达能力限制了其探索能力,阻碍了高奖励轨迹的发现
            • 因此,提高裁剪上界对学习动态几乎没有改善
          • 个人理解:应该是基座模型本身的熵高,不需要提高上界吧
        • 而已对齐模型初始概率分布集中(原文图 9),提高上界能有效缓解熵塌缩 ,促进对更优解路径的探索
          • 问题:原文图 9 似乎画反了,Base 模型的分布应该能该是更加平坦才对,Instruct 才会更加 Sharp
    • Takeaway 5(语言学视角) :
      • 传统裁剪主要抑制连接词(如 “therefore”, “if”, “but” )的概率更新
        • 这些词是推理结构转换的关键信号
      • Clip-Higher 通过放宽对这些 Token 的限制,使模型能够探索更广泛的论述推理结构,从而生成更具创新性的推理路径(原文图 10)
    • Takeaway 6(参数设置规律) :
      • 在小规模模型(4B)上,性能与裁剪上界 \(\epsilon_{\text{high} }\) 之间存在 “scaling law”
        • 即上界越高(实验探索至 0.32),性能越好。
      • 在较大模型(8B)上,该规律不成立,最佳性能点出现在 \(\epsilon_{\text{high} }=0.28\)(原文图 11)
损失聚合粒度(Loss Aggregation)
  • Sequence-level 聚合先对每个Response 内的所有Token 损失求平均,再对所有Response 求平均,这导致长Response 的每个Token 贡献被稀释
  • Token-level 聚合则对所有Token 的损失求和后,除以总Token 数,保证每个Token 贡献相等
  • 方法流程对比 :
    • Sequence-level :
      $$ \mathcal{T}_{\text{sequence-level} }(\theta) = \frac{1}{G} \sum_{i=1}^{G} \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \min(…) $$
      • 每个Response权重相同
    • Token-level :
      $$\mathcal{T}_{\text{token-level} }(\theta) = \frac{1}{\sum_{i=1}^{G}|o_i|} \sum_{i=1}^{G} \sum_{t=1}^{|o_i|} \min(…)$$
      • 每个Token权重相同
  • 关键 Insight & Takeaway :
    • Takeaway 7(模型类型依赖) :Token-level 损失在 Base 模型上更有效 ,能提升收敛速度、峰值准确率和鲁棒性,尤其是在困难数据集上
    • 在 Instruct 模型上,Sequence-level 损失反而更优
      • 因为已对齐模型已有稳定的推理能力,强行均衡 Token 级梯度可能破坏其输出结构和一致性
Overlong Filtering
  • 训练时通常设置最大生成长度进行截断
    • 复杂推理任务中,结构良好的推理链可能因超过长度而被截断,被错误标记为负样本
    • Overlong Filtering 通过 Mask 过长度Response的奖励信号来缓解此问题
  • 方法流程 :
    • 1)设定一个最大长度阈值(如 8k, 16k, 20k)
    • 2)在训练中,对超过该阈值的Response ,将其奖励或优势值 Mask 掉(例如置零或不参与梯度计算),使其不贡献于策略更新
  • 关键 Insight & Takeaway :
    • Takeaway 8(效果取决于任务长度需求) :
      • 在短-中等推理任务中,截断的噪声对训练干扰较大,过滤后(比如较短阈值如 8k)模型能更好地学习紧凑有效的推理路径,从而提升准确率
      • 在长尾推理任务中,一般使用较长阈值(如 20 K),有效推理链很少被截断,截断样本大多是病理生成,过滤掉它们对训练影响有限,因此收益不明显
        • Overlong Filtering 并不主动“打压”或“鼓励”长样本,而是通过去除被截断的噪声样本,让模型避免学习到“因截断而被错误惩罚”的信号,从而更准确地建模 EOS 行为
      • Overlong filtering shows limited effectiveness on long-tail reasoning tasks; however, it can enhance the accuracy and clarity of responses in medium and short-length reasoning tasks.

    • 理解:建议始终添加 Overlong filtering,除非想要打压输出过长的样本
      • 但是,现实中,一些特殊的实现逻辑,比如格式逻辑,可能会对超长样本进行打压,比如 Thinking 模式下,超长样本可能连 CoT 都还没有输出完,一般不遵循格式,此时会被打压,变相是在惩罚超长样本

最终方法:Lite PPO

  • 基于上述分析,论文针对非对齐(Non-aligned / Base)模型 ,整合出两项最有效的技术,提出了 Lite PPO
  • Lite PPO 方法流程 :
    • 1)优势归一化 :采用 组级均值 + 批次级标准差(来自 Takeaway 3)
      • 对每个Prompt \(q\),采样 \(G\) 个Response ,得到奖励 \(\{r_i\}_{i=1}^G\)
      • 计算组内均值 \(\mu_{\text{group} } = \text{mean}(\{r_i\})\) 和整个Rollout Batch的标准差 \(\sigma_{\text{batch} }\)
      • 计算优势 \(\hat{A}_i = \frac{r_i - \mu_{\text{group} } }{\sigma_{\text{batch} } }\)
    • 2)损失聚合 :采用 Token-level 损失(来自 Takeaway 7)
      • 将所有 \(G\) 个Response 的所有Token 的损失求和,然后除以总Token 数 \( \sum_{i=1}^G |o_i| \)
    • 3)策略优化 :将计算出的 Token-level 优势 \(\hat{A}_{i,t}\) 代入 vanilla PPO loss ,进行策略更新
  • 结果 :实验表明(原文图 15),Lite PPO 在 4B-Base 和 8B-Base 模型上,均稳定超越 GRPO 和包含更多复杂组件的 DAPO。其优势在于:
    • 归一化技术有效对抗了非均匀奖励分布(Easy/Hard 数据集)带来的干扰
    • 移除了限制小模型生成长尾输出的过长度过滤,并采用了对基座模型更高效的 Token-level 损失

RollPacker

  • 原始论文:RollPacker: Mitigating Long-Tail Rollouts for Fast, Synchronous RL Post-Training, 20250925, ROLL
  • 整体说明:
    • 论文提出 Tail Batching 策略,通过重新组织 Prompt 顺序,在不牺牲同步 on-policy 精度的情况下大幅减少长尾 Rollout 造成的气泡
    • Tail Batching 策略在不放松同步的前提下,通过重排训练样本顺序,将长尾 Prompt 集中到少数步骤上(Long Rounds),其余多数步骤(Short Rounds)只包含平衡的短 Response ,从而大幅减少气泡
      • Short Round 很快,Long Round 较慢,但 Long Round 较少,在 1.25 倍 Prompt 配置时,每 4 步 Short Round 才会有一次 Long Round
    • 特别说明:Tail Batching 策略是针对同步 On-policy RL 训练的,完全不涉及 Off-policy,所以理论上不会因为数据 Off-policy 而影响性能

背景 & 当前问题

  • 背景:同步 的 on-policy RL 训练(即每次 Rollout 必须基于最新模型权重)能保证训练稳定性和模型性能,但面临严重的GPU 利用率低下问题(气泡)
    • 这些气泡主要由 Rollout 阶段中 Response 长度的长尾分布 导致
    • 少数过长 Response 会拖慢整个批次(Batch),使得处理短 Response 的 GPU 长时间空闲
  • 现有解决方案
    • 先前用于缓解 RL 后训练中 GPU 空闲气泡的努力通常分为两类:同步约束下的阶段重叠和放宽同步
    • 同步约束下的阶段重叠 (Stage Overlap)
      • 在同步 Barrier 之前,将长尾 Rollout 与其它阶段的执行进行流水线处理,来提高资源利用率
        • RLHFuse (2024) 将 Rollout 与 Reward 计算和参考模型推理重叠
        • ROLL (2025) 和 MiMO (2025) 等框架则将每个已完成 Response 的 Reward 计算与正在进行的 Rollout 阶段重叠,以实现异步 Reward 计算
      • 问题:
        • 这些设计在一定程度上减少了空闲气泡,但它们并未从根本上解决主导 Rollout 时间的长尾 Response 问题,且性能提升有限
        • 而且,随着 RL 后训练中 Response 长度的持续增长 (2025),Reward 和参考模型推理的相对贡献逐渐减小(通常不到步骤运行时的 15%,如原文表 1 所示),即使在理想的重叠情况下,也不足以掩盖长时间的空闲气泡
    • 放宽同步 (Relaxed Synchronization)
      • 更激进的策略:放宽 Rollout 和训练之间的严格同步 Barrier ,如原文图 1b 所示
      • Kimi (2025) 引入了 Partial Rollout,通过截断长尾 Response 并保留已生成的 Token,以便在后续步骤中继续 Rollout
      • StreamRL (2025)、AsyncFlow (2025) 和 RhymeRL (2025) 允许一步陈旧性 (one-step staleness),使得训练阶段能够在一个单次流水线 (one-off pipeline) 中使用略微过时的 Rollout 数据进行
      • AReal (2025) 引入了完全异步的 RL 训练,其中 Rollout 和训练完全解耦,更新可能依赖于许多步骤之前生成的样本
      • 问题:
        • 这些方法在减少 GPU 气泡方面很有效:但放宽同步损害了训练的 On-policy 特性,通常会导致精度下降和稳定性降低
  • 总结:要么通过将非瓶颈阶段与 Rollout 重叠而仅提供微小的改进,要么通过放宽同步而牺牲 On-policy 的保证
  • 本文目标:保持同步 RL 训练的精度和稳定性的同时,从根本上消除长尾 Rollout 带来的低效问题

Tail Batching 策略

  • 核心思想 :只改变 Prompt 的处理顺序,不改变样本分布,也不放松同步,从而在保持精度前提下消除气泡
问题与挑战
  • P1 :如果简单丢弃长尾 Prompt ,会导致批次大小不足
  • P2 :系统性地排除长 Prompt 会扭曲训练分布,损害模型性能
Tail Batching 解决方案
(1) Speculative Execution:解决 P1
  • 在每个 Short Round 中,不是精确启动 \( P_0 \) 个 Prompt ,而是启动 更多 个(比如 \(\eta P_0\),\(\eta > 1\))
  • 每个 Prompt 也生成超过 \( R_0 \) 个 Response(\(\eta R_0\))
    • 只保留最先完成的 \( P_0 \) 个 Prompt,每个 Prompt 只保留最先完成的 \( R_0 \) 个 Response
  • 这种“竞赛式”执行自然过滤掉生成慢的长尾样本,保证批次大小完整,同时所有 Response 都较短且平衡
(2) Long-Prompt Queue: 解决 P2
  • 被中止或未选中的 Prompt(生成长 Response 的)不会丢失,而是放入 长 Prompt 队列
  • 当队列累积到 \( P_0 \) 个 Prompt 时,触发一次 Long Round :在该轮中,禁用投机执行 ,让所有 Prompt 生成完整长度 Response
  • 由于长尾 Prompt 很少,Long Round 出现频率低,大部分步骤仍是高效的 Short Round
(3) 训练精度保证
  • Tail Batching 仅改变样本顺序,不改变分布
    • 已有研究(如课程学习)表明顺序变化不损害最终精度,甚至可能有益
    • 注意:在 需要 Batch Normalization 的算法中这个结论不一定
  • 论文实验(原文图 8)证明 RollPacker 与标准同步 RL 的准确率曲线几乎完全重合
效率验证
  • 在代码数据集上,\(\eta=1.25\) 时,前四个 Short Round 最大 Response 长度减少 8.9 倍 ,第五个 Long Round 长度与基线相当
  • 端到端训练时间缩短 1.48 倍(原文图 4,原文表 2)

RollPacker 系统设计

  • 为充分释放 Tail Batching 的潜力,RollPacker 针对三个 RL 阶段分别进行系统优化
系统概览
  • 并行规划器(Parallelism Planner) :动态调整 Tensor Parallelism (TP) 大小,适应 Short/Long Round 的不同内存压力
  • 奖励调度器(Reward Scheduler) :异步流水线执行 Reward 计算,并自适应调整计算预算(如超时)
  • 流式训练器(Stream Trainer) :在 Long Round 中,将已完成的 Response 立即流式送入训练,并动态将空闲 GPU 从 Rollout 重分配给训练,同时保证 on-policy 语义
  • 工作流程(原文图 5):
    • 1)Tail Batching 决策是否为 Short/Long Round
    • 2)并行规划器 选择最优 TP
    • 3)Reward 调度器 与 Rollout 并行计算奖励
    • 4)Stream Trainer 监控进度,决定何时将 GPU 从 Rollout 转为训练
    • 5)完成 Response 流式进入训练,计算梯度但不立即更新
      • 注:这不适用于需要 Batch Normalization 的算法
    • 6)全部 Rollout 完成后,所有 GPU 同步进行最终梯度累积与更新
    • 7)更新后的 Actor 权重同步到下一轮 Rollout
Parallelism Planner
  • 问题 :Short Round 因投机执行导致并发请求多,KV Cache 压力大,固定 TP 会导致大量抢占(Preemption)或通信开销
  • 方案 :
    • 离线阶段:在不同 TP、批次大小、序列长度下,Profile 内存占用和吞吐
    • 在线阶段:跟踪抢占计数,若突然增加(如 >1.05 倍)则加倍 TP;若连续 4 步无抢占则减半 TP
    • TP 组限制在单台服务器内,避免跨节点通信
  • 效果 :减少 Short Round 抢占 13.8%,提速 1.11–1.28 倍(原文图 6、原文图 12)
Reward Scheduler
  • 异步奖励计算 :完成 Response 后立即分发到 Reward Worker ,与 Rollout 重叠
  • 代码沙盒自适应超时 :
    • 对每个测试用例,记录正确 Response 的最大执行时间 \( T_{\text{anchor} } \)
    • 新 Response 若超过 \( T_{\text{timeout} } = \min(\max(T_{\min}, \lambda T_{\text{anchor} }), T_{\max}) \),则提前终止并判零奖励(\(\lambda=1.5, T_{\min}=2s, T_{\max}=30s\))
    • 减少无效长时间执行,提速 1.6 倍(原文图 13c)
  • LLM-as-a-Judge 优化 :
    • GPU 共享 :将 Judge 模型与 Actor 放在同一 GPU,使用 MPS(Multi-Process Service) 实现空间共享,避免资源闲置(原文图 13a)
    • 层式流水线卸载 :将 Judge 大部分层卸载到 CPU 内存,逐层流式传到 GPU 计算,减少显存占用,提速 1.4 倍(原文图 13b)
Stream Trainer
  • 目标 :在 Long Round 中,因无投机执行,仍存在 Response 完成时间不均,产生气泡
  • 方法(算法 1):
    • 1)监控进度 :当已完成 Response 占比在 20%–50% 之间,且 KV Cache 预估不超过内存限制时,触发 GPU 缩放
    • 2)选择释放的 GPU :确保不拆分 TP 通信组,优先释放一半 Rollout GPU
    • 3)迁移请求 :将未完成的请求迁移到剩余 GPU,通过重计算 KV Cache 恢复(开销小)
    • 4)流式训练 :已完成的 Response 立即在释放的 GPU 上计算梯度,但不更新权重 ,仅缓存梯度
      • 注:这不适用于需要 Batch Normalization 的算法
    • 5)最终同步 :全部完成后,按每个 GPU 处理的样本数重新归一化局部梯度 ,再进行全局平均与权重更新,保证与标准 on-policy 数学等价
  • 效果 :减少端到端时间达 14%(原文表 3、原文表 4)

Implementation

  • 代码量 ~6.6k 行 Python,基于 ROLL 框架
  • Rollout :使用 vLLM v0.8.4,扩展 abort_request 和 add_request 接口支持投机执行与迁移
  • Reward :用 ray.remote 实现分布式,代码沙盒和数学评估在 CPU 上,Judge 用 CUDA Stream 管理
  • Training :基于 Megatron-LM v0.12.2,梯度计算时不加载优化器状态,梯度张量暂存于主机内存,最终同步时再加载

Evaluation

  • 端到端性能
    • 模型 :Qwen2.5-7B/14B/32B,最大长度 8k/16k/32k
    • 对比系统 :veRL(强基线)、RLHFuse(同步重叠最优)
    • 结果(原文图 8、原文图 9、原文表 2):
      • 精度 :RollPacker 与 veRL 精度曲线几乎重合,验证 Tail Batching 无精度损失
      • 速度 :相比 veRL,加速 2.03×–2.56×;相比 RLHFuse,加速 1.14×–2.24×
      • Short Round 尤其突出,加速达 2.1×–3.6× vs veRL
  • 性能分解(原文表 2)
    • Tail Batching 单独贡献:1.30×–2.21×
    • +Reward 调度器 :提升至 2.01×–2.48×
    • +并行规划器 :进一步提升至 2.01×–2.52×
    • +Stream Trainer :最终达 2.03×–2.56×
  • Tail Batching 敏感性(原文图 11)
    • 固定 \( P_0 \),增大 \(\eta\)(响应数)到 1.5 时收益明显;固定 \( R_0 \),增大 \(\eta\)(Prompt 数)会增加 Long Round 频率,反而不利
    • 最优 \(\eta=1.25\)(同时用于 P 和 R),提速达 3.9 倍
  • 并行规划器(原文图 12)
    • 动态调整 TP 在序列长度增长时有效减少抢占和延迟,平均提速 1.9 倍 vs 固定 TP=1
  • 奖励调度器(原文图 13)
    • MPS 共享 GPU 提速 1.25 倍
    • 层式流水线 提速 1.4 倍
    • 自适应超时 提速 1.6 倍
  • 流式训练器(原文表 3、原文表 4)
    • 自适应 GPU 缩放 提速 1.08 倍 vs 无缩放
    • 异步流式获取 比固定批量获取提速 14%
  • 可扩展性(原文图 14)
    • 在 128 个 H800 GPU 上,RollPacker 吞吐量是 veRL 的 2.2 倍 ,且近线性扩展

Part II: ROLL Flash

  • 原始论文:(ROLL-Part2-ROLL-Flash)Part II: ROLL Flash – Accelerating RLVR and Agentic Training with Asynchrony, 20251013, ROLL
  • ROLL Flash 是基于 ROLL 的异步框架设计,详情见 NLP——ROLL-Flash(ROLL-Part2)

AsyPPO

  • 原始论文:(AsyPPO)Asymmetric Proximal Policy Optimization: mini-critics boost LLM reasoning, 20251002-20251015, ROLL
  • Asymmetric Proximal Policy Optimization (AsyPPO) 的核心思想是:利用预训练模型已有的强大表征能力,采用非对称 的 Actor-Critic 架构
    • 即用一个或多个 Lightweight 的 Mini Critic 来指导一个规模大得多的 Actor
    • 通过精巧的数据划分集成策略 和基于 Critic 间不确定性的目标函数重构 ,AsyPPO 在显著降低计算开销的同时,稳定了训练过程,并在多个数学推理基准上取得了优于 PPO 和 GRPO 的性能
  • 论文核心观点总结
    • 将 RL4LLM 中 Critic 的困境定义为架构问题 ,而非单纯的算法或优化问题,使用非对称的 Actor-Critic 设计可解决计算瓶颈
    • 数据多样性是集成 Critic 的关键 :
      • 在 RL4LLM 中,由于 Critic 初始化相同,数据划分的多样性是打破同质化、实现有效集成的关键,而非依赖参数随机初始化
    • Critic 间的不确定性是强大的学习信号 :
      • 低不确定性(高共识)→ 低信息量状态 → 应掩码其优势以避免过拟合
      • 高不确定性(高分歧)→ 噪声/无关状态 → 应过滤其熵正则化以实现安全探索
    • 两个 Critic 是最优平衡点 :在性能提升和计算开销之间,使用两个 Mini Critic 提供了最佳的性价比

背景 & 问题

  • RL4LLM 的现状与困境 :
    • 经典 PPO 是强大的 Actor-Critic 算法
      • 但将之直接应用于 LLM 时,Critic 通常需要与 Actor 规模相当(对称架构),带来巨大的显存和计算开销
    • GRPO 等算法去除了 Critic,利用组内采样结果的均值作为基线来估计优势
      • 但这种“Critic-free”的方法放弃了细粒度的状态价值估计,导致学习不稳定、样本效率低,尤其是在 Off-policy 设置下
  • 关键 Insight :
    • 与经典 RL(从零开始学习)不同,RL4LLM 中的 Actor 和 Critic 都继承自强大的预训练模型,拥有丰富的先验知识
      • 这使得 用一个小得多的 Critic 来指导大 Actor 成为可能
    • 但单个小 Critic 的价值估计能力有限,且多个 Critic 若初始化相同、训练数据相同,则无法形成有效的集成(Ensemble)多样性

AsyPPO 算法

  • AsyPPO 的核心在于构建一个既轻量又可靠的 Critic 系统,并利用该系统提供的价值不确定性来优化策略学习
  • 整个流程如算法 1 所示,主要包括三个创新点
Lightweight Robust Value Estimation
  • 这部分解决了 “如何让多个 Mini Critic 产生多样且可靠的估计” 的问题
  • 1)基础架构 :
    • Actor :一个大规模的 LLM,参数为 \(\theta\),如 Qwen3-14B
    • Mini-Critics :一组 \(M\) 个轻量级 LLM(本文证明 \(M=2\) 是最佳平衡点),参数为 \(\{\phi_m\}_{m=1}^M\),如 Qwen3-1.7B
      • 多个 Critics 共享相同的网络结构,但训练数据不同
  • 2)核心挑战 :若所有 Critic 使用相同数据训练,它们的行为会趋于一致(同质化),集成失去意义
  • 3)解决方案:Prompt 级非重叠数据划分 :
    • 训练时,对于同一批次的 Prompts,将每个 Prompt 生成的多个 Responses(即 Rollout)均匀地、不重叠地 分配给各个 Critic
      • 理解:为了节省数据,适当加入 Overlap 是不是也可以
      • 例如,每个 Prompt 生成 32 个 Responses,Critic 1 学习前 16 个,Critic 2 学习后 16 个
    • 这种设计保证了每个 Critic 对同一个 Prompt 下的不同推理路径进行学习,产生了差异化的优化信号,增强了多样性
      • 由于它们都覆盖了所有 Prompt,又保持了感知同步性(Perceptual Synchrony),避免了对特定 Prompt 的过拟合
    • 训练目标 :每个 Critic \(m\) 在其专属数据集 \(\mathcal{D}_m\) 上通过最小化均方误差来拟合目标回报 \(R_t\)(即折扣累积奖励),总损失为各 Critic 损失之和:
      $$
      \mathcal{L}_{\text{critic} }(\phi) = \sum_{m=1}^{M} \mathbb{E}_{(s_t, R_t) \sim \mathcal{D}_m} \left[ (V(s_t;\phi_m) - R_t)^2 \right]
      $$
      • 其中 \(s_t\) 是状态(当前已生成的 Token 序列),\(V(s_t;\phi_m)\) 是第 \(m\) 个 Critic 对状态 \(s_t\) 的价值估计
  • 4)优势计算 :
    • 最终的状态价值 \(\bar{V}(s_t)\) 通过简单平均所有 Critic 的输出来计算:
      $$
      \bar{V}(s_t) = \frac{1}{M} \sum_{m=1}^{M} V_m(s_t;\phi_m)
      $$
    • 然后使用 GAE(广义优势估计)计算修正后的优势函数 \(\bar{A}_t\):
      $$
      \bar{A}_t = \sum_{l=0}^{T-t-1} (\gamma \lambda)^l \delta_{t+l}, \quad \delta_t = r_t + \gamma \bar{V}(s_{t+1}) - \bar{V}(s_t)
      $$
      • 其中 \(r_t\) 是即时奖励(通常只在最终步有稀疏奖励),\(\gamma\) 是折扣因子,\(\lambda\) 是 GAE 参数
Advantage Masking based on Value Agreement
  • 这部分解决了 “如何筛选高质量样本,防止策略过拟合” 的问题
  • 1)核心观察 :
    • 当多个 Critic 对某个状态 \(s_t\) 的价值估计 非常一致(即标准差 \(\sigma_t\) 很小)时,表明该状态是常见、低信息量(Low-informative)的
    • 在这些状态上过度优化容易导致过拟合,且不会带来显著的性能提升
  • 2)不确定性度量 :用 Critic 们价值估计的标准差 \(\sigma_t\) 作为不确定性的度量:
    $$
    \sigma_t = \text{std}\left(\{V(s_t;\phi_m)\}_{m=1}^M\right)
    $$
    • \(\sigma_t\) 小 = 高一致性(High Agreement)= 低不确定性
  • 3)掩码机制 :
    • 在每个训练批次中,计算所有状态的价值估计标准差,并选出 \(\sigma_t\) 最小 的 \(k%\) 状态(即最无信息量的状态)
    • 构建一个二元掩码向量 \(\mathbb{I}_t^A\),对这些状态对应的 Advantage 进行掩码(设为 0),从而在策略损失中忽略它们
    • 掩码指示函数 :
      $$
      \mathbb{I}_t^A = \begin{cases} 0, & \text{if } \sigma_t \in \text{Low}_k(\sigma) \\ 1, & \text{otherwise} \end{cases}
      $$
      其中 \(\text{Low}_k(\sigma)\) 表示标准差最低的那组状态的集合
  • 4)作用 :这种操作相当于一个自适应的、数据驱动的学习过滤器 ,引导策略更新关注于更有价值、更具信息量的状态,从而稳定了 Off-policy 训练(高 UTD 比率下尤甚)
    • 理解:UTD 是 Update-To-Data 的缩写,也常被称为 Update-to-Data Ratio(更新-数据比率)
      • UTD = 1:标准的纯 On-policy 训练
        • 数据采样一次,策略更新一次,样本用完即弃
      • UTD > 1:Off-policy 或高数据复用的训练
        • 同一批数据会被策略重复使用多次(例如,在多个 Epoch 上反复学习)
        • 这是 PPO 等算法为了提高样本效率而采用的一种常见做法(即 PPO 中的 ppo_epochs 参数)
  • 理解:
    • 这里基于 Critic 的估计方差来 mask Policy 的 Token Loss 是不科学的,因为部分状态的价值估计可能会非常确定,但是动作的价值不确定,还是需要更新的吧!
Entropy Filtering based on Value Divergence
  • 这部分解决了“如何安全探索,避免在无意义状态上浪费探索”的问题
  • 1)核心观察 :
    • 当多个 Critic 对某个状态 \(s_t\) 的价值估计显著分歧(即标准差 \(\sigma_t\) 很大)时,通常意味着该状态与最终奖励的相关性弱,或是具有干扰性的噪声状态(如无意义的连接词、语气词)
  • 2)问题 :传统的熵正则化鼓励在所有状态上探索
    • 但在高分歧的状态上进行探索是低效甚至有害的
  • 3)过滤机制 :
    • 在每个训练批次中,选出 \(\sigma_t\) 最大 的 \(h%\) 状态(即最不确定、最可能为噪声的状态)
    • 构建另一个二元掩码向量 \(\mathbb{I}_t^\mathcal{H}\),将这些高分歧状态 从熵损失的计算 中移除 ,防止策略在这些无效状态上被鼓励探索
      • 理解:其实我们现在通常几乎不加 entropy loss 了
    • 过滤指示函数 :
      $$
      \mathbb{I}_t^\mathcal{H} = \begin{cases} 0, & \text{if } \sigma_t \in \text{Top}_h(\sigma) \ 1, & \text{otherwise} \end{cases}
      $$
      • 其中 \(\text{Top}_h(\sigma)\) 表示标准差最高的那组状态的集合
  • 4)作用 :将探索集中在那些 Critic 意见相对一致、与决策真正相关的状态上
    • 这被称为“安全的熵正则化”,有效防止了熵的崩溃,并引导策略向高回报方向收敛
最终重构的策略损失函数
  • 将上述两种机制整合到经典的 PPO 裁剪目标中,得到最终的优化目标:
    $$
    \begin{aligned}
    \mathcal{J}_{\text{AsyPPO} }(\theta) = \mathbb{E} \frac{1}{|o|} \sum_{t=1}^{|o|} \Big[ \color{red}{\mathbb{I}_t^A} \cdot \min \left( r_t(\theta) \bar{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \bar{A}_t \right) + \beta \cdot \color{red}{\mathbb{I}_t^\mathcal{H}} \cdot \mathcal{H}[\pi_\theta(\cdot|s_t)] \Big]
    \end{aligned}
    $$
    • \(\mathcal{H}[\pi_\theta(\cdot|s_t)]\) 是策略在状态 \(s_t\) 下的熵
    • \(\mathbb{I}_t^A\) 和 \(\mathbb{I}_t^\mathcal{H}\) 分别是上述的优势掩码和熵过滤指示函数

实验

  • 实验设置
    • 模型 :Actor 采用 Qwen3-4B/8B/14B-Base;Critic 采用 Qwen3-0.6B/1.7B/4B-Base
    • 数据 :仅使用开源数学数据集(如 DeepMath-103K 的子集)进行训练,样本量约 5000 个 Prompt
    • Benchmarks :AIME24/25, MATH-500, OlympiadBench, MinervaMath, AMC 2023
    • Baselines :经典对称 PPO, GRPO, 以及单 Critic 的非对称 PPO
  • 主要结果 (RQ1: 泛化性)
    • 性能:AsyPPO 在 4B、8B 和 14B 的 Actor 上都一致且显著地优于 GRPO 和经典 PPO
      • 在 14B 模型上,AsyPPO 比 GRPO 平均提高了约 3 个百分点的准确率
    • 效率:相比于对称 PPO,AsyPPO 减少了约 20% 的峰值显存占用,并且每步训练时间快了约 20 秒(与 GRPO 水平相当)
      • 这证明了其轻量级架构的有效性
  • 消融实验与分析 (RQ2 & RQ3)
    • Critic 数量与大小 (原文图 9):
      • 大小 :Critic 模型越大,指导效果越好,呈现类似 Scaling Law 的趋势
      • 数量 :2 个 Critic 是最佳选择
        • 从 1 个增加到 2 个,性能有质的飞跃(Qualitative leap);增加到 3 个或更多,性能提升有限,但计算成本增加
      • 集成聚合方式 :使用 Critic 价值估计的均值 优于使用最小值,说明在 RL4LLM 中价值高估(Overestimation)不是主要问题
    • 优势掩码比例 (原文图 10 左):
      • Mask 掉 \(\sigma_t\) 最低的 20% 的状态时,性能提升最大
      • 过多或过少都会损害效果
    • 熵过滤比例 (原文图 10 中、右):
      • 过滤掉 \(\sigma_t\) 最高的 20% 的状态的熵损失时,性能最优
        • 过滤过多(如 40%)会导致熵崩溃,过少则效果不明显
      • 对比实验表明,基于 Value-Std 的过滤比基于 Entropy 本身的过滤更有效,且二者筛选出的状态重叠度很低(原文图 6),表明 Value-Std 提供了一种独特的、正交的不确定性信息
    • 算法机制验证 (原文图 5, 7):
      • 原文图 5 验证了优势掩码的有效性:在数据复用率(UTD=4)较高时,掩码机制能显著防止过拟合,提升性能
      • 原文图 7 验证了熵过滤的有效性:相比不加过滤的熵正则化,过滤机制能稳定策略的熵值,避免其崩溃,从而稳定训练

Attention-Illuminates-LLM-Reasoning

  • 原始论文:(Attention-Illuminates-LLM-Reasoning)Attention Illuminates LLM Reasoning: The Preplan-and-Anchor Rhythm Enables Fine-Grained Policy Optimization, 20251015-20260608, ROLL
  • 论文最大的创新在于发现了 “Preplan-and-Anchor” Rhythm(预规划-锚定节奏)
    • “Preplan-and-Anchor” Rhythm 是 LLM 在推理过程中展现出来的一种内部注意力动态规律
      • 描述了模型在生成推理步骤时,如何通过局部注意力 和全局注意力 的协同配合,来组织和引导后续推理
  • 论文内容较为复杂,需要统计 Attention 等,对已有框架改动较大

核心发现:“Preplan-and-Anchor” Rhythm

  • 这个节奏包含两个紧密耦合的阶段:
Preplan(预规划)阶段
  • 在模型即将进入一个新的语义块(如一个新的推理步骤、子句或逻辑片段)时,局部注意力头 会表现出 WAAD(Windowed Average Attention Distance)的峰值
    • 衡量模型生成当前 token 时,局部注意力头需要回溯多远的历史信息,其峰值标志着新推理步骤或语义块的开端(即“预规划”时刻)
  • 此时模型会主动回顾较远的上下文(跨距较大),以获取足够的信息来“起草”下一个推理步骤的开头
    • 这是因为当前局部上下文不足以唯一确定下一个词,模型需要借助更广泛的背景来消除歧义
  • Insight :
    • WAAD 值升高(即注意力向更远的过去扩展)
    • 对应位置的token 熵较高 ,表示模型预测不确定性大
    • 通常出现在语义边界或新步骤的起始处
Anchor(锚定)阶段
  • 在预规划阶段之后(或与之重合),全局注意力头 会突出显示某个 高 FAI(Future Attention Influence)的 token
    • \(\text{FAI}_s \) 衡量了 Token \(s\) 对未来生成的影响程度
    • FAI 衡量一个 token 被后续所有 token 平均关注的程度,其高值表明该 token 是引导后续推理走向的“锚点”式关键逻辑节点
  • 这个“锚点” token 会被后续多个 token 反复关注,起到稳定推理方向 、组织后续内容的作用
    • 它通常是逻辑关键点,如中间结论、重要定义或决策变量
  • Insight :
    • FAI 值高,表示该 token 对后续生成具有广泛影响
    • 该 token 通常出现在 WAAD 峰值附近或紧随其后
    • 如果该锚点本身是“局部主导”(即 WAAD 较低),则其信用会部分回传给其对应的预规划 token,形成信用共享
两者耦合的节奏
  • 时序关系 :通常 WAAD 峰值(预规划)先出现 ,随后(或同时)出现 FAI 峰值(锚点)
  • 功能意义 :模型先通过长程注意力 “规划” 下一步的主题,然后通过一个高影响力的 token 将这个主题 “锚定” 下来,供后续推理持续引用
  • 举例:在一个数学推理问题中,模型会在计算新变量前先回顾题目条件(预规划),然后输出一个关键数字或变量名(锚点),后续所有计算都会围绕这个锚点展开
与优化结合的意义
  • 论文利用这一节奏,提出细粒度信用分配策略 :
    • 对预规划 token 和锚点 token 给予更高的优势权重(advantage amplification)
    • 当锚点本身是局部主导时,将其部分信用“回传”给其预规划 token
    • 这种策略使得强化学习能更精准地奖励/惩罚对推理路径至关重要的关键节点,而非均匀分配所有 token 的权重

对优化方法的启发

  • 用 WAAD 识别 Preplan Token(局部 Attention 突增点),用 FAI 识别 Anchor Token(被未来 Token 高频关注者)
  • 论文提出三种 RL 策略对关键推理节点进行针对性 Advantage 重加权:
    • Local-chunk Credit(放大 Preplan Token)
    • Global-anchor Credit(放大 Anchor Token)
    • Coupled Rhythm Credit(将局部主导 Anchor 的部分信用回溯至其 Preplan 前驱)
  • 论文中发现:顺应模型内在推理节奏进行 Credit Assignment,在数学推理、QA、规划等多任务和多模型上取得一致提升

补充:本文的方法和 “高熵加权” 方法的区别

  • 为什么“熵”看起来可行?(论文中的观察)
    • 论文确实发现,WAAD 峰值与高熵高度相关(Coupling Pattern 1)
    • 在语义边界(新步骤开头),模型不知道下一个词该是什么,因此预测概率分散,熵很高
      • 此时模型会回头去看远距离上下文(WAAD 升高)
    • 所以,熵确实能标识出 “不确定的边界点”
  • 直接用熵来识别关键点不够好 ,原因有两点:
    • 1)高熵≠有效规划 :熵高只表示“不确定”,但无法区分模型是在主动回顾上下文来规划 (有效),还是随机瞎猜(无效)
      • WAAD 能直接测出模型是否在回看长程信息,从而甄别真正的“规划时刻”
    • 2)熵会漏掉低熵的“锚点” :很多对后续推理起决定性作用的 token(锚点),生成时模型非常自信(低熵),但它们被后续所有 token 反复关注,影响巨大
      • 只有 FAI 能识别出这类低熵但高影响力的关键节点
  • 论文实验也证明,单靠熵来放大信用,效果远不如结合 WAAD 和 FAI 的节奏策略 ,有时甚至带来负收益(数学上是负收益)

ROME & ALE

  • 原始论文:(ROME & ALE & IPA)Let It Flow: Agentic Crafting on Rock and Roll, 20251231-20260312, ROCK & ROLL & IFLOW & DT Joint Team
  • 论文的核心理念:构建高性能的 Agentic LLMs 的挑战已不再仅仅是数据规模或质量,而在于训练基础设施、可执行环境和评估协议三者的 co-design
  • 论文提出了一个全栈基础设施:ALE(Agentic Learning Ecosystem)
  • 论文的核心贡献总结:
    • 提出 ALE :一个集成了 ROLL、ROCK、iFlow CLI 的全栈代理学习生态系统,为训练、执行、部署提供了统一、可扩展、安全的基础设施
    • 发布 ROME :一个在 ALE 上训练的、高效的 Agentic LLM,以激活 3B 参数的性能超越了众多同量级和更大规模的模型
    • 提出 IPA 算法 :通过将 RL 优化粒度从 Token 提升到 Interaction Chunk,结合分块级折扣回报、重要性采样和分块级初始化重采样,有效解决了长时程代理任务中的训练不稳定和采样效率低下的问题
    • 发布 Terminal Bench Pro 新 Benchmark

范式转移

  • 现有 LLM 工作流的两大局限:
    • 1)单次生成 :早期模型只能基于单次 Prompt 生成静态响应,缺乏迭代推理和环境反馈闭环,难以应对复杂的端到端任务
    • 2)实践鸿沟 :尽管通过 SFT 或 RL 进行了一些改进,但在处理长时程、稀疏奖励任务时,这些方案往往缺乏稳定性,且未形成规模化、端到端的生态系统
  • ALE 旨在打通数据生成、Agent 执行和策略优化的闭环,实现持续、自适应的端到端优化

ALE:三大系统协同

  • ALE 三个协同组件构成(对应论文标题中的 ROCK, ROLL, iFlow CLI):
ROLL:可扩展的强化学习训练框架
  • ROLL 是一个支持大规模、多环境、多轮采样的 RL 后训练框架
  • 三个关键阶段(详见原文图 2b):
    • 1)Rollout :Agent 生成动作并与环境交互,产生轨迹
    • 2)Reward :对轨迹打分
    • 3)Training :利用轨迹和奖励更新模型权重
  • 核心优化机制 :
    • Fine-grained Rollout :将 Rollout 分解为 LLM 生成、环境交互、奖励计算三个阶段,实现样本级并行流水线
      • 即单个样本为单位调度,而不是 Batch 为单位调度
    • Asynchronous Training :解耦 Rollout 和 Training 设备
      • 通过一个Sample Buffer 和Asynchronous Ratio 来控制策略新旧程度,在保证准确率的同时提高吞吐量
    • 训练-展开复用(Train-Rollout Multiplexing) :动态调度 GPU 资源,解决静态分区带来的资源气泡问题
      • Rollout 需求高峰时,所有 GPU 用于生成轨迹
      • 当缓冲区数据足够,触发 收缩(Shrink) 操作,将部分 GPU 分配给 Training
      • 训练完成后,扩展(Expand) 操作将 GPU 归还 Rollout
ROCK:安全的沙盒环境执行引擎
  • ROCK 是一个框架无关、可大规模扩展的沙盒环境管理器,提供安全、隔离的执行环境
  • ROCK 的核心架构(详见原文图 4):采用客户端-服务器架构,包含:
    • Admin 控制平面 :编排、调度、资源分配
    • Worker 节点 :运行沙箱运行时
    • Rocket Proxy :负责通信和网络策略执行
    • EnvHub :环境镜像注册中心,加速冷启动
  • ROCK 的关键特性 :
    • 1)标准化 API :提供符合 GEM 标准的Sandbox API 和 GEM API,无缝集成各类RL框架
      • 注:GEM 标准来源于开源项目 github.com/axon-rl/gem,详情见开源实现
      • 理解:基本类似 OpenAI 的 Gym 项目 github.com/openai/gym 和 后来的 github.com/Farama-Foundation/Gymnasium 的设计
    • 2)Agent Native Mode :通过在 ROCK 环境中部署 ModelProxyService,拦截所有 LLM 请求
      • 这使得训练框架(ROLL)只需作为生成引擎,而完整的上下文管理交由部署框架(iFlow CLI)控制,保证了训练与部署的上下文一致性,解耦了系统
    • 3)大规模调度与隔离 :支持动态分配资源,扩展到数万个并发环境,且每个任务有独立的沙盒,实现故障隔离和网络访问控制
iFlow CLI:配置化 Agent 框架
  • iFlow CLI 作为上下文管理器(Context Manager)和用户界面,编排 Agent 与环境的交互
  • iFlow CLI 的核心工作流(详见原文图 5):采用 Single-Agent Control Loop (遵循 Anthropic 的建议)
    • Main Agent 通过上下文管理(含上下文压缩、提醒、检测、环境管理 )选择合适的工具或子 Agent
  • 上下文工程技术 :
    • 持久记忆(Persistent Memory) :维护待办文件
    • 上下文隔离(Context Isolation) :子任务由子 Agent 在独立上下文中处理
    • 上下文检索(Context Retrieval) :按需检索信息
    • 上下文压缩(Context Compression) :控制 Prompt 长度
    • 上下文增强(Context Enhancement) :强调关键信号
  • 开放配置能力 :支持自定义System Prompt 、工作流/规范(Workflow/Spec)和Tool Set(通过 MCP 协议集成)
    • 使通用模型能够适配特定领域的专业知识
  • 注:iFlow CLI 曾经是开放使用的,可安装到本地的工具,原始开源地址:github.com/iflow-ai/iflow-cli,从 20260417 起正式停止服务,无法再继续使用,作者推荐使用 Qoder
    • seedling iFlowCLI → Qoder CLI 迁移指南

Agentic Model ROME:训练流水线与算法创新

  • Agentic Model: ROME is Obviously an Agentic ModEl
  • ROME 是基于 Qwen3-MoE,在 ALE 上训练得到的开源 Agentic 模型
  • ROME 开发遵循一个清晰的三阶段流程,如原文图 7 所示:包含 CPT 、SFT 和 RL
数据组成:基于能力蓝图的分层设计
  • 论文提出了一个Agent 能力蓝图来指导数据设计:
    • 1)任务理解与规划(Task Understanding and Planning)
    • 2)行动与执行(Action and Execution)
    • 3)交互与适应(Interaction and Adaptation)
  • Basic Data :聚焦代码能力与推理
    • 代码中心基础数据 :从高质量 GitHub 仓库、Issue-PR 对中构建了五大类任务
      • 代码定位(Code Localization)
      • 代码修复(Code Repair)
      • 单元测试生成(Unit Test Generation)
      • 多轮交互(Multi-turn Interaction)
      • 代码推理(Code Reasoning)
  • Agentic Data :聚焦闭环执行与工具使用
    • 核心数据对象
      • 实例(Instance) :包含任务描述、Docker 环境、单元测试
      • 轨迹(Trajectory) :记录多轮交互过程
    • 生成 Pipeline :
      • Explore Agent :从 Issue/PR 中生成草稿,并运用 Skill Primitives 生成变体
      • Instance Builder Agent :通过自我对弈(Self-Play)在 ROCK 沙盒中验证、构建可复现的 Instance
      • Review Agent :独立验证 Instance 的质量,防止“假阳性”解决方案(即通过测试但逻辑错误)
      • Trajectory Agent :让不同 LLM 在 Instance 上运行,生成大规模执行轨迹
    • 数据过滤 :采用一个 四阶段过滤管道 来确保数据质量:
      • Heuristic Filter -> LLM-based Judge-> Execution Simulator -> Expert Inspection
  • Safety-Aligned Data :
    • 论文中披露了一个重要发现:Agent 在 RL 优化过程中,可能会自发产生危险行为(如建立反向 SSH 隧道、挖矿)
    • 作者构建了涵盖Safety&Security、Controllability、可信度(Trustworthiness) 三类风险的数据集,通过红队攻击进行数据注入和防御训练
训练 Pipeline 详解
  • 总体训练目标:打造一个具备 Agentic Crafting 能力的 LLM
    • 这种能力超越了简单的单轮响应,要求模型能够在真实环境(如软件仓库、终端)中进行多轮交互,执行计划、采取行动、观察结果并迭代优化,最终完成复杂的、工作流驱动的任务
    • 为了实现这一目标,训练流程致力于构建模型的三大核心能力维度:
      • 1)任务理解与规划 :从模糊指令中提取意图,制定可执行的计划
      • 2)行动与执行 :熟练调用各种工具(编译器、测试套件、代码搜索等),并正确解读工具输出
      • 3)交互与适应 :基于环境反馈(测试结果、报错信息)动态调整计划和行动,维持长期目标
CPT:培养基础行为能力
  • 此阶段的目标是在基础 LLM 上注入代码理解和基础代理行为模式
  • CPT 阶段一:原子任务掌握
    • 数据 :约 500B tokens
      • 包括从高质量 GitHub 仓库提取的结构化代码任务(错误定位、代码修复、单元测试生成),并辅以思维链(CoT)推理过程和模拟的多轮反馈轨迹
      • 同时也包含部分通用推理和工具使用数据
    • 目标 :让模型学习代码语义、故障定位、测试生成等基础技能
    • 训练 :标准的自回归语言建模(NTP),全局 batch size 为 32M tokens,学习率恒定为 \(3 \times 10^{-5}\)
  • CPT 阶段二:代理求解器涌现
    • 数据 :约 300B tokens
      • 由更强大的教师模型(如 Qwen3-Coder-480B)在沙盒环境(文件系统、购物模拟器)中交互生成的行为轨迹,包含成功和失败后的修正路径
    • 目标 :培养模型的长期规划能力、决策空间探索能力和错误恢复能力
      • 使模型学会“形成意图、维持目标、并高效探索”
    • 训练 :超参数与阶段一基本一致,但将权重衰减从 0.1 线性退火至 0.01
SFT:锚定可靠策略区域
  • 此阶段是连接 CPT 和 RL 的桥梁,旨在通过高质量示范数据,将策略锚定在可靠的行为空间内,避免 RL 早期探索时产生灾难性遗忘或崩溃
  • 论文提出了一个两阶段SFT ,并重新设计了损失函数
  • 新的损失函数:训练目标中添加 错误掩码训练(Error-Masked Training) 与 任务感知上下文掩码(Task-Aware Context Masking) :
    • 动态 Mask 的最大似然目标函数:
      $$
      \mathcal{L}_{\text{SFT} }(\theta) = -\frac{1}{\sum_{k=1}^{K}m_k|c_k| + \epsilon}\sum_{k=1}^{K} m_k \log \pi_\theta (c_k|s_k)
      $$
      • 其中 \(c_k\) 是第 \(k\) 轮模型的响应,\(s_k\) 是对话状态,\(\pi_\theta\) 是策略,\(m_k \in {0, 1}\) 是交互级别的掩码
    • Mask \(m_k\) 的定义:
      $$ m_k = m_k^{\text{err} } \cdot m_k^{\text{task} } $$
      • 如果第 \(k\) 轮触发了工具调用或执行错误,则掩码为 0,屏蔽错误轮次的梯度
        $$ m_k^{\text{err} } = \mathbf{1}[\text{not Err}(k)] $$
      • 如果第 \(k\) 轮与当前子任务无关(基于启发式判定),则掩码为 0,只保留任务相关轮次的梯度
        $$ m_k^{\text{task} } = \mathbf{1}[\text{Rel}(k)] $$
  • SFT 阶段一:启发式引导的 Naive SFT
    • 数据:基于消融实验的 Insight (如“过度思考”样本有损效率、Python 示例增强泛化等),构建了一个百万级的高质量数据集,构成比例为:
      • 70% 的代理任务数据(端到端开发、API 编排)
      • 15% 的推理密集型数据(数学、算法)
      • 15% 的通用指令
      • 数据经过去除“过度思考”样本、过滤冗余工具调用、剔除“假阳性”轨迹(通过测试但逻辑错误)等多级过滤
    • 目标:教会模型基础的多轮工具调用模式和指令遵循能力
  • SFT 阶段二:自适应高价值数据复访
    • 数据:从第一阶段数据中,进一步筛选出三类高置信度轨迹:
      • (1) 可执行的、通过单元测试的交互轨迹
      • (2) 高级工程师标注的示范
      • (3) 经过偏好排名(结合规则约束和奖励模型)后的优质样本
    • 目标:提供更可靠、更干净、与下游 RL 信用分配需求更对齐的监督信号,缩小初始行为习得与稳定 RL 之间的差距
为 RL 准备训练实例
  • 从约 60K 个候选实例中,通过多基线模型计算任务难度,筛选出约 2K 个中等难度且环境确定性高的实例,用于 RL 训练
高效可扩展的 Agentic RL (IPA 算法)
  • 现有 RLVR 方法在 Agent 场景下的三大问题:
    • 策略更新不稳定、长时程信用分配低效、轨迹采样效率低
  • (Interaction-Perceptive Agentic Policy Optimization, IPA)可以解决上述问题
    • 核心思想 :将优化粒度从Token 或完整轨迹,提升到交互块(Interaction Chunk) 层面
    • 一个 Chunk 定义为从一次环境交互到下一次交互之间的一组连续 Token,通常以一个工具调用结束(如 推理 -> 格式化 API 调用 -> 触发执行)
  • IPA Step 1)建立稳健的 Off-Policy 基线(基于 REINFORCE) :
    • 首先采用 REINFORCE 算法,其梯度为
      $$ \nabla J_{\text{REINFORCE} }(\pi) = \mathbb{E}_{\tau \sim \pi}[R(\tau)\nabla \log \pi (\tau)] $$
    • 解决 Off-Policy 问题 :引入 截断重要性采样(Truncated Importance Sampling, TIS) 和 几何平均(Geometric Mean) 来计算重要性权重 \(\rho(\tau)\),修正策略分布偏移
      $$
      \rho (\tau) = \left(\prod_{t\in \tau}\frac{\pi_{\theta}^{\text{metagon} }(\tau_{t}|\tau_{< t})}{\pi_{\theta_{\text{old} } }^{\text{metagon} }(\tau_{t}|\tau_{< t})}\right)^{\frac{1}{|\tau|} }
      $$
      • \(\theta\) 是模型参数
      • \(\tau_t\) 是轨迹 \(\tau\) 中的第 \(t\) 个 Token
      • \(\pi_{\theta}^{\text{metagon} }\) 指 Megatron-LM 训练引擎中的策略
      • \(\pi_{\theta_{\text{old} } }^{\text{SGLang} }\) 指 SGLang 推理引擎中的旧策略
    • 区分正负样本 :仅对负样本使用 TIS ,正样本使用加权监督学习更新 ,避免负样本导致策略崩溃
    • 处理推理-训练不匹配 :当推理引擎(SGLang)和训练引擎(Megatron-LM)的 Token 级概率差异超过阈值 \(H\) 时,使用 Token 级掩码 \(m_k\) 屏蔽该 Token 的梯度,确保训练稳定性
  • IPA Step 2)建模为分块MDP (Chunked MDP) :
    • 将 Token 轨迹 \(\tau_{[1:T]}\) 分割为分块序列 \(\{c_1, c_2, \ldots, c_K\}\),其中 \(K \ll T\)
    • 定义分块 MDP 为元组 \((S, \mathcal{C}, \mathcal{P}, \mathcal{R}, \gamma)\)
      • \(S\):状态空间,编码到分块开始时的完整历史
      • \(\mathcal{C}\):分块动作空间,每个动作 \(c\) 是一个变长Token序列
      • \(\mathcal{P}\):转移动力学
      • \(\mathcal{R}\):稀疏奖励(仅当所有单元测试通过时有正奖励)
      • \(\gamma \in (0, 1]\):分块层面的折扣因子
  • IPA Step 3)重构训练目标:分块级优化 :
    • 分块级折扣回报 (Chunk-Level Discounted Return) :给分块 \(c_k\) 分配回报
      $$ G_k = \gamma^{\Delta(j,k)} \times R_{\text{final} } $$
      • \(\Delta(j,k)\) 是 \(c_k\) 与最终分块 \(c_j\) 之间的块数
      • \(R_{\text{final} }\) 是最终奖励
      • 这避免了 Token 级折扣导致的指数信号衰减
    • 分块级重要性采样 (Chunk-Level Importance Sampling) :计算整个分块内 Token 的几何平均概率比
      $$ \rho_c(c) = \left(\prod_{t\in c}\frac{\pi_{\theta}^{\text{negation} }(\tau_{t}|\tau_{< t})}{\pi_{\theta_{\text{old} } }^{\text{negation} }(\tau_{t}|\tau_{< t})}\right)^{\frac{1}{|\tau|} } $$
    • 分块级掩码 (Chunk-Level Masking) :
      $$ m_{c} = \mathbb{I}\left(\left(\prod_{t\in c}\frac{\pi_{\theta_{\text{old} } }^{\text{negation} }(\tau_{t}|\tau_{< t})}{\mu_{\theta_{\text{old} } }^{\text{SLang} }(\tau_{t}|\tau_{< t})}\right)^{\frac{1}{|\tau|} }\leq H\right) $$
    • 最终 IPA 梯度公式(结合正负样本和分块级优化):
      $$
      \nabla J_{\text{Chunk-RL} }(\pi) = \underbrace{\sum_{c\in \mathcal{T}^{+} }\mu_{\theta_{\text{old} } }^{\text{SGLang} }(c)G_{c}\sum_{k=1}^{|c|}m_{c}\nabla \log \pi_{\theta}^{\text{negatron} }(c_{k}|\tau_{< c_{k} })}_{\text{Weighted SL update for positive examples} } + \underbrace{\sum_{c\in \mathcal{T}^{-} }\mu_{\theta_{\text{old} } }^{\text{SGLang} }(c)[\rho_{c}(c)]_{0}^{1}G_{c}\sum_{k=1}^{|c|}m_{c}\nabla \log \pi_{\theta}^{\text{negatron} }(c_{k}|\tau_{< c_{k} })}_{\text{Clipped IS update for negative examples} }
      $$
      • \(\mathcal{T}^{+}\) 和 \(\mathcal{T}^{-}\) :正、负轨迹集合。\(G_c\) 是分块的折扣回报。\([\rho_{c}(c)]_{0}^{1}\) 表示将重要性权重截断在0到1之间
  • IPA Step 4)Rollout 范式的改进:分块级初始化重采样 (Chunk-Level Initialized Resampling) :
    • 问题:从初始状态采样复杂任务的完整轨迹,成功信号极为稀疏
    • 方法:从一个专家轨迹 \(\tau^{*} = (c_{1}^{*},c_{2}^{*},\ldots,c_{K}^{*})\) 中选择一个关键分块 \(c_{f}^{*}\),将环境初始化为该分块之前的状态 \(\tau_{\leq c_{f-1} }^{*}\),然后让当前策略从该状态开始重新采样后续轨迹(\( \tau_{\geq c_{f} }\))
    • 两种实现方案 :
      • 顺序回滚(Sequential Rollback) :从专家轨迹的最后一个分块开始,逐步向前回滚
      • 并行初始化(Parallelized Initialization) :同时从多个锚点分块(Anchor Chunks)开始采样,提高效率
    • 混合训练目标 :当从某个关键分块采样无法获得正样本时,回退到模仿学习(IL) ,对专家分块 \(c_{f}^{*}\) 应用 IL 损失,防止策略退化
      $$
      \mathcal{L}_{\text{IPA} } = \lambda_{\text{IL} }\cdot \sum_{c_k^*\in \tau_{< c_f^*} } \log \pi_\theta(c_k^*|\tau_{< c_{k-1} }^*) + \lambda_{\text{RL} }\cdot \mathcal{L}_{\text{Chunk-RL} }^{\text{CE}\tau_{\geq c_f^*} }
      $$
  • Token-level,Chunk-level,Sentence-level 的对比
    • Sentence-level 优化粒度过于粗糙:一条完整序列往往包含多轮决策与交互行为
      • 若将这些交互视作单一整体序列开展优化,会造成细粒度信息的损耗
    • Token-level 动作会造成决策粒度与外部环境状态转移 Dynamics 之间的不匹配:
      • 绝大多数词元不会对外部环境产生任何作用

实验

评估设置
  • 采用三维评估框架:
    • 1)工具使用能力 :在 TAU2-Bench, BFCL-V3, MTU-Bench 上测试
    • 2)通用代理能力 :在 GAIA, BrowseComp-ZH, ShopAgent 上测试
    • 3)终端代理执行 :在 Terminal-Bench 1.0/2.0, SWE-bench Verified/Multilingual 上测试
论文提出新基准:Terminal Bench Pro
  • 针对现有终端基准(如 Terminal-Bench 2.0 仅 89 个任务)规模小、领域不平衡、易污染的问题,本文作者构建了 Terminal Bench Pro
  • Terminal Bench Pro 包含 400 个评估任务(200 公开 + 200 私有)
    • 均匀分布在 数据处理、游戏、调试、系统管理、科学计算、软件工程、机器学习和安全 八个领域
  • 所有任务由专家手工编写,经多轮审查,确保规范明确、测试覆盖率高、环境完全可复现
主要结果分析
  • 终端基准测试 :
    • 同规模对比 :ROME(30B 总参,3B 激活)在 SWE-bench Verified 上达到 57.40%,大幅超越同规模的 Qwen3-Coder-30B-A3B (46.33%) 等模型
    • 跨规模对比 :ROME 的性能甚至接近或超过了部分超大模型(如 DeepSeek V3.1, 671B 总参)
      • 在 Terminal-Bench 1.0 上,ROME (41.50%) 超过了 Qwen3-Coder-480B (37.92%)
    • 局限性 :所有模型在更难的 Terminal Bench Pro 上表现均有限(Private 集 ROME 为 21.50%)
  • 工具使用基准测试 :
    • ROME 平均分 49.46%,显著优于同规模模型,且与大型模型(如 DeepSeek V3.1 49.94%)持平,展现出极高的“规模效率”
  • 通用代理基准测试 :
    • ROME 在 ShopAgent 多轮交互任务上表现尤为突出(29.61%),大幅超越所有同规模模型,并超越了 GLM-4.6(22.12%)等超大模型,证明其长时程规划与自适应能力还不错
  • 真实世界案例研究 :
    • 在 100 个真实用户任务(如生成睡眠管理系统、太阳系建模)的盲测中,ROME 在 功能/交互实现、布局/样式复现、代码质量/鲁棒性、结构/语义正确性、创新/提示理解 五个维度上均优于对比模型,实现了“规模突破性”的代理能力

RollArt

  • RollArt: Disaggregated Multi-Task Agentic RL Training at Scale, 20251227-20260615, HKUST & Alibaba & Tonogyi Lab
  • 本文提出了 ROLLART,一个专为大规模、多任务、Agentic RL 训练设计的分布式系统
    • 该系统通过将 RL Pipeline 进行细粒度分解(Disaggregation),并映射到异构硬件上,显著提升了训练吞吐量,缩短了训练时间
    • 注:论文中包含大量实验,并在生产环境部署验证了其有效性和可扩展性

Bitter Lesson in Terminal Environments

  • 原始博客:苦涩的教训!ROLL团队分享:Agentic RL 训练中的实践经验
    • 英文版:The Bitter Lesson Behind Building Agentic RL in Terminal Environments
  • 这里总结博客中的核心观点,详情可阅读原始博客

RLVR vs Agentic RL

  • RLVR 与 Agentic RL 的本质区别 :
    • RLVR 本质上是单步骤的 bandit 问题,模型生成一次完整回答后获得奖励并更新参数
    • Agentic RL 是多步交互式 MDP 设定,模型需要采取行动、观察环境反馈,并在稀疏且延迟的奖励信号下优化长程轨迹
    • RLVR 训练的是“会回答”的模型,Agentic RL 训练的是“会行动”的模型
  • Agentic RL 不仅是算法问题 :
    • 需要环境、基础设施和算法的协同设计
    • 一般我们阅读的 Paper 提供算法,但不会告诉你在实践中如何处理环境崩溃、变长 episode 的 batch 处理、高效回放长轨迹等技术细节
  • Agentic RL 对基础设施提出更高要求 :
    • 包括端到端异步训练 Pipeline 、稳定的长时序信用分配机制、与真实环境的深度集成,以及支撑持续扩展的工程基础设施

Infra 相关

  • 两种环境管理模式 :
    • Roll-Managed Mode :由 ROLL 负责上下文管理与轨迹构建,训练侧灵活性高,可引入丰富的 prompt 模板和交互机制,但与真实 Agent 行为存在差距
    • CLI-Native Mode :上下文由 iFlow CLI 维护(类似 Claude Code 等 Harness),训练、评估与部署完全一致,最大程度减少行为不一致,但训练侧定制灵活性较低
    • 实践中在不同阶段切换使用两种模式
  • 异步训练 Pipeline :
    • Agentic RL 具有长尾延迟特性
    • 同步批量式 Pipeline 中长耗时任务会成为拖尾瓶颈
    • 解决方案包括:环境级异步 rollout、冗余并行环境、异步训练机制、Train–rollout 复用机制(时间分片动态划分 GPU 资源)
  • 保持环境 “干净” :
    • 初始环境状态直接影响学习信号,微小残留痕迹都可能污染训练
    • 需在 rollout 前清理中间文件,测试文件仅在最终评估阶段上传,与训练严格隔离
      • 否则模型会“偷懒”,直接读取甚至修改测试脚本

RL 训练实例

  • 实例来源 :大规模合成实例(按难度和标签采样,由外部供应方标注筛选)和专家编写实例(难度更高、构造更精细)
  • 伪阳性(False Positive)问题 :
    • 合成实例的测试用例不完整或本身存在问题,在 agentic RL 中尤为致命
      • 早期合成数据中 false positive 比例一度高达约 40%
    • 典型例子是测试脚本检查不充分,Agent 可通过捷径通过测试
    • 解决方案是引入 LLM-as-judge 验证模块 ,多 LLM 协同审查
  • Ground-Truth 与 No-Op 验证 :
    • 加入训练池前进行两项检查:
      • golden solution 无法通过全部测试则丢弃
      • 不执行任何有效操作也能通过测试则丢弃
  • 环境多样性与鲁棒性 :
    • 有意在初始环境中引入多样性(不同版本软件包、不同镜像源、不同配置细节),防止 Agent 过拟合于单一理想化环境
    • 还可有意扰动或部分破坏环境(如移除依赖、切换不可用镜像源),迫使模型学会检查、诊断与恢复
      • 这相当于 环境增强 ,帮助 Agent 处理不确定性

如何保证终端环境中 Agentic RL 的稳定性

  • Mask & Filter 策略 :

    • 终端环境不可避免出现瞬时网络故障、沙箱启动失败、工具调用超时等异常
    • 原则是:对训练有害或无法提供有效学习信号的样本都可以 mask 或 filter
      • 不可恢复的大规模错误(如环境启动失败)完全 mask 掉并用占位样本替换
      • 偶发可恢复错误(如工具超时)filter 掉,全局过滤比例控制在 ≤ 50%
        • 理解:原文没有明说超过 50% 样本的具体做法,但结合上下文和 RL 训练的一般实践,超过 50% 时的处理方式通常是以下几种之一:
          • 直接丢弃本轮所有数据,不进行训练更新(即 skip 这一轮 iteration),等待下一轮采集到更高质量的数据
          • 降低过滤阈值:不再严格执行 “凡是工具超时就过滤” 的标准,而是允许一部分原本会被过滤的异常样本保留下来参与训练(即使它们带有噪声),以保证 batch 中有足够的数据量
      • 还可引入 max-turn mask 等约束异常轨迹影响
        • 理解:超出最大轮次的轨迹直接 mask 掉,类似之前超出 max_len 的 Response 需要过滤一样
    • 具体代码实现(注:看着代码是整个 group 一起过滤的,但其实应该支持只过滤某个 Rollout 才好):
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      class GroupFilterTB:
      def __init__(self, config: AgenticConfig, env_manager_config: EnvManagerConfig, mode: str):
      self.config = config
      self.env_manager_config = env_manager_config
      self.mode = mode
      self.global_filter_stats = {"total": 0, "filtered": 0}

      def filter(self, group_id: int, episode_id: int, group: list[DataProto]):
      """
      Decide whether to filter out an entire group of rollouts.
      """

      self.global_filter_stats["total"] += 1

      # Step 1: Check whether this group contains any rollout
      # that explicitly requests to be dropped
      # (e.g., due to tool timeout, transient execution error)
      should_drop = False
      for data in group:
      if data.meta_info.get("drop_flag", False):
      should_drop = True
      break

      # If no rollout indicates a drop condition, keep the group
      if not should_drop:
      return False

      # Step 2: Compute the current global filter ratio
      # This guards against pathological cases where
      # too many groups are dropped and training stalls
      current_global_filter_ratio = (
      self.global_filter_stats["filtered"] / self.global_filter_stats["total"]
      if self.global_filter_stats["total"] > 0 else 0.0
      )

      # If we already filtered too much globally, stop filtering
      if current_global_filter_ratio >= 0.5:
      return False

      # Also prevent the *next* filter from exceeding the limit
      if (self.global_filter_stats["filtered"] + 1) / self.global_filter_stats["total"] > 0.5:
      return False

      # Step 3: Drop this group and update global stats
      self.global_filter_stats["filtered"] += 1
      return True
  • 保守起步——先从正样本轨迹学习 :

    • 早期数据质量差时,仅使用正样本轨迹训练明显更稳定
    • 采用课程式策略:
      • 早期仅用正样本更新策略(标准 RL 目标函数)
      • 后期拥有小规模高质量实例后再加入负轨迹训练
    • 特别注意 :positive-only RL 不是 RFT,前者仍是标准 RL 目标函数,具备更强泛化能力
      • 这里的 positive-only RL 更新还包括 masking、clipping、normalization 等稳定机制,从而可以自然整合样本过滤、细粒度奖励以及训推不一致控制等策略

Chunked MDP 与 IPA

  • IPA 方法可参考:(ROME & ALE & IPA)Let It Flow: Agentic Crafting on Rock and Roll, 20251231-20260312, ROCK & ROLL & IFLOW & DT Joint Team
  • 在 interaction chunk 层面建模 :
    • 多轮 agentic 任务中,大多数 token 不改变环境状态,轨迹包含多个决策节点
    • 将每次环境交互之间的连续片段(通常以工具调用结束)视为语义上的“动作单元”
  • Interaction-Perceptive Agentic Policy Optimization(IPA) :
    • 核心包括
      • 在 chunk 层级计算回报与重要性采样
      • 对整个 chunk 进行 masking(而非逐 token)
      • 引入 chunk 初始化重采样
      • imitation learning + RL 混合训练
  • IPA 的收益 :在长程轨迹上获得更稳定的梯度,提升模型可学习能力的上限

自适应地应用 RL 技巧

  • Agentic RL 的三个突出问题 :
    • 重尾分布与极端负回报 :少数失败轨迹异常长,产生极大幅度负回报,容易主导梯度
      • 理解:这里应该主要是指在 Loss 聚合时使用了类似 Token 等权的方式,则容易出现问题
        • 比如使用 dr.grpo(除以固定值),seq-mean-token-sum,或者 token-mean 等类似的 Loss 聚合策略时,就容易出现长轨迹主导梯度
    • 带正向结果的浅层策略模式 :
      • 模型可能并未真正理解任务,而是依赖重复试错、某些固定命令序列或某些捷径
      • outcome reward 只检查最终结果,这类浅层模式可能被强化,逐渐收缩策略空间并形成固化的模板
    • 噪声型失败 :
      • 失败失败往往多样且不明确,未必由模型本身引起,可能是环境随机性或系统干扰,负样本置信度通常低于正样本
      • 理解:负样本的置信度通常低于正样本
  • 从宏观角度看,agentic RL 面临的问题与 RLVR 在 outcome reward 下的问题类似:
    • 信用分配、负样本不可靠、训练不平衡
    • Terminal 环境中问题更严重 :
      • 时序更长;
      • 工具交互更离散
      • 改变环境的 token 占比极小;
      • 失败模式更多样
      • 负样本方差更大
    • 结论:Terminal 环境中训练信号的信噪比显著下降
  • agentic 设置下,训练信号的信噪比显著下降,使得信用分配与样本可靠性问题更加敏感
    • 我们通常会根据当前的主导因素采取不同缓解策略(核心目标是控制哪些轨迹、轨迹的哪些部分、以何种权重参与策略梯度更新),例如:
      • selective trajectory masking
      • selective token masking
      • trajectory-level reweighting
      • retry-loop penalties
      • other light behavior shaping rewards or penalties, …
    • 但是,似乎 没有通用解法 :不同数据条件下同一策略可能产生相反效果
      • 原博客提到:在两种不同的数据设置下,我们观察到了截然相反的现象:
        • 在一种情况下,移除标准差(std)会迅速导致训练崩溃
        • 而在另一种情况下,同样的操作却反而使训练更加稳定(这里主要是数据分布的差异导致)
      • 这个现象和其他论文的观察一致:(ROLL-Part1-RL4LLM-Reasoning, Lite PPO)Part I: Tricks or Traps? A Deep Dive into RL for LLM Reasoning, 20250811-20251027, ROLL

崩溃是常态,关键在于如何 Resume

  • 崩溃是常态 :大规模终端 RL 训练中崩溃是常态,需要建立这个心态
  • 崩溃的典型信号与处理 :
    • 当训练不稳定时优先检查:
      • 是否有少量极端轨迹主导更新(特征:异常长的失败轨迹、重尾分布的负回报):
        • 采用 masking、降低权重、收紧 clipping
      • 负样本是否整体占主导:
        • 降低负样本权重、过滤低置信度失败样本,或采用课程式训练策略
      • 模型是否在学习“坏模式”:
        • 引入行为惩罚、更多维的奖励设计等
  • 两条经验性原则 :
    • 优先针对极端轨迹定向处理(如 mask 掉超长负样本),如仍不稳定再全局重加权
    • RL 梯度比监督学习噪声更大,更小的学习率配合更强的约束往往更稳定

建议添加细粒度行为监控与惩罚

  • Reward hacking 更隐蔽 :智能体可通过看似合理的方式通过测试,常见模式包括:
    • 修改既定环境:智能体不是解决任务本身,而是直接修改初始环境设置
    • 工具过度使用:反复调用工具完成一些简单或琐碎的操作,本质上是在进行暴力重试
    • 滥用搜索:通过大量重复调用搜索引擎来弥补内部推理能力不足
    • 不安全或破坏性操作:执行高风险命令,例如删除所有文件或终止所有进程
    • 隐蔽的捷径:利用测试脚本或环境默认配置中的漏洞,在未真正解决任务的情况下通过测试
  • 两点启示 :
    • 测试用例质量与鲁棒性至关重要:
      • 薄弱或描述不充分的测试可能在无意中奖励错误行为
    • 并非所有实例都适合 RL 训练
      • 某些任务本身难以通过测试准确评估,反而更容易诱导模型寻找捷径或形成不良模式,而不是学习真正的解决方案
  • 建议增加 持续细粒度监控 ,比如在 Terminal 环境中:
    • 跟踪不同任务成功率趋势
    • 不同工具成功 / 失败率
    • 重复或循环工具调用模式
    • 不同工具使用频率
    • 不同命令使用频率
    • 一旦发现异常(如某工具调用激增、大量重试循环 或 频繁执行“kill process”类命令等等),立即回滚训练或移除问题实例
  • 这种持续、细粒度的监控与动态调整,也是保证长期 agentic RL 训练稳定且有效运行的关键(尤其是在防止隐蔽 reward hacking 行为方面)
  • 环境服务可观测性 :
    • 沙盒环境服务的可视化观测非常重要
    • 高峰阶段系统同时维持数千级并发会话,作者就曾多次因环境并发抖动导致训练异常,没有系统级观测很难定位

总结性观点

  • Agentic RL 是高度耦合的系统 :
    • Agentic RL本身就是细节很多,这本质上也是一套高度耦合的系统
    • 数据、环境、奖励、调度、优化……任何小环节出问题,都可能在几十个 step 后放大成一次 crash
    • 早期不可避免大量排查(看曲线、翻日志、做可视化、定位异常轨迹、回滚实验)
    • 但当关键环节理顺、可视化监控体系搭建起来后,训练会顺利很多
      • 监控完备时,即使出现异常模式也能快速定位,Crash 也可以快速溯源和剔除有问题的实例
  • 终端环境本质是 POMDP :
    • Agent 无法直接观察到完整环境状态(文件系统结构、软件版本、先前修改的配置、过去的失败尝试等)
    • 很多问题本质上可归结为两个老问题:
      • 部分可观测性
      • 长期信用分配
    • 这些问题并不新,但在 agentic 场景下会被进一步放大

未来展望

  • 挖掘更复杂的长时序任务与有效的 agentic 模式 :
    • 需要更贴近真实世界的长时序任务
    • 有些 agent 能力难以仅靠 RL 自发涌现
    • 注:互联网上有大量记录“人如何思考”的文本,但很少有系统性记录“人如何完成复杂任务”的完整执行过程
      • 因为这些任务往往跨平台、跨设备、跨时段展开,完整轨迹难以被收集
    • 主动挖掘并强化有效行为模式是值得思考的方向
  • 更真实的 Agent–Environment–Human 闭环优化 :
    • 真实应用中环境是动态演化的,用户可能随时补充信息、修改需求、纠正错误
    • 面对这种动态场景,Agent 不能只是一味执行指令,Agent 应学会主动获取信息、不确定时确认、收到反馈后更新判断
  • 更强大的基建与更开放的环境 :
    • Agentic RL 非常吃工程能力,需要高并发、低阻塞、可扩展的环境执行能力
      • 需要足够稳定且高度异步的训练框架来降低时间开销
      • 需要能够支撑模型持续 scaling 的工程基础
    • 当前环境高度依赖人工配置,限制探索空间
      • 例如固定的镜像源、权限边界控制、预安装软件,以及被限制在单机或 Docker 容器中的执行空间
    • 需要更高层次、更开放、更可演化的环境体系,结合依赖环境动态变化的奖励设计
  • 更细粒度的信用分配与奖励建模 :
    • Agentic RL 有更多可用的中间信号(工具执行成功与否、子任务完成情况等)
    • 但作者不认为依赖复杂的固定奖励规则(例如对工具失败固定施加 −0.5 惩罚)是可持续的解决方案

其他有趣发现

  • 并行函数调用 :
    • 观察发现 claude-sonnet-4.5 的并行度显著更高,更擅长在执行前识别关键不确定性,通过多个并行的“检查类调用”获取信息,包括但不限于:
      • pwd、ls、cat、grep 检查目录结构
      • python -V 和 pip list 识别 Python 环境
      • read_file 和 search 查找安装方法
    • 启示:在状态改变之前,显式鼓励一个“前置的、并行的信息收集阶段”可能是有益的
      • 注:作者提到,从经验上看,这种并行调用主要集中在检查类工具上,而不是直接修改环境的执行或编辑类操作
    • 理解:这里其实就是一种有益的模式发现
      • 对比一些 SOTA 模型/领域人工专家 与 Base 模型的差异,能够找到某些有益的 Pattern
  • 常见失败模式 :
    • 终端 agentic 任务中最常见的两类失败是
      • 无效循环 :在 Agent 已有明确失败信号时仍重复同一种策略,而不懂切换思路或重新审视假设,从而形成冗长而无效的交互链条
      • 超时 :模型缺乏对长时间运行命令执行时长的可靠感知,容易被默认超时机制误导,从而产生误判或反复重试
    • 除了两个关键的失败外,此外还有幻觉、不恰当工具选择、违反任务约束等

最终总结

  • Agentic RL 仍处于早期阶段 :
    • 文中提到的许多技术可能并非最佳实践或最终方案,主要是实际实验中的经验教训
  • 真正的进步来自协同设计 :
    • 未来真正的进步将来自于优化目标、环境、训练框架之间更加紧密的协同设计和整合
  • 个人理解:
    • 本博客写的非常细,其实里面写的很多东西是我们在实践中遇到并解决过的(包括 RLHF、 RLVR 和 Agentic RL 场景都会遇到的)

NLP——LLM对齐微调-OPSD

注:本文包含 AI 辅助创作

  • 参考链接:
    • 原始论文:(OPSD)Self-Distilled Reasoner: On-policy Self-Distillation for Large Language Models, 20260126 - 20260305, UCLA & Meta

Paper Summary

  • 整体总结:
    • 本文提出了新方法 OPSD(On-Policy Self-Distillation)
      • 无需外部 Teacher 模型 ,也无需奖励建模 ,仅利用模型自身的生成和评估能力进行自我提升
      • 显著提升样本效率 :比 GRPO 节省 8–12 倍生成 token(推测是奖励更密集导致)
    • 一些认知:
      • 成功的自蒸馏需要足够大的语言模型
      • 在 On-policy 采样阶段生成更多 Token 以及使用全词表 Logit 蒸馏能带来更好的学习效果
  • 问题提出:
    • 现有 RLVR 方法(如 GRPO)存在一些问题:
      • 样本效率低(每组需生成多个回复)
      • 奖励稀疏(仅 Sequence-level 反馈)
      • 梯度消失(当所有样本都对或错时)
      • 注:这里将 GRPO/PPO 等与 RLVR 强绑定描述非常奇怪,RLVR 更像是描述一类具有 Variable Reward 的 RL 信号建模方法,并不太适合描述为一个具体的 RL 训练方法
        • 本文中存在大量将 RLVR 和 GRPO 的方法等价来描述的错误措辞,需要小心辨别
    • 传统知识蒸馏:通过压缩 Teacher LLM 的知识来训练较小的 LLM
      • 依赖外部 Teacher 模型,存在分布偏移问题
    • On-policy 蒸馏:通过让 Student 模型采样自己的轨迹,同时 Teacher LLM 提供密集的 Token-level 监督,解决 Off-policy 蒸馏方法中训练和推理之间的分布不匹配问题
      • On-policy 蒸馏通常需要一个单独的、通常更大的 Teacher LLM,并且没有明确 利用推理数据集中的 ground-truth 的解决方案
  • Insight:一个足够强大的推理 LLM(Student)在看到正确答案后,可以理解并修正自己的错误
    • 可让 LLM 利用外部信息教导较弱的自身(即无法外部信息的版本)
  • On-policy Self-Distillation (OPSD) 核心思路:
    • 让同一个模型同时扮演 Teacher 和 Student ,通过不同的上下文条件生成不同的分布,并在 Student 自己的生成轨迹上进行逐 token 的分布匹配
    • 给定一个数据集 \(\mathcal{S} = \{(x_i, y_i^*)\}\),其中 \(x\) 是问题,\(y^*\) 是参考答案(包括推理过程)
      • Student 策略 :\(p_S(\cdot | x)\),仅基于问题生成答案
      • Teacher 策略 :\(p_T(\cdot | x, y^*)\),基于问题和参考答案生成答案
      • 两者共享模型参数 \(\theta\),仅输入不同
    • 基本思路:从 Student 策略采样, Student 生成一个回答,然后逐 token 分布匹配
  • OPSD 算法流程总结
    • Step 1:初始化模型参数 \(\theta\)
    • Step 2:对每个样本 \((x, y^*)\):
      • Student 生成回答 \(\hat{y} \sim p_S(\cdot | x)\)
      • 对每个token位置 \(n\):
        • 计算 Teacher 分布 \(p_T(\cdot | x, y^*, \hat{y}_{<n})\)
        • 计算 Student 分布 \(p_S(\cdot | x, \hat{y}_{<n})\)
        • 计算分布差异 \(D\)
      • 平均所有 token 的差异
    • Step 3:反向传播更新 Student 策略( Teacher 策略不更新,梯度不流入 Teacher )
      $$
      \mathcal{L}_{\mathrm{OPSD} }(\theta) = \mathbb{E}_{(x,y^*)\sim \mathcal{S} } \mathbb{E}_{\hat{y} \sim p_S(\cdot | x)} \left[ \frac{1}{|\hat{y}|} \sum_{n=1}^{|\hat{y}|} D\big(p_T | p_S\big) \right]
      $$
    • Step 4:重复直到收敛
  • SDPO vs OPSD(本文) 方法:
    • 除了 OPSD 强调信号来自已有数据集 \(\mathcal{D}\) 的参考答案外,OPSD 几乎和 SDPO 思路一致,都是 On-policy 蒸馏的
    • SDPO 强调外部评估环境信号
      • 实际上,在 SDPO 原始论文的表 2 中可以看到:如果存在正确 Rollout 的话,Teacher 的 Prompt 中可能会包含之前生成的正确 Rollout 作为 Hint
    • OPSD 强调参考答案 \(y^*\),类似 SFT 的样本(注意:OPSD 要求包含的参考答案 \(y^*\) 是原始数据集中必须存在的,不是 Student 也不是 Teacher 生成的)
      • 两者算法上几乎没有差异(两篇文章几乎同时发出 20260126 vs 20260128,算是并发的工作,OPSD 引用了 SDPO )
      • 总结来说:两者核心区别在于 hint 信号不同:
        • OPSD 更强调仅使用自身(能生成至少一次正确答案的自身)模型,数据集必须包含参考答案 \(y^*\)(类似 SFT 的样本)
        • SDPO 则强调外部评估信号的引入(数据集中只需要 Query,不需要参考答案 \(y^*\),但需要外部评估的反馈信号)

Introduction and Discussion

  • 已有各种方法的缺点:
    • RLVR(如 GRPO/PPO 等): 存在效率低下的问题,包括:
      • (1) 为每个 Prompt 采样一组 Response 在计算上代价高昂,并且可能在估计真实价值函数时引入高方差
        • 当所有样本都是正确或错误时,梯度信号会消失
      • (2) 奖励信号是稀疏的,并且统一应用于生成输出的所有 token,忽略了细粒度的 Token-level 反馈
    • 监督微调:
      • 存在曝光偏差 (训练的前缀往往是当前策略不会生成的)
      • 泛化能力较弱 (跟曝光偏差也有关系,数据本身受限于固定的数据)
    • 传统的知识蒸馏: 提供了来自 Teacher 模型的密集 Token-level 监督
      • 但依赖于 Off-policy 数据 (2015)
    • On-policy 蒸馏: 让 Student 模型采样自己的轨迹,Teacher 策略提供密集的 Token-level 监督
      • 通过结合 On-policy 训练的现实分布特性和密集反馈,展示了卓越的样本效率 (2024; 2025)
  • On-policy 蒸馏很好,但需要有一个一个独立与于 Student 的,比 Student 更好的 Teacher 模型来监督 Student
    • 理解:On-policy 蒸馏对 Teacher 模型的要求很高,必须要求 Teacher 模型比 On-policy 好许多才行
  • 研究问题提出:一个模型能否通过自蒸馏有效地充当自己的 Teacher ?
    • 受到人类学习的启发:在错误地解决一个问题后,Student 可以检查正确的解决方案,解释其步骤,并找出自己推理失败的地方
    • 先前研究表明,对于 LLM 来说,评估通常比生成更容易 (2024; 1996)
    • 本文作者假设,解释(对一个给定正确答案进行说明)同样比生成更容易
      • 吐槽:这么随意的吗?
    • 本文将 Teacher 和 Student 策略从一个单一的 LLM 中实例化
      • Teacher 策略被提供了 Privileged 信息 \(y^*\)
        • 例如 ground-truth 答案或参考思维链
        • Teacher 策略 \(p_T(\cdot |x,y^*)\) 同时基于问题和 Privileged 答案进行条件设定
      • Student 策略仅基于问题 \(x\) 进行条件设定
        • Student 策略 \(p_S(\cdot |x)\) 仅观察问题
    • 通过仅从 Student 策略采样轨迹 \(\hat{y}\) 来保留 On-policy 训练范式
      • 然后 Student 策略从 Privileged Teacher 策略那里接收密集的 Token-level 监督
  • 本文提出 On-policy Self-Distillation (OPSD) 框架
    • 其中单个模型同时扮演 Teacher 和 Student 的角色
    • Student 采样其自己的轨迹 \(\hat{y} \sim p_S(\cdot |x)\)
    • 计算 Student 和 Teacher 分布之间的每个 token 的散度,并将其最小化于 Student 自己的 Rollout 之上
    • 这个公式:
      • (i) 使用了 On-policy 监督( Student 自己的轨迹)
      • (ii) 提供了密集的每个 token 反馈
      • (iii) 利用了 ground-truth 解决方案 \(y^*\)
      • (iv) 不需要单独的 Teacher 模型
    • 学习过程由损失函数描述
      $$\mathcal{L}_{\text{OPSD} }(\theta) = \mathbb{E}_{(x,y^*)\sim \mathcal{S} }\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}\sum_{n = 1}^{|\hat{y}|}\ D\Big(p_T(\cdot |x,y^*,\hat{y}_{< n})\Big|\Big| p_S(\cdot |x,\hat{y}_{< n})\Big) \tag {1}$$

Background

Knowledge Distillation for Autoregressive Large Language Models

  • 知识蒸馏通过训练 Student 模型模仿 Teacher 模型的行为,将知识从较大的 Teacher 模型转移到较小的 Student 模型 (2015;2016;2019)
    • Teacher 模型在类别上的软概率分布包含了比硬标签更丰富的信息,因为 软概率分布 揭示了 Teacher 模型学习到的类别之间的相似性
    • 对于自回归语言模型,给定一个数据集
      $$ \mathcal{S} = \{(x,y^*)\}$$
      • \(x\) 表示输入
      • \(y^*\) 是对应的参考输出
      • 注意:这里 \( \mathcal{S}\) 跟后续的脚标 \(S\) 容易引起混淆,注意数据集是花体
    • Teacher \(p_T\) 和 Student \(p_S\) 都定义了词表 \(\mathcal{V}\) 上的 Token-level 分布
  • 传统的监督蒸馏最小化 Teacher 和 Student 分布之间的散度 \(D\),并在固定数据集上取平均:
    $$\mathcal{L}_{\text{Supervised Distillation} }(\theta) = \mathbb{E}_{(x,y)\sim \mathcal{S} }[D(p_T| p_S)(y|x)] \tag {2}$$
    • 其中 \(D(p_T| p_S)(y|x)\) 衡量每个 token 的差异:
      $$ D(p_T| p_S)(y|x) = \frac{1}{|y|}\sum_{n = 1}^{|y|}D(p_T(\cdot |y_{< n},x) || p_S(\cdot |y_{< n},x)) $$
    • 但这种 Off-policy 方法存在分布不匹配的问题:
      • Student 在自回归生成过程中遇到的部分序列 \(y_{< n}\) 与在固定数据集上训练时看到的序列不同,导致错误累积
  • On-policy 蒸馏(OPD) (2024;2025;) 使用 Student 采样序列 \(\hat{y} \sim p_S(\cdot |x)\)
    • 并从 Teacher 那里获得密集的 Token-level 反馈:
      $$\mathcal{L}_{\text{On-Policy Distillation} }(\theta) = \mathbb{E}_{x\sim \mathcal{S} }[\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}[D(p_T| p_S)(\hat{y} |x)]] \tag {3}$$
      • OPD 将蒸馏与模仿学习联系起来
      • OPD 中,Student 在 Student 自身的输出上学习 Teacher 的信号来迭代改进
        • 这结合了 RL 的 On-policy 相关性和监督学习的密集奖励信号
      • OPD 减轻了曝光偏差,同时保持了计算效率

RLVR:Reinforcement Learning with Verifiable Rewards

  • RLVR 是 LLM 后训练的一种流行方法,特别是在数学和编程等结果易于验证的任务上
    • RLVR 一般使用 PPO 和 GRPO 等算法
  • GRPO 通过为每个问题 \(x\) 从当前策略 \(\pi_{\theta}\) 采样一组 \(G\) 个 Response \(\{o_1,o_2,\ldots ,o_G\}\) 来进行训练
    • 每个 Response \(o_i\) 收到一个表示正确性的二进制奖励 \(r_i\in \{0,1\}\)
    • 该方法使用一个组归一化的奖励为 Response \(o_i\) 内的所有 token \(k = 1,\ldots ,|o_i|\) 分配优势:
      $$A_{i} = \frac{r_{i} - \text{mean}(\{r_{j}\}_{j = 1}^{G})}{\text{std}(\{r_{j}\}_{j = 1}^{G})} \tag {4}$$
      • 这个公式可以通过价值函数的角度来理解:
        • \(\text{mean}(\{r_j\}_{j = 1}^G)\) 作为价值函数 \(V(x)\) 的 \(G\) 样本蒙特卡洛估计
        • 稀疏的二进制奖励 \(r_i\) 代表(未折扣的)状态-动作价值 \(Q(x,o_i)\)
      • 由于奖励信号仅在 Sequence-level 提供,一个 Response 内的所有 token 共享相同的优势
    • GRPO 目标函数包含一个裁剪的替代损失以缓和策略更新,以及一个反向 KL 惩罚项以防止过度偏离参考策略:
      $$\begin{align}
      \mathcal{L}_{\text{GRPO} }(\theta) = \mathbb{E}_{x \sim \mathcal{S}, \{o_i\}_{i=1}^G \sim \pi_{\theta}(\cdot|x)} \left[\frac{1}{G}\sum_{i = 1}^{G}\frac{1}{|o_i|}\sum_{n = 1}^{|o_i|} \min (\rho_i^n A_i,\text{clip}(\rho_i^n,1 - \epsilon ,1 + \epsilon)A_i) -\beta D_{\text{KL} }[\pi_{\theta}(\cdot |x)||\pi_{\text{ref} }(\cdot |x)]\right] \end{align} \tag {5}$$
      • \(\rho_i^n = \frac{\pi_{\theta}(o_i^n|x,o_i^{< n})}{\pi_{\theta_{\text{old} } }(o_i^n|x,o_i^{< n})}\) 是重要性比率
        • 其中的 \(\pi_{\theta_{\text{old} } }\) 是本轮更新前的策略
      • \(\epsilon\) 控制裁剪范围
  • RLVR 方法面临两个关键限制:
    • (1) 奖励信号稀疏,仅提供 Sequence-level 反馈,而不是关于错误发生在哪里的 Token-level 指导
    • (2) 当所有采样的 Response 收到相同的奖励(全部正确或全部错误)时,优势变为零
      • 有采样成本,但无法进行任何策略更新
  • 问题:作者这里将 GRPO/PPO 等与 RLVR 强绑定描述非常奇怪,RLVR 更像是描述一类具有 Variable Reward 的 RL 信号建模方法,并不太适合描述为一个具体的 RL 训练方法

Methods

Learning from Verifiable Reasoning Dataset

  • 考虑一个问题-解决方案对的数据集
    $$ \mathcal{S} = \{(x_i,y_i^*)\}_{i = 1}^N$$
    • \(x_i\) 表示一个问题
    • \(y_i^*\) 是对应的参考解决方案(可能包含思维链推理)
    • 为简洁起见,后续本文省略样本索引 \(i\),并使用 \((x,y^*)\) 表示数据集中的一个通用样本
  • 可以通过不同方式利用这个数据集的学习信号:
    • SFT: 在该数据集 \(\mathcal{S}\) 上进行标准的 SFT 可以看作是一种使用专家轨迹的 Off-policy 蒸馏/模仿学习
      • 但 SFT 存在训练和推理之间的分布不匹配问题
    • RLVR: 基于 RLVR 也可以
      • 比如 GRPO 通过在 On-policy 样本上进行优化并通过将生成答案与 \(y^*\) 比较来分配二进制奖励来解决此问题
      • 但 RLVR 计算代价高昂,并且奖励信号稀疏,无论错误发生在哪里,都为所有 token 提供相同的反馈
        • 理解:这里的表述可以是对的,也可以是错的
          • “对的” 理解方式:RLVR 中的 Reward 反馈确实是 Sequence-level 的
            • 虽然 PPO 的 Advantage 是 Token-level 的,但是反馈也只是 Sequence-level 的,只是加了 KL 散度建模
          • “错的” 理解方式:若将 PPO 每一步的 KL 散度理解为反馈,那么这里的所谓 RLVR 方法就是错的
    • PRM 添加 Token-level 信号: 可以训练一个 PRM 在 RL 期间提供密集的 Token-level 反馈
      • 但获取用于 PRM 训练的标签非常昂贵且难以扩展 (2023;2025)
    • On-policy Distillation 方法 (2024;2025) 通过训练 Student 自身的样本来解决分布偏移问题
      • 但需要一个单独的、通常更大的 Teacher 模型来提供监督
  • 本文作者寻求一种密集的、on-policy 的、不需要外部 Teacher 或奖励模型的训练信号
    • 这引出了本文的 On-policy Self-Distillation 方法
  • 表 1 中总结了这些方法的差异

On-Policy Self-Distillation

Motivation: Learning by understanding solutions,通过理解解决方案来学习
  • 本文提出了一个受 Student 学习方式启发的不同视角:
    • 当遇到难题时,与其进行长时间的试错,不如让 Student 可以检查解决方案,理解推理过程,并内化该方法
    • 如果一个模型能够访问正确答案或推理过程 \(y^{*}\) 并且足够强大,它可以合理解释推理步骤并自我教导
      • 这类似于 Student 复习一个解决方案并回溯其有效的原因
    • 利用 ground-truth 解决方案 \(y^{*}\) 作为训练期间的 Privileged 信息,使模型能够在不需要外部奖励模型或更大 Teacher 模型的情况下充当自己的 Teacher
Teacher and student policies
  • 通过改变条件上下文,从同一个语言模型 \(p_{\theta}\) 实例化两个条件分布
  • Teacher 策略基于 Privileged 信息,即问题 \(x\) 和参考解决方案 \(y^{*}\) 进行条件设定:
    $$p_{T}(\cdot |x,y^{\star})\triangleq p_{\theta}(\cdot |x,y^{\star}) $$
  • Student 策略只观察问题陈述,与推理时的条件相匹配:
    $$p_{S}(\cdot |x)\triangleq p_{\theta}(\cdot |x) $$
  • Teacher 和 Student 策略共享相同的参数 \(\theta\),仅在条件上下文上有所不同
    • 为了鼓励 Teacher 自然地评估 Student 的生成结果,添加了一个 Prompt
      • 要求 Teacher 在看到参考解决方案后生成一个新的解决方案,如图 2 所示
      • 注:Teacher 不会生成 token,它只是通过前向传播隐式地进行合理化
On-policy sampling from the student
  • 给定一个问题 \(x\)
    • Student 生成一个 On-policy Response
      $$\hat{y} = (\hat{y}_1,\ldots ,\hat{y}_{|\hat{y}|})\sim p_S(\cdot |x) $$
    • 让 Teacher 和 Student 都评估这个 Student 生成的轨迹
    • 在每个位置 \(n\),基于相同的 Student 前缀诱导出下一个 token 的分布:
      $$p_{S}(y_{n}\mid x,\hat{y}_{< n}),\qquad p_{T}(y_{n}\mid x,y^{\star},\hat{y}_{< n}) $$
      • 其中 \(\hat{y}_{< n} \triangleq (\hat{y}_{1}, \ldots , \hat{y}_{n - 1})\)
Training objective: Full-vocabulary logit distillation
  • 本文实例化了一个全词表散度目标,该目标在每个位置上匹配 Teacher 和 Student 的下一个 token 分布
  • 给定一个 Student 生成的序列 \(\hat{y}\),定义轨迹平均的、按 token 计算的散度为
    $$D(p_{T}| p_{S})(\hat{y}\mid x)\triangleq \frac{1}{|\hat{y}|}\sum_{n = 1}^{|\hat{y}|}D\bigg (p_{T}(\cdot \mid x,y^{\star},\hat{y}_{< n})| p_{S}(\cdot \mid x,\hat{y}_{< n})\bigg) \tag {6}$$
    • \(p_S(\cdot \mid x,\hat{y}_{< n})\) 和 \(p_T(\cdot \mid x,y^*,\hat{y}_{< n})\) 表示下一个 token \(y_{n}\in \mathcal{V}\) 上的分布
  • 这里,\(D\) 可以是任何分布散度度量(Forward/Reverse KL 或者 Jensen-Shannon Divergence (JSD) 等),例如广义 Jensen-Shannon 散度 \(\text{JSD}_{\beta}\),对于权重 \(\beta \in [0,1]\) 定义为:
    $$\text{JSD}_{\beta}(p_{T}| p_{S}) = \beta D_{KL}(p_{T}| m) + (1 - \beta)D_{KL}(p_{S}| m) \tag {7}$$
    • 其中 \(m = \beta p_{T} + (1 - \beta)p_{S}\) 是插值混合分布
    • 这种全词表公式提供了密集的、按 token 计算的反馈:
      • 由 \(y^*\) 提供信息的 Teacher 将 Student 暴露在合理下一个 token 的整个分布中,并引导它走向能得出正确答案的推理路径
  • 本人最小化 On-policy Student 样本上的 Teacher 和 Student 之间的期望散度:
    $$\mathcal{L}(\theta) = \mathbb{E}_{(x,y^{\star})\sim \mathcal{S} }\left[\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}\left[D(p_T| p_S)(\hat{y}\mid x)\right]\right] \tag {8}$$
  • 梯度仅通过 Student 策略 \(p_S\) 反向传播,而 Teacher \(p_T\) 作为一个固定的、基于 Privileged 信息 \((x,y^*)\) 的全分布目标
Per-Token Pointwise Divergence Clipping
  • 本文实验观察到 Token-level 散度在词表条目上高度倾斜:
    • 一小部分风格化 Token 的散度远高于具有数学意义的 Token(见表 5)
    • 这种不平衡导致训练信号被风格化模式所主导
  • 为了解决这个问题,本文对词表级别的散度贡献应用逐点裁剪
    • 令 \(D_f(p_T | p_S)\) 表示一个 \(f\)-散度
    • 在每个 Token 位置 \(n\) 和词表条目 \(v\) 上,定义:
      $$
      \ell^{(f)}_{n,v} = p_T(v \mid \cdot) f\left(\frac{p_S(v \mid \cdot)}{p_T(v \mid \cdot)}\right)
      $$
  • 计算裁剪后的散度:
    $$
    D^{(f)}_{\text{clip} }(p_T | p_S) = \frac{1}{|\hat{y}|} \sum_{n=1}^{|\hat{y}|} \sum_{v \in \mathcal{V} } \min(\ell^{(f)}_{n,v}, \tau)
    $$
Alternative objective: Sampled-token distillation through policy gradient
  • 本文 Follow 最近的 On-policy 蒸馏方法 (2025),构建了一个 Sample-token 奖励信号(关于采样动作的反向 KL 信号),并使用策略梯度进行优化
  • 对于一个采样序列 \(\hat{y}\) 中的每个位置 \(n\),定义优势项
    $$ A_{n}(x,\hat{y}) = \log p_{T}(\hat{y}_{n}\mid x,y^{\star},\hat{y}_{< n}) - \log p_{S}(\hat{y}_{n}\mid x,\hat{y}_{< n})$$
  • 并优化策略梯度风格的目标函数
    $$
    \begin{align}
    \mathcal{L}(\theta) = -\mathbb{E}_{(x,y^{\star})\sim \mathcal{S} }\left[\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}\left[\frac{1}{|\hat{y}|}\sum_{n = 1}^{|\hat{y}|}A_n(x,\hat{y}) \cdot \log p_S(\hat{y}_n\mid x,\hat{y}_{< n})\right]\right]
    \end{align}
    \tag {9}
    $$
    • \(A_{n}(x,\hat{y})\) 被视为关于 \(\theta\) 的常数(即,梯度不会通过优势项流动),因此梯度采用通常的策略梯度形式 \(A_{n}\nabla_{\theta}\log p_{S}\)
    • 与全词表散度目标相比,这个 On-policy 塑形目标仅对采样的 token 进行操作,利用 Teacher 的 log-probabilities 提供密集的、轨迹级的塑形信号,而无需在每一步显式匹配完整分布
OPSD as dense-reward policy gradient and comparison to STaR,OPSD 作为密集奖励策略梯度以及与 STaR 的比较
  • 等式 (9) 中的目标可以看作是具有密集、 Token-level 奖励的策略梯度
  • 在附录 C 部分,本文对此进行了形式化,并与 STaR (2022) 进行了对比
    • STaR:
      • 使用相同的模型生成推理轨迹,然后进行拒绝采样,随后对正确的轨迹进行 SFT
      • 这个过程可以看作是具有 Sequence-level 二进制奖励的策略梯度,该奖励为所有 token 分配相同的信用,并在样本不正确时消失
    • OPSD:
      • 无论最终答案正确与否,OPSD 在每个 token 位置都提供反馈

Experiments

  • 本文开展了全面的实验,旨在解答以下研究问题:
    • (1) OPSD在推理性能和样本效率方面与SFT、GRPO相比表现如何?(§4.2)
    • (2) OPSD中的逐 Token 点态KL裁剪(per-Token pointwise KL clipping)如何帮助稳定训练?(§4.3.3)
    • (3) 生成风格、生成长度对模型性能有何影响?(§4.3.4)
    • (4) 全词表logit蒸馏(full-vocabulary logit distillation)相比采样 Token 策略梯度(sampled-Token policy gradient)是否具备优势?(§4.3.5)

Experimental Setup

Models and datasets
  • 本文基于 Qwen3 模型系列的三个参数量规模开展实验:Qwen3-1.7B、Qwen3-4B 和 Qwen3-8B
    • 注:文中强调这里使用的是 instruct 微调版本,但实际上 Qwen3-8B 是没有 Thinking Mode 和 Non-Thinking Mode 在一起的
    • 2507 出的 Qwen-4B 是有 Thinking 版本和 Instruct 版本的
  • 训练数据:
    • 本文会采用 OpenThoughts 数据集 (2025) 中的数学推理子集,抽取 30K 个包含思维链推理的问题-解决方案对
  • Benchmarks
    • 在 AIME 2024、AIME 2025 和 HMMT 2025
Baselines
  • 在相同数据集上与两种方法进行对比:
    • (1) SFT,即基于专家轨迹的标准有监督微调,可视为由生成推理轨迹的更强大LLM执行的离策略蒸馏
    • (2) GRPO(2024),即结合基于真实答案验证的二值结果奖励的分组相对策略优化
      • 最大生成长度设置为16k
Implementation details
  • 将教师策略固定为初始策略,而非当前更新的学习策略
    • 因为实验发现这一设置有助于稳定训练 ,且能隐式起到正则化作用,防止模型过度偏离初始策略 (这个理解不错)
    • 实验中采用全词表 logit 蒸馏的方式
  • 所有实验均在 A100 或 H100 GPU 上完成,并使用 LoRA 技术
    • 注意:这里使用的是 LoRA
  • 更多实验细节见附录B

Main Results

  • 表 2:Qwen3 模型在数学推理基准数据集上的性能对比
    • 按照 Qwen3 技术博客推荐的采样配置(温度值 1.0,最大生成长度 38k)报告 Avg@12 指标;完整细节见 表 8
    • 对于 OPSD,每 20 步评估一次模型检查点,直至 100 步,并报告最优分数
    • 对于 GRPO,报告 500 步训练内的峰值性能(实验发现部分任务中 GRPO 的性能会因后期的熵坍缩出现下降)
    • 对于 SFT,其训练样本量与 OPSD 保持一致
      • SFT 的性能退化源于在简洁的推理解决方案上进行微调,导致模型测试阶段的生成长度缩短
      • OPSD 则通过合理化(Rationalization)将这些解决方案转化为稠密的学习信号
  • 表 2 报告了在数学推理基准数据集上的实验结果
    • 在所有模型规模下,OPSD 始终优于 SFT,且相比基础模型均有性能提升
    • 在所有实验设置中 OPSD 均达到或超越 GRPO 的表现
  • 效率方面:
    • OPSD 仅对每个问题进行一次 rollout 即可实现上述性能提升
      • 在 100 步内收敛
      • 每个问题仅需采样 1024 个 Token
      • 理解:传统的 RL 中不能这样做(这是 OPD 专有的优点)
        • 在 OPD 场景中,不需要 Rollout 结束就可以有奖励(来源于 Teacher)
        • 在传统 RL 场景,一般是需要 Rollout 结束才能得到 Reward 反馈的
    • GRPO 对每个问题需要进行 8 次 Rollout
      • 每次生成 16k 个 Token
      • 后期还可能因熵坍缩出现性能退化
      • 在该 OpenThoughts 数据集上,采样组内的奖励标准差大多为 0,导致模型无法获得学习信号,造成采样预算的浪费
  • 其他观察,在相同数据集上训练时
    • SFT 在所有任务和模型规模下均出现一致的性能退化
    • 这一现象可归因于真实标签解决方案的推理风格简洁,导致模型在测试阶段的生成长度缩短
  • 一些推测:
    • OPSD 的 Token 效率得益于教师分布提供的稠密 Token-level 监督
    • 同时作者推测 :前序 Token 可能对有效蒸馏的贡献更大(因为这些 Token 可能代表了推理过程中更关键的分支节点)
  • 如图 3 所示
    • 在 100 步的训练范围内,OPSD 相比 GRPO 实现了更高的 Token 学习效率
    • 在 100 步训练内,当采样组内的结果奖励保持一致时,GRPO 的性能陷入停滞,学习信号减少,最终导致梯度为 0
    • 这些结果表明,OPSD 能比 GRPO 和 SFT 更高效地从相同的推理数据集中提取学习信号,同时大幅缩短训练时间
  • 图 3. OPSD 的 Token 效率
    • 在相同的有效训练批次大小下比较了 Qwen3-4B 上的 OPSD 和 GRPO,报告了平均 \(@16\) 性能随梯度更新步数和总生成 Token 数的变化
    • 两种方法在每次更新的采样生成数量方面具有相同的有效批次大小,但在生成长度上有所不同:
      • OPSD 的每个生成上限为 1024 个 Token,而 GRPO 为 16384 个 Token
    • OPSD 以明显更少的生成 Token 数量达到了与 GRPO 相当的性能,从而降低了采样成本和训练时间
    • 在此实验中,OPSD 的 Token 效率比 GRPO 高 \(8 - 12 \times\)
    • 实验细节见第 B 节

Ablation Studies & Discussions

  • 本节开展了大量消融实验,研究 OPSD 中关键的设计选择,包括:
    • (1) 散度目标函数
    • (2) 学生和教师的生成风格(如思维模式开启/关闭)
    • (3) 逐 Token KL 裁剪的效果;
    • (4) 学生生成长度的影响
    • (5) 全词表 logit 蒸馏与采样 Token 蒸馏的对比
Effect of Divergence Objective
  • OPSD 中一个关键的设计选择是散度函数的选择
    • 即用于实现教师与学生之间 Per-Token 分布匹配的散度函数
  • 本文在 AIME25 数据集上基于 Qwen3-1.7B 模型,对比了前向 KL 散度、反向 KL 散度和 JSD 散度的表现,结果见表 3
    • 所有目标函数均在相同的点态裁剪方案下评估以保证训练稳定性
    • 前向 KL 散度始终能带来最显著的性能提升,将模型在第 50 步的性能从 36.7 提升至 43.9,且在第 100 步仍高于基线模型
    • 反向 KL 散度和 JSD 散度仅带来有限的提升,甚至产生负面效果
    • 注:在后续所有实验中,作者均采用前向 KL 散度
Effect of Generation Styles And Per-Token KL Clipping,生成风格与逐 Token KL 裁剪的影响
  • OPSD 中另一项关键设计选择是学生和教师模型的生成风格,这一选择决定了学生的学习对象,以及教师提供的监督风格
  • Qwen3模型支持两种生成模式:
    • 思维模式开启(TM-on),模型会生成自反思的思维链 Token
    • 思维模式关闭(TM-off),模型会直接生成响应结果
  • 为确定哪种组合能产生最有效的学习信号,本文分析了四种学生/教师模式组合下的前向 KL 散度 \(KL(p_T | p_S)\),并将 Token 分为三类:
    • 数学类(数字、运算符和数学关键词)
    • 风格类(推理连接词)
    • 其他类
  • 表 5 报告了每个类别内的平均逐 Token KL 散度
  • 在所有模型规模下,思维模式关闭的学生与思维模式开启的教师组合,在数学类 Token 上的 KL 散度值最大,这表明该组合能对数学相关 Token 提供更强的监督
    • 报告的 KL 散度值对应每个位置上词表的期望散度
    • 如表 5 所示,这一期望分布存在严重的偏斜,风格类 Token 贡献的散度值占比过高
    • 这一现象促使作者采用点态裁剪的方式,控制此类厚尾分布的贡献
    • 从实验结果来看,该配置能实现最优的下游任务性能
    • 本文最终采用 思维模式关闭的学生/思维模式开启的教师 配置(注:其实这种实现严格来说已经不是 Self Distillation 了)
关于 Prompt 格式的实现说明
  • 在本预印本初次发布后,发现 Student 模型的采样 Prompt 与 Teacher 模型的 Prompt 之间存在意外的格式不匹配:
    • 具体情况: Student Prompt 缺少 Qwen3 的聊天模板,而 Teacher Prompt 则遵循 Qwen3 的思维风格聊天模板
    • 因此 Student 模型的推理是在无模板风格下生成的,而 Teacher 模型的分布则是在包含思考标签的 Prompt 条件下生成的
    • 尽管本文的方法不要求 Student 和 Teacher 模型的 Prompt 模板必须匹配,但本文在此记录这一实现细节以确保透明度和可复现性
      • 理解:这个问题会导致 Teacher 的性能远超 Student 的效果
  • 本预印本中报告的实验结果对应于这种配置
    • Prompt 模板/指令可以被视为本文方法的一个设计选择:
      • Teacher 和 Student Prompt 格式都可以作为框架中可优化的组件
      • 可以通过诸如 GEPA 等 Prompt 优化技术来优化 Teacher Prompt 以塑造监督信号,同时可以改变 Student Prompt 来研究哪种生成模式能产生最有效的学习
Effect of Per-Token Pointwise Clipping
  • 如表 5 所示,风格类 Token 的 KL 散度可能高于数学相关 Token ,导致其主导训练信号
    • 本文通过逐 Token 点态裁剪的方式缓解这一问题
  • 图 4 展示了 Qwen3-1.7B 模型的实验结果,裁剪操作能稳定训练过程,防止性能退化
    • 这一点对于在百步内快速收敛的 OPSD 而言尤为重要
Effect of Generation Length
  • 由于 OPSD 的目标函数在 Token-level 运作(公式 6)
    • 每个样本的生成 Token 数量直接决定了学生可获得的监督信号量
    • 更长的序列能让学生获得更多的教师反馈,但同时也会增加计算成本,且可能引入噪声或无信息的后续内容
  • 为研究这一权衡关系,本文在 Qwen3-1.7B 模型上开展消融实验
    • 将基于策略采样的学生响应生成长度设置为 1024 和 4096 个 Token 两种情况,并采用全词表 logit 蒸馏
  • 如图 5 所示,增加生成长度并未在两个任务上带来一致的性能提升
    • 本文作者将这一现象归因于前序 Token 对学习的关键性:
      • 当学生的生成序列变长时,在足够长的学生前缀条件下,教师对后续 Token 的预测会变得越来越确定,因此对后续 Token 施加的惩罚也会减少
        • 注:(2025)的研究中也发现了这一现象

Learning Objective Comparison: Full Vocabulary Logits Distillation vs Sampled-Token Distillation

  • 公式 6 中的目标函数定义为教师与学生分布之间的 Per-Token 差异
    • 回顾 公式 6:
      $$D(p_{T}| p_{S})(\hat{y}\mid x)\triangleq \frac{1}{|\hat{y}|}\sum_{n = 1}^{|\hat{y}|}D\bigg (p_{T}(\cdot \mid x,y^{\star},\hat{y}_{< n})| p_{S}(\cdot \mid x,\hat{y}_{< n})\bigg) \tag {6}$$
  • 在实际实验中,OPSD 可通过两种方式实例化该目标函数:
    • (1) 全词表 logit 蒸馏(Fullvocabulary logit distillation) (2024):
      • 在每个 Token 位置,通过全 softmax 操作计算整个词表上的 \(D(p_T | p_S)\),得到两个策略之间合理的逐 Token f-散度
      • 这种变体直接匹配完整的 Token 分布
    • (2) 采样 Token 优势策略梯度目标(Sampled-token advantage policy-gradient objective) (2025):
      • 仅在学生实际采样的 Token \(\hat{y}_n\) 位置评估教师和学生的对数概率,并将反向 KL 项作为标量优势,融入策略梯度风格的损失函数中
      • 这种变体优化由教师对数概率塑造的 On-policy RL 目标,而非完整分布的散度
      • 理解:这里的 Sampled Token 就是指 Rollout 得到的 Token
  • 本文在 Qwen3-4B 模型上对比了这两种变体,蒸馏过程中的生成预算设置为 2048 个 Token ,结果如表 4 所示
    • 全词表散度目标相比采样 Token 目标能带来稳定的性能提升
      • 这表明让学生学习完整的教师分布,相比仅依赖逐 Token 的在线策略塑造,能获得更丰富的监督信息
    • 但全词表计算需要在每个位置存储词表规模的 logit,会导致峰值内存占用更高,这也体现了性能与效率之间的权衡
  • 表 4:
    • OPSD 中散度计算策略的消融实验(基于 Qwen3-4B 模型,蒸馏生成长度 2048)
    • 报告在 AIME25 和 HMMT25 数据集上的 pass@8 指标
    • 全分布目标(logit 蒸馏)优于采样 Token 目标

Related Work

LLM Self-Training

  • 本文的与一系列研究表明 LLM 可以通过生成和利用自身的监督信号来改进的研究相关联 (2020;2024b;2024;2023;2023;2024;2024)
  • 在理念上最接近的是上下文蒸馏 (2022),它使用相同的底层模型作为 Teacher 和 Student ,通过为 Teacher 提供 Privileged 上下文,然后对 Student 在无上下文情况下生成的输出进行 SFT
    • 这可以视为 Off-policy,其学习信号是一个离散的 Token 序列
  • 在推理领域,ReST (2023) 和 STaR (2022) 同样依赖于迭代的自训练循环
    • 基于 Prompt 或答案生成推理过程,通过奖励或真实答案进行筛选,然后在成功的轨迹上进行微调
    • 注:这也是硬蒸馏
  • Mitra & Ulukus (2025) 将其扩展到软蒸馏
    • 上下文编辑 (2025) 从 Student 模型进行 On-policy 采样,并展示了通过最小化散度可以将上下文诱导的知识内化,并在知识编辑场景中展示了这一点
  • OPSD 与这些方法的不同之处在于,本文在推理任务上对 Student 自己的 Rollout 执行 On-policy 软蒸馏:
    • Teacher 的监督是每个 Token 的分布匹配,而不是生成用于 SFT 的推理过程
    • OPSD 将推理改进视为学习一个由数据集的真实解答和模型自身推理能力共同诱导的条件分布
  • 其他:
    • SDPO (Hü2026) 探索了类似的算法,利用环境反馈作为 Privileged 信息,详情见 (SDPO)Reinforcement Learning via Self-Distillation, 20260128
      • SDPO 方法除了信号以外来自环境反馈外,几乎和本文思路一致,都是 On-policy 蒸馏的
      • 特别说明:SDPO 中的损失函数也是在整个词表上计算的
    • SDFT (2026) 探索了持续学习任务中的 On-policy 自蒸馏

On-Policy Distillation methods

  • On-Policy Distillation 方法直接在从其自身策略采样的轨迹上训练 Student 模型,而 Teacher 模型则通过 KL 散度 (2024;2024a;2024;2025;2026;2025) 提供每个 Token 的指导
    • 这些方法通过直接优化 Student 的访问分布来缓解分布偏移,但它们通常依赖于一个独立的、通常更大的 Teacher 模型
  • 本文探索 LLM 是否可以通过利用更 Privileged 答案信息并依靠其自身的推理能力来引导其较弱版本改进推理,从而实现自我教学
  • On-policy 训练范式也广泛用于机器人和深度强化学习中,例如 DAgger (2011),其中人类 Teacher 为 Student 策略访问的状态提供纠正性监督

Improving LLM Reasoning through SFT and RL

  • SFT 和 RL 是提升 LLM 推理能力的两种主要方法
  • 在高品质推理轨迹上进行 SFT 已展示出强大的性能 (2023;2024;2023;2025a;2025;2025;2023)
    • 但先前的工作表明 SFT 可能依赖于记忆而非稳健的泛化能力 (2025)
  • 直接优化基于结果的目标的 RL 可以表现出更好的泛化能力 (2025)
    • 较新的算法如 GRPO 通过从组级别奖励估计优势来实现可扩展的 RL,而不需要像 PPO 那样需要一个显式的 Critic
  • 在这一系列工作的基础上,越来越多的研究强调了 RLVR 在推理任务中的有效性 (2025;2025;2025;2025a;2025)

附录 A:Limitations and Future Directions

  • 由于计算限制,本文实验仅限于 8B 参数以下的模型
  • 虽然更大的模型从 OPSD 中受益更多(这与本文的假设(即自我合理化需要足够的模型容量)一致)
    • 但这一趋势是否会在 8B 参数以上的规模(例如 70B 或更大的前沿模型)中持续,仍然是一个悬而未决的问题
  • 有几个有前景的方向值得进一步研究
    • 第一,本文当前的框架没有明确利用生成答案的正确性验证
      • 整合这些信号可以提供超越分布匹配的额外学习目标
    • 第二,问题难度在自我蒸馏中起着至关重要的作用:
      • 如果推理问题超出了模型的理解阈值,那么即使可以访问真实解决方案, Teacher 策略也无法提供有意义的监督
      • 这表明,课程学习策略(随着模型改进而逐渐增加问题难度)可以提高训练效果
      • 探索能够将问题保持在模型能力前沿的自适应课程,是将 OPSD 扩展到更具挑战性的推理任务的一个重要方向

附录 B:Experimental Details

  • 表 5、4 和 6 中提供了 SFT、GRPO 和 OPSD 实验的训练和评估配置
  • 表 2 中的评估设置:
    • 对于每种方法(GRPO、OPSD 和 SFT),报告在训练过程中,每 100 步评估一次,直到 1500 步,在每个任务上获得的最高得分
  • 由于本文对所有基线一致地应用了相同的协议,考虑到任何固定评估点存在的内在方差,这仍然是不同算法之间的公平比较
    • 本文作者在图 3 中报告了所有三个基线的检查点平均准确率
    • 在图 3 中
      • OPSD 的运行生成长度为 1024,学习率为 \(2 \times 10^{-4}\)
      • 对于 OPSD,对于较短的生成长度(如 1024),使用 \(2 \times 10^{-4}\) 比使用 \(2 \times 10^{-5}\) 能获得更好的结果
      • Remind:传统的 RL 中不能这样做(这是 OPD 专有的优点)
        • 在 OPD 场景中,不需要 Rollout 结束就可以有奖励(来源于 Teacher),但是在传统 RL 场景,一般是需要 Rollout 结束才能得到 Reward 反馈的
  • 所有实验均使用 8 张 A100 或 8 张 H100 GPU 进行,并启用了梯度检查点和 Flash Attention 2 以提高内存效率
    • 本文为所有训练运行使用了 AdamW (2017) 优化器和 bfloat16 精度
    • 对于 OPSD,除非另有说明,作者使用了全词表 Logit 蒸馏
  • 表 6. GRPO 和 OPSD 的训练配置
  • 表 7. SFT 的训练配置
  • 表 6. 评估参数

附录 C:Token Category Definitions

  • 本文将 Token 分类为 Style Token 和 Match Token(提前预定义的关键词)
    • 这些关键词常用语分析 Per-token KL 散度(分别针对风格 Token 和数学知识 Token)
  • Style Tokens.

    maybe, perhaps, probably, possibly, let, okay, ok, alright, hmm, wait, because, since, so, thus, hence, therefore, but, however, although, though, yet, or, alternatively, instead, otherwise, actually, really, just, simply, basically, very, quite, pretty, rather, fairly, now, then, next, first, second, finally, try, see, check, note, recall, think, idea, strategy, approach, method, way, would, could, should, might, can, huge, large, big, small, tiny, interesting, tricky, complex, simple.

  • Math Tokens.

    exponential, exponent, power, powers, base, logarithm, logarithms, log, ln, compare, comparing, comparison, less, equal, larger, smaller, greater, factor, factors, prime, divisible, equation, expression, formula, inequality, rational, irrational, real, integer, coefficient, variable, constant, sum, product, difference, quotient, fraction, denominator, numerator, root, square, cube, nth, maximum, minimum, optimize, bound.


附录 D:Policy-Gradient Interpretation of OPSD and Comparison to STaR,OPSD 的策略梯度解释以及与 STaR 的比较

  • 方程 (9) 中的 OPSD 目标可以解释为一种带有密集、 Token-level 奖励信号的策略梯度更新
    • 回顾方程(9)策略梯度风格的目标函数
      $$
      \begin{align}
      \mathcal{L}(\theta) = -\mathbb{E}_{(x,y^{\star})\sim \mathcal{S} }\left[\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}\left[\frac{1}{|\hat{y}|}\sum_{n = 1}^{|\hat{y}|}A_n(x,\hat{y}) \cdot \log p_S(\hat{y}_n\mid x,\hat{y}_{< n})\right]\right]
      \end{align}
      \tag {9}
      $$
  • 本节将展示:
    • (1) OPSD 可以被视为一种密集奖励的策略梯度
    • (2) 本文将 OPSD 与 STaR 进行对比,证明 STaR 的学习信号是 Sequence-level ,而 OPSD 是 Token-level

D.1. STaR as Sequence-Level Policy-Gradient

  • STaR (2022) 可以被视为 RL 风格策略梯度目标的一种近似
    • 语言模型 \(p_{\theta}\) 在 rationale(基本原理/根本原因) \(r\) 和答案 \(y\) 上诱导出一个联合分布:
      $$
      p_{\theta}(r,y\mid x) = p_{\theta}(r\mid x)p_{\theta}(y\mid x,r),
      $$
      • 这里表示:模型在预测最终答案 \(y\) 之前,先采样一个潜在的 rationale \(r\)
    • 给定一个指示器奖励 \(R(y) = \mathbf{1}(y = y^{*})\),在整个数据集 \(\mathcal{S} = \{(x_i,y_i^*)\}_{i = 1}^N\) 上的期望回报为:
      $$
      J_{\text{STaR} }(\theta) = \sum_{i = 1}^{N}\mathbb{E}_{(r,y)\sim p_{\theta}(\cdot |x_i)}\big[\mathbf{1}(y = y_i^*)\big] \tag {10}
      $$
    • 应用对数导数技巧,得到策略梯度:
      $$
      \nabla_{\theta}J_{\text{STaR} }(\theta) = \sum_{i = 1}^{N}\mathbb{E}_{(r,y)\sim p_{\theta}(\cdot |x_i)}\Big[\mathbf{1}(y = y_i^*)\nabla_{\theta}\log p_{\theta}(r,y\mid x_i)\Big] \tag {11}
      $$
      • 注意,指示函数丢弃了所有未导致正确答案 \(y_i^*\) 的 sampled rationale 的梯度:
        • 这对应于 STaR 中的筛选步骤
  • 一个局限性是 STaR 的奖励是 Sequence-level :
    • 二元指示器 \(\mathbf{1}(y = y^*)\) 为轨迹中的所有 Token 提供相同的信号,不提供中间的 Credit Assignment
    • 当所有采样的轨迹都不正确时,学习信号就会消失

C.2. OPSD as Dense-Reward Policy Gradient

  • 方程 (9) 中的采样 Token 目标也可以被视为一种策略梯度方法,但具有 Token-level 奖励
    • 固定一个训练对 \((x,y^{\star})\),并让 Student 生成一个轨迹 \(\hat{y}\sim p_S(\cdot |x)\)
    • 在每个位置 \(n\),定义每个 Token 的奖励:
      $$
      r_{n}(x,\hat{y})\triangleq \log p_{T}(\hat{y}_{n}\mid x,y^{\star},\hat{y}_{< n}) - \log p_{S}(\hat{y}_{n}\mid x,\hat{y}_{< n}).
      $$
  • 这个奖励衡量了拥有 Privileged 信息的 Teacher 相对于 Student ,偏好采样 Token \(\hat{y}_n\) 的程度
  • 如正文所述,在计算梯度时,本文将 \(r_n\) (等同于 advantage \(A_{n}\))视为关于 \(\theta\) 的常数
    • 即,在奖励计算中阻止了通过 \(p_T\) 和 \(p_S\) 的梯度传播
    • 在这种处理下,方程 (9) 的梯度呈现标准的策略梯度形式:
      $$
      \nabla_{\theta}\mathcal{L}(\theta) = -\mathbb{E}_{(x,y^{\star})\sim \mathcal{S} }\left[\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}\left[\frac{1}{|\hat{y}|}\sum_{n = 1}^{|\hat{y}|}r_n(x,\hat{y})\nabla_{\theta}\log p_S(\hat{y}_n\mid x,\hat{y}_{< n})\right]\right],
      $$
  • 这对应于最大化 Student 在线 Rollout 上的期望 Per-Token 奖励:
    $$
    J_{OPSD}(\theta) = \mathbb{E}_{(x,y^{\star})\sim \mathcal{S} }\left[\mathbb{E}_{\hat{y}\sim p_S(\cdot |x)}\left[\frac{1}{|\hat{y}|}\sum_{n = 1}^{|\hat{y}|}r_n(x,\hat{y})\right]\right].
    $$
  • 这个奖励是密集的:
    • 它在每个 Token 位置都提供学习信号,无论最终答案是否正确
Comparison
  • STaR 和 OPSD 都可以被理解为策略梯度方法,但它们的奖励结构有根本的不同
    • STaR 使用一个 Sequence-level 指示器 \(\mathbf{1}(y = y^{\star})\),为所有 Token 分配相同的信号
      • 当所有采样的轨迹都不正确时,学习信号完全消失
    • OPSD 在每个位置都提供一个 Token-level 奖励 \(r_n\),即使在最终答案错误的情况下也能实现细粒度的 Credit Assignment

附录:关于 JSD 的补充说明

  • 假定使用 \(\mathrm{JSD}_{\beta=0.5}\),其原始定义为
    $$ JS(P|Q) = \frac{1}{2}KL(P|M) + \frac{1}{2}KL(Q|M) \quad \text{ where } M = \frac{P+Q}{2}$$
    • JSD 是对称的:\(JS(P||Q) = JS(Q||P)\)
    • JSD 是有界的:值域在 \([0, \ln2]\) 之间
      • 注意:相对而言,KL 散度的阈值是 \([0, +\infty]\),因为某个节点 Q 很小的时候,KL 可能会非常大,而 JSD 则不存在这个情况
1…181920…352
San Ye

San Ye

Stay Hungry. Stay Foolish.

704 posts
53 tags
© 2026 San Ye
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4