跳转至

OPD 重新审视失败模式与简单修复

📊 Level ⭐⭐⭐ | 8.4KB

摘要

这是对论文《Revisiting On-Policy Distillation: Empirical Failure Modes and Simple Fixes》(arXiv:2603.25562,代码 github.com/hhh675597/revisiting_opd)的解读(来源知乎,作者 storm),它不复述 OPD 入门知识,而是回答三件事:方法在优化什么、常见实现为什么不稳定、有没有代价不高但更稳的实现路径。核心结论:naive 的 sampled-token OPD 在长时程后训练里结构性地脆弱,而教师 top-K 支持集上的截断 reverse-KL 配合 top-p rollout 与 special-token masking 更稳。

核心要点

  • OPD 已是后训练默认选项:Thinking Machines Lab、Qwen3、MiMo-V2-Flash、GLM-5 的技术报告都呈现同一趋势——在 SFT 与 RL 之外,直接在学生自己生成的轨迹上施加教师监督。
  • 它优化什么:OPD 可看作带熵正则的有限时域 RL;sequence-level reverse-KL 的梯度等价于 causal return-to-go,而 token-level OPD 只保留当前步即时项、丢弃未来奖励耦合——因此有偏,却把最坏情况方差上界从四次增长降到二次。
  • 脆弱性的三重来源:单 token 奖励结构性失衡、学生前缀上教师信号失真(teacher-environment gap)、tokenizer/special-token 不一致扭曲单 token 比较。
  • 简单修复:teacher top-K 支持集上的截断 reverse-KL 替代单样本比较,加集内重归一化、top-p rollout、special-token masking。
  • 实测收益:单任务数学平均 36.4 → 41.5;多任务 ALFWorld 达 97.7、数学平均 44.0/41.7;gradient norm 与 teacher-student log-prob gap 更小。
  • 两层 gap:token-level 与 sequence-level 之间的 estimator gap,以及教师派生奖励与人类意图/环境成功之间的 objective gap。

深度分析

OPD 优化的是什么,处在后训练工具箱的哪个位置

OPD 的目标是对 prompt x 的 sequence-level reverse-KL,即学生分布对教师分布的方向性 KL,因此可视为带熵正则的有限时域 RL 问题;其梯度经自回归分解可改写成 causal return-to-go 形式。大模型训练里更常见的 token-level OPD 只保留每个位置的即时项,丢掉未来奖励耦合、相对 sequence-level 有偏,却把最坏情况方差上界从四次增长降到二次。两任务连续控制的简化实验也印证了代价:折扣因子从 0/0.25 升到 0.75/1.0 时,梯度方差可上升 2–3 个数量级并伴策略漂移。但要注意,这里的奖励只是对教师模型的局部对齐:匹配教师分布不等于对齐人类意图或环境成功,而长时程 agent 后训练的回复可达几十万 token,方差是否可控直接决定稳定性。

为什么 sampled-token OPD 在实践里不稳定

第一类是单 token 学习信号天然失衡:更新由被采样 token 的 log-ratio 驱动——只要学生给该 token 的概率高于教师,log-ratio 即为负,于是大多数 sampled token 都拿到负奖励(第一个 iteration 的师生概率散点即显示偏向惩罚学生自采 token)。学习因此过度依赖少数高杠杆正事件,对填充词、犹豫词这类局部可接受的续写异常敏感。

第二类发生在学生自己生成的前缀上:一旦轨迹走到对学生常见、对教师并不典型的前缀,教师分布虽仍很尖,校准却已失效——它会继续给重复循环、自我重置式推理、犹豫词堆砌的续写较高概率,形成"代理信号被钻空子"。教师分布越尖、师生差距越大,log-ratio 越易被放大。第三类是 tokenization 与 special-token 不一致:同一段文本被切成不同 token(学生 <、think、> 对教师 ),语义等价的 EOS(<|im_end|> 与 )也会概率错位,单 token 比较于是部分取决于 tokenizer 兼容性,而监督恰恰压在这一个 token 上。

论文记录的失败模式

信号层的失败是结构性的:多数 sampled token 被下压,训练依赖少数局部有利事件。代理层的失败是 token-level preference 与 trajectory-level quality 的系统性错位——第 80 个迭代上,teacher-student log-prob gap 越靠后越分散、极端值越多(变化在离散度而非均值),说明长轨迹上教师信号更不稳定。

数字上的痕迹同样清楚:只给采样基线加 special-token masking,单任务数学平均 36.4 → 40.7、ALFWorld 90.6 → 93.8。优化层面的病态更直接:关掉集内重归一化,policy entropy 飙升、训练在前约 30 步内塌到 0;支持集过小(k=4)明显不稳;去掉 top-p 约束也会不稳;基线还有更大的 gradient norm 与 length-clipping 比例。

简单修复:为什么它们有效

修复思路是把比较从单个 sampled token 搬到教师定义的局部支持集:在 teacher top-K 上计算截断 reverse-KL 期望,做的是局部区域内的分布级比较,计算量又远小于全词表 KL。其梯度只依赖集合内被教师支持的候选 token,集合外为零,正负调整因此分布在局部决策区域而非集中在单点;同样的做法也见于 verl 的 Megatron-OPD recipe。

三项实现细节决定成败。集内重归一化最关键:教师与学生的概率都要先在支持集上重新归一化(只在集合对应 logits 上再 softmax),否则截断与分布不匹配纠缠、训练明显不稳。top-p rollout sampling 把轨迹留在学生分布的高概率区域,减少教师已无信息量的罕见前缀。special-token masking 则是修补 tokenizer mismatch 的正交手段、最简单也最 model-agnostic。消融显示:单独限制到 teacher top-K 并不涨分(AIME24 avg@32 从 20.4 掉到 17.7),叠上 top-p 后升到 23.6;支持集足够大后对 k 不敏感,masking 对本方法影响很小(41.7 vs 41.5)。作者也保留不确定性:截断目标、training-inference mismatch 与机制假说性质,与教师的差距依然显著。

实践启示

  1. 不要把 sampled-token OPD 当默认实现:先看师生概率散点与 log-ratio 正负分布,若绝大多数 sampled token 都在被下压,信号就已结构性失衡。
  2. 把 KL 期望放到 teacher top-K 支持集上,务必做集内重归一化——关掉它 policy entropy 会飙升、训练几十步内塌掉。
  3. 在 rollout 侧加 top-p 约束,把轨迹留在学生高概率区域,避免把教师已无有效信号的分布外前缀喂进目标。
  4. 把 special-token masking 当作便宜的诊断手段:若基线仅因此显著提升(36.4 → 40.7),说明 tokenizer mismatch 正在扭曲比较,先修它再谈算法。
  5. 用优化统计量而非只看评测监控训练:gradient norm、policy entropy、length-clipping 比例,以及分段的 teacher-student log-prob gap。
  6. 区分 estimator gap 与 objective gap:略有偏差但稳定得多的局部目标,往往比更"直接"却易被钻空子的 sampled-token 信号更值得采用,但它仍只是对齐教师。

相关实体

→ 原文存档