OPD — 多教师 → 单学生的合一
为什么 V4 把 V3 的"混合 RL"整体替成 reverse-KL 蒸馏,"on-policy + reverse KL + 全词表"三件事的组合在数学上意味着什么,以及为什么"forward KL 的 mass-covering"会把多 teacher 拉成 mean of teachers、reverse KL 的 mode-seeking 反而让 student 在每道题上"自然找最强 teacher"。
OPD = On-Policy Distillation:学生 $\pi_\theta$ 自己 rollout 生成 trajectory,对 N 个 frozen 领域 teacher $\{\pi_{E_i}\}$ 求 reverse KL 加权和作为损失,最小化即"把所有 teacher 的高概率区域吸收过来"
一句话:把 V3 的"混合 RL"整体替成"反向 KL 蒸馏"。 RL 只学 reward 期望("做对了得多少分"),KL 蒸馏学整个分布("在每个状态下 teacher 的概率分布是什么形状")。 后者承载的信息量大得多 —— 一条 reward = 1 个标量,一条 logit 分布 = $|V|=128\text{K}$ 个数。OPD 的赌注:分布信息让蒸馏"无损",多 teacher 合并不再是 reward 加权而是分布选择。
- OPD(On-Policy Distillation)
- 本章主角。从学生自己的策略采样 trajectory $y \sim \pi_\theta(\cdot \mid x)$,然后在每个 token 位置算 student 与 N 个 teacher 的 KL 损失。"on-policy" 是关键修饰词 —— 区别于 off-policy(用 teacher trajectory 训学生)。
- KL Divergence(KL 散度)
- $D_{\text{KL}}(P \| Q) = \sum_x P(x) \log \frac{P(x)}{Q(x)}$。不对称:$D_{\text{KL}}(P\|Q) \ne D_{\text{KL}}(Q\|P)$。这种不对称性不是 bug 而是设计变量 —— 选 forward 还是 reverse 决定了学生学到的"行为模式"。
- Forward KL(mass-covering)
- $D_{\text{KL}}(\pi_E \| \pi_\theta) = \mathbb{E}_{y \sim \pi_E}[\log \pi_E - \log \pi_\theta]$。从 teacher 采样、以 teacher 为锚。性质:$\pi_E(y) > 0$ 但 $\pi_\theta(y) \to 0$ 时 loss → ∞ ⇒ 学生必须覆盖 teacher 所有概率质量,包括长尾。在多 teacher 场景下被迫"取并集",成为mean of teachers。
- Reverse KL(mode-seeking)
- $D_{\text{KL}}(\pi_\theta \| \pi_E) = \mathbb{E}_{y \sim \pi_\theta}[\log \pi_\theta - \log \pi_E]$。从学生自己采样、以学生为锚。性质:$\pi_\theta(y) > 0$ 但 $\pi_E(y) \to 0$ 时 loss → ∞ ⇒ 学生不能在 teacher 的低概率区域有概率,只能把概率集中到 teacher 的某个 mode。多 teacher 场景下学生学会"在每个 prompt 上选最强 teacher 的 mode",取交集而非并集。
- Mode-Seeking vs Mass-Covering(直觉对比)
- 双峰 teacher 分布(左峰右峰各占 50%)时:forward KL 的最优 student 是整个分布的均值(中间一个胖单峰,两个峰都覆盖但都不准);reverse KL 的最优 student 是选其中一个峰复刻(贴一个真峰,舍弃另一个)。直觉:forward 是"什么都要"、reverse 是"专精就行"。
- On-Policy(在策略上采样)
- 损失里的采样分布是 $\pi_\theta$ 自己。每个 step 生成时用当前最新 policy。对应 reverse KL 的天然搭档 —— $D_{\text{KL}}(\pi_\theta \| \pi_E)$ 的期望就是在 $\pi_\theta$ 上取的,on-policy 让蒙特卡洛估计无偏。
- Off-Policy 蒸馏(被否定的对象)
- 另一种做法:让 teacher 生成 trajectory $y \sim \pi_E$,学生用 supervised cross-entropy 拟合。问题:学生在自己永远不会生成的 trajectory 上被迫学拟合,分布严重偏移;只能学"模仿 teacher 表面",不能学"在自己出错时 teacher 怎么救"。
- Full-Vocabulary OPD(全词表蒸馏)
- 每个 token 位置上都拿到 teacher 的完整 logit 分布($|V| > 100\text{K}$),算精确 KL。对比 token-level 估计:后者只用 $\log(\pi_E(y_t)/\pi_\theta(y_t))$ 作 per-token advantage 塞进 RL framework,丢掉 99.99% 的分布信息。V4 选 full-vocab 是把工程难度上限拉满 —— Ch19 整章就是为了让这件事跑得起。
- Mixed RL(被替代的对象)
- V3 末段的训练范式:所有领域 reward 加权求和后跑混合 RL。问题:(1) reward 量纲不一致,被绝对值大的任务主导;(2) reward 只学期望、不学分布形状;(3) 多领域 reward 互相干扰、调参组合爆炸。OPD 替掉它的核心论断:"既然每个 specialist 已经是该领域最优 policy,直接学 specialist 的分布就够了"。
1. 为什么不再用混合 RL
V3 的最后一段训练把所有专家 SFT 数据放到一锅,配多种 reward(rule + RM)跑混合任务 RL。这条路在 V4 规模下出现三个症状:
- 方差爆炸:多领域 reward 量纲不一致(数学 0/1 vs 写作 0–10),加权和被绝对值大的任务主导,小信号被淹没;
- 分布偏移:reward 信号稀疏(一条 trajectory 只有最终一个数),long horizon 上学到的策略与单领域 specialist 差距明显;
- "分布形状"丢失:reward 只学"期望",learner 容易在 edge case 上塌缩到 mode 上某个尖峰 —— 答对了但失去多样性。
OPD 的回答是:"既然每个 specialist 已经是该领域的最优 policy,直接让 student 学 specialist 的分布就够了。" 用蒸馏代替再次 RL,把"reward 加权"换成"分布合并"。
- RL reward:1 个标量(最终 reward),承载 ~1 byte 信息;
- token-level KL:5000 × 1 个 ratio,承载 ~5KB 信息;
- full-vocab KL:5000 × 128K 个 logit,承载 ~5MB 信息(FP8 算);
2. OPD 损失:多教师 reverse KL 加权和
给定 N 个 frozen 领域 expert $\{\pi_{E_1}, \dots, \pi_{E_N}\}$ 和领域权重 $\{w_i\}$,学生 $\pi_\theta$ 的 OPD 损失为:
这条损失从内到外读:
- $D_{\text{KL}}(\pi_\theta \| \pi_{E_i})$:在当前 token 位置,学生分布与第 $i$ 个 teacher 分布的 reverse KL;
- $y \sim \pi_\theta$:trajectory 由学生自己采样 —— 这是 "on-policy" 的具体含义;
- $x \sim \mathcal{D}_i$:prompt 来自第 $i$ 个领域的数据集;
- $\sum_i w_i \cdots$:N 个领域的损失加权求和。
关键的隐藏性质:对一个具体 prompt $x$,最相关的 teacher 自然主导梯度。直觉:如果 $x$ 是数学题,数学 teacher $\pi_{E_{\text{math}}}$ 给 sensible 的 logit 分布、其它 teacher 给"乱答"的分布。reverse KL 的 mode-seeking 性质让学生选 sensible 那个分布的 mode,自动忽略乱答。这就是"按 prompt 选 teacher"的数学根源 —— 不需要显式路由,是 reverse KL 自带的属性。
3. 为什么必须 reverse KL:mode-seeking vs mass-covering
这是整章最核心的洞察。先看两种 KL 的解析最优:
关键不在"无限容量下都收敛到 $\pi_E$",而在容量受限(学生模型表达能力有限)时两者的近似行为:
- forward KL(mass-covering):$\pi_E(y) > 0$ 处 $\pi_\theta(y)$ 必须 $> 0$ 否则 loss = +∞。学生被迫覆盖 teacher 所有概率质量,即使是低概率长尾。容量受限时 → 分布"摊平",多 teacher 合并 → mean of teachers;
- reverse KL(mode-seeking):$\pi_\theta(y) > 0$ 处 $\pi_E(y)$ 必须 $> 0$ 否则 loss = +∞(反过来)。学生不能进入 teacher 的低概率区域,但允许放弃 teacher 的某些高概率区域。容量受限时 → 分布"聚焦",多 teacher 合并 → 在每个 prompt 上选一个 teacher 的 mode;
对 V4 这种"把 N 个领域 specialist 合并到一个 student"的目标,mode-seeking 是想要的。每个 prompt 上让最强 teacher 主导,舍弃弱 teacher 的"乱答"长尾,正是选择性吸收。
反之 forward KL 的 mass-covering 会强制让 student 在每个 prompt 上同时模仿 N 个 teacher 的分布,失败案例:数学 teacher 算出 $42$、写作 teacher 写故事,student 被迫两者都覆盖 → 输出"42 在故事里出现"的奇怪混合。
读图法:红色填充曲线是 teacher 的真实双峰分布(两个 mode 代表两个 teacher 的强项)。黄虚线是 forward KL 训出的最优单峰 student —— 胖且骑在两峰中间,两峰都覆盖但都不准(mass-covering)。绿实线是 reverse KL 的最优单峰 student —— 选其中一个峰精确复刻(mode-seeking)。
把"双峰间距"拉到 5σ 以上看:黄线变得越来越平、覆盖范围越来越宽(被迫覆盖两峰间的山谷);绿线始终贴在左峰上不动。这就是 V4 选 reverse KL 的根本原因 —— 多 teacher 间冲突越大,forward 越塌成无意义平均,reverse 越坚定地选最强 mode。
4. 为什么必须 on-policy
光选 reverse KL 还不够。损失里的期望 $\mathbb{E}_{y \sim \pi_\theta}[\cdots]$ 必须从学生自己当前的策略采样 —— 这就是 "on-policy"。如果用 teacher 采样(off-policy 蒸馏),会出两个问题:
- 分布偏移(distribution shift):teacher rollout 走的是 teacher 自己擅长的路径;学生在自己永远不会走的路径上被强迫学拟合,训完上线时学生根本到不了那些位置,蒸馏白做;
- 错误恢复(error recovery)丢失:on-policy 让学生从自己的错误位置出发,看 teacher 在那些位置上的分布是什么 —— "我犯错了,正确老师该怎么救"。off-policy 永远看不到学生的错误,等于训了个"模仿 teacher 顺利答题"的伪 student,遇到自己出错就抓瞎。
On-policy 要求每个 train step 都要先用当前最新 policy rollout 一批 trajectory,再算 KL 损失。这相当于"训练 + 推理交错",比纯监督学习贵得多。Ch19 的"WAL Rollout + Million-token RL"整节就是为了让 on-policy rollout 能在 1.6T 规模 + 1M context 下跑起来 —— 没有那一节,OPD 是 PPT。
5. 为什么要做"全词表",不退化到 token-level
一种工程偷懒做法是把 OPD 退化成 token-level RL:每个 token 位置只取学生与 teacher 的那一个 token 的 log 比值作为 advantage:
把它当 RL advantage 塞进 GRPO loop,省掉算全词表 logit 的麻烦。论文给出三条否定理由:
- 梯度方差极高:单 token 的 ratio 是 1 个噪声大的标量,长序列累乘后方差爆炸;
- 没真正利用 teacher 的分布信息:teacher 在 $y_t$ 上给的不仅是"$y_t$ 的概率",更重要的是"除 $y_t$ 之外其它 token 的概率"—— 这才是判断 teacher "有多确定"的关键。token-level 完全丢掉这部分;
- 等价 RL 的局限:token-level 蒸馏数学上就是 KL 的蒙特卡洛单样本估计,再塞进 RL 框架。这是"复用 RL loop"的便利,不是分布学习。
V4 选保留完整 logit 分布($|V| > 100\text{K}$ 全词表),算精确 KL:
- batch = 256 prompt × seq = 8K token = $2 \times 10^6$ 位置;
- 每位置全词表 logit FP8 = $128\text{K} \times 1\text{ B} = 128\text{ KB}$;
- 10 个 teacher 同框 = $2 \times 10^6 \times 128\text{ KB} \times 10 \approx \mathbf{2.6\text{ TB}}$ logit;
6. 与 specialist 的接力
- 每个 specialist 已经在 Ch16 走完 SFT + GRPO,是该领域最强的;
- OPD 把 N 个 specialist 当 frozen teacher,不再更新它们的权重;
- student 即"未来发布的 V4-Pro / V4-Flash"本体,从 Pro/Flash-Base 出发;
- 训练目标:student 在所有领域都能 ≥ 对应 specialist 的能力 + 跨领域更强的泛化。
mixed RL 像让一个学生同时上 10 节不同老师的课,每个老师只给"对错"打分;
OPD 像让 10 个老师批改学生自己交上来的作业,每份作业每位老师都给出完整的解题分布("你这题我会怎么想,每一步可能选什么 token"),学生在每道题上自然地参考"对这种题最有发言权"的那位老师 —— mode-seeking 让"在数学题上听数学老师、在写作题上听写作老师"自动成立。
前者是 reward summing,后者是 distribution selecting。OPD 的"选"不是显式 router,而是 reverse KL 数学上自带的mode-seeking 性质。
7. 一句话总结
OPD 把 V3 的"reward 期望"训练范式升级成 "分布形状"训练范式 —— reverse KL 的 mode-seeking 让多 teacher 合并不再是 mean of teachers,而是在每个 prompt 上选最强 teacher 的 mode;on-policy 让学生从自己的错误位置出发学习"如何被救";全词表让 teacher 的整个分布信息无损传递。三件事缺一不可,工程代价由 Ch19 承担。