精读:跨分词器 OPD——把对齐覆盖度补满反而掉点
跨分词器 on-policy 蒸馏里,静态词表 Jaccard 重叠只有 39.49–64.87%,学生轨迹上的严格 1:1 覆盖却有 85.57–96.98%;把 mismatch 组用 span log-prob MSE 补进来拿到 100% 结构覆盖,18 个正权重设置全部低于lambda=0,降幅 0.27–1.20 pp;反过来把每个位置的支撑词表从 8.5–11 万条砍到 16 条仍留住 96.1–98.4% 的蒸馏增益。本专栏逐项对账后发现:span 损失既未按组内 token 数归一化、也在组内做均匀分配;诊断跑在 lambda=0 的轨迹上却要解释 lambda>0 的轨迹;分裂半参照到 step 100 已塌到 0.076–0.246;rho 相差 8.3 倍的两对掉点幅度重合;lambda 扫描非单调且全文 seed 零命中
1 论文概览
一句话总结:跨分词器 on-policy 蒸馏里,把教师信号的对齐覆盖度从 85.6–97.0% 补到 100%,会让三个师生对的下游准确率掉 0.27–1.20 个百分点;反过来,把每个位置参与反向 KL 的共享词表从 8.5–11 万条砍到 16 条,仍留住 96% 以上的蒸馏增益。
核心问题:两个分词器不同的模型做 on-policy 蒸馏时,同一段文本会被切成不同的 token 边界,两侧的下一 token 分布又定义在不同词表上。近年的跨分词器蒸馏工作(ULD、DSKD、Byte-Level Distillation、SimCT、Byte-Prefix Marginalization)主攻「把更多位置纳入比较」。这篇论文把问题掉了个头:严格匹配已经留下的那部分够不够?被排除的部分补回来有害吗?
作者先把两个此前被混为一谈的量拆开:
Alignment coverage describes how much of the response and the models’ vocabularies can be compared across tokenizers. Supervision reliability concerns whether the resulting teacher targets provide useful guidance for student learning at the states it visits. —— §1 Introduction
主要贡献:
- 覆盖度与可靠性是两个数。静态词表 Jaccard 重叠只有 39.49–64.87%,学生轨迹上的严格 1:1 token 覆盖却有 85.57–96.98%(表 1)。词表差得远,不等于能对上的位置少。
- 补满覆盖会掉点。在严格反向 KL 上叠加 mismatch 组的 span log-prob MSE,7 个权重 × 3 个师生对共 18 个正权重设置,全部低于 λ=0 的基线,降幅 0.27–1.20 pp。
- 砍掉 99.98% 的支撑集仍留住增益。学生自选的 top-16 共享词子集保留 93.54–98.44% 的教师概率质量、94.55–98.44% 的学生概率质量(表 5),训练后保留 96.1–98.4% 的 Full 平均增益,且在三对上全部高于四条跨分词器基线。
- 一条可证伪的机制解释。span 梯度与 strict 梯度的余弦在 |0.066| 以内、两对里出现负值;span-to-strict 范数比 ρ 在 100 步内从 0.008–0.294 涨到 0.233–1.942(表 6)。
- 两个外推验证。附录 D 用 Qwen3-235B-A22B 教师蒸 Granite-4.1-8B,附录 E 把同一套方法搬到 ALFWorld 具身任务。
2 方法详解
2.1 两类 token 组:严格 1:1 与 mismatch
把学生生成的响应解码成文本,再用两个模型各自的 tokenizer 重新编码,保留两侧共享的 token 偏移(含响应首尾)。相邻共享边界之间的第 r 个区间内,学生侧 token 集合记为 、教师侧记为 ,两组拼起来是同一段文本。全部区间把响应切成 R 对对齐组,再分成两类:
严格组是学生一个 token 对教师一个 token、覆盖同一段文本,其配对的预测位置叫严格位置。mismatch 组则至少一侧要多个 token 才拼出同一段文本。
2.2 严格目标与两条改动轴
严格目标(式 5):只在严格位置求和反向 KL,两侧分布先在共享词表 上截断并重归一化。共享词表按底层 token 识别,排除特殊词元与歧义匹配。
改动轴一——补覆盖(式 8)。对每个 mismatch 组,算两侧路径概率 ,用 log 空间的 MSE 对齐:
λ=0 只监督严格组;任何 λ>0 都把所有 mismatch 组一并纳入,结构覆盖度直接到 100%。
改动轴二——砍覆盖(式 11)。按学生在该严格位置的分布,从共享词表里挑概率最高的 k 条作为支撑集 ,两侧在同一集合上重归一化后再算反向 KL。k 取 4/8/16/32/64/128 与全共享词表对照。
2.3 关键创新点
把「覆盖度」拆成两个可分别拨动的旋钮。 此前的工作只往一个方向加:SimCT 补回最小对齐多 token 单元,Byte-Prefix Marginalization 把教师概率质量按字节前缀映射到学生 token 并留一个残差类。这篇论文第一次在同一套实验里一并做了「往 mismatch 组加监督」和「从严格位置砍词表」两件事,并让两者给出方向相反的结论。
用概率质量而不是词表计数来判定「够不够」。 静态重叠按词条等权计数,可词条的频率与预测概率在真实轨迹上极不均匀。作者改测:严格位置上,共享词表到底留住了多少概率质量(表 5)。结果是三对上共享词表留住教师质量的 99.69–99.90%、学生质量的 98.99–99.81%。
用梯度诊断把「掉点」接到机制上。 不只报一个负号,而是测 span 梯度的方向与范数(式 13),并设了一个分裂半参照 :把严格损失涉及的随机切两份、各自累积梯度,两者的余弦作为「同一目标下位置子集之间的正常一致性」基准。
2.4 与基线方法的区别
四条基线全部用 KDFlow 实现,统一 KD 权重 1.0、温度 1.0、不混交叉熵:
| 方法 | 对齐方式 | 词表处理 |
|---|---|---|
| ULD | 不要求 token 身份匹配 | 排序后的输出概率 |
| Extended ULD | ULD 的 span 分组变体 | 同上 |
| GOLD | 合并文本等价的 token 组 | 排序或混合身份匹配 |
| SimCT | 补回最小对齐多 token 单元 | 共享监督空间 |
| 本文 Strict | 只要 1:1 组 | 共享词表(或 top-k 子集)上重归一化 |
差异集中在两点:本文主动放弃 mismatch 组,且主动缩小每个位置的词表支撑。
3 实验结果
设置:三对师生——Qwen2.5-7B-Instruct → Llama-3.2-3B-Instruct、Granite-4.1-8B → Phi-4-mini-instruct、Granite-4.1-8B → Qwen2.5-7B-Base。2 万条 prompt(DAPO-Math-17K 一万 + CodeForces 一万),100 轮 on-policy 迭代,每轮 512 条响应,8×H20,SGLang 出 rollout,lr ,AdamW。数学 7 个基准报 mean@32,代码 3 个基准报 mean@8,Full 是两域算术平均的等权平均。
3.1 主要指标(表 2)
| 方法 | Qwen→Llama Full | Granite→Phi Full | Granite→Qwen Full |
|---|---|---|---|
| Base | 26.96 | 36.55 | 29.56 |
| ULD | 29.12 | 38.63 | 27.12 |
| Extended ULD | 31.13 | 38.35 | 32.57 |
| GOLD | 27.16 | 41.75 | 46.55 |
| SimCT | 31.59 | 41.68 | 46.10 |
| Strict full | 32.86 | 42.49 | 47.35 |
| Strict top-16 | 32.64 | 42.26 | 47.06 |
| Strict top-128 | 32.38 | 42.54 | 47.65 |
三个 Strict 变体在数学与 Full 上全部高于四条基线;top-16 领先最强基线的幅度是 1.05 / 0.51 / 0.51 pp。
3.2 与教师、与更大教师的对比
三个师生对上,Strict full 把学生到教师的 Full 差距收掉了 26.7% / 31.7% / 69.1%。附录 D 换成 Qwen3-235B-A22B-Instruct-2507 → Granite-4.1-8B,Strict top-16 Full 62.46,对 Base 51.31、Teacher 74.17 的差距收掉 48.8%,而同组 SimCT 只收掉 21.6%。附录 E 的 ALFWorld 上,Strict top-16 Overall SR 30.34%,高于教师自身的 29.56%,也高于 SimCT 的 28.52%。
3.3 消融的关键发现
λ 扫描(表 11–13):18 个正权重设置全部低于 λ=0,降幅 0.27–1.20 pp。三对的 λ=0 也是各自数学平均与代码平均的最高点。
k 扫描(表 8–10):top-16 保留 96.3% / 96.1% / 98.4% 的 Base→Strict full 增益;从 k=16 加到 k=128,保留质量最多只多 3.44 pp(教师侧)/ 2.70 pp(学生侧),下游指标无一致改善——top-128 在两对上略高于 Strict full(+0.05 / +0.30),在一对上略低(−0.48)。
梯度诊断(表 6):
| 步 | Qwen→Llama / / ρ | Granite→Phi | Granite→Qwen |
|---|---|---|---|
| 0 | 0.030 / 0.956 / 0.294 | 0.066 / 0.986 / 0.008 | −0.360 / 0.977 / 0.015 |
| 20 | 0.058 / 0.671 / 1.231 | 0.008 / 0.955 / 0.021 | −0.129 / 0.581 / 0.113 |
| 60 | −0.011 / 0.296 / 1.877 | 0.044 / 0.733 / 0.100 | 0.002 / 0.049 / 0.222 |
| 100 | −0.021 / 0.208 / 1.942 | −0.004 / 0.246 / 0.233 | −0.001 / 0.076 / 0.269 |
在每个 checkpoint 都低于 ;ρ 单调上升。
4 个人分析
4.1 亮点
第一,把「能对上的位置有多少」从一个直觉问题变成了可测的两个数。 表 1 给的三组对比值得记:Granite→Phi 的 Jaccard 最低(39.49%),严格覆盖却最高(学生侧 96.98%、教师侧 97.26%);Granite→Qwen 的 Jaccard 最高(64.87%),覆盖反而最低(85.57% / 82.82%)。静态词表相似度与动态对齐率排序相反。这条对任何「先对齐词表再蒸馏」的工程路线都是直接的否定。
第二,结论是负的,但负得有层次。 论文没有停在「加了更差」,而是分出三条独立证据:掉点在所有 18 个设置上一致;span 梯度方向近乎正交;span 梯度范数相对增长。负结果配上机制诊断,比一个新 SOTA 更难被推翻。
第三,top-16 这个数反直觉。 用约五千到七千分之一的支撑集条目(16 vs 85,034–109,567)留住 93.54–98.44% 的教师概率质量,且下游只掉 0.22–0.29 pp。这说明反向 KL 的实际学习信号几乎全部集中在每个位置的头部十几个候选里,长尾词条参与的是归一化而非梯度方向。
4.2 局限性
(1)式 8 既没按组内 token 数归一化,也在组内做均匀分配。 对组内每个 token 的 log 概率给出同一个偏导数 ,且没有除以 或 。两个后果:一是 mismatch 组越长(组内 token 越多), 的绝对值越大、平方项越大,损失被长 span 主导;二是组内三个 token 里哪怕只有一个造成失配,三个一起被推。论文用「弱方向一致性」描述掉点,却没给出这个更具体的成因,也没有归一化版本的对照。
(2)诊断跑在 λ=0 的轨迹上,结论要解释 λ>0 的轨迹。 表 6 的 checkpoint 全部取自 Strict full run。计入 span 损失后,学生策略、rollout 分布、ρ 与 都会变。正文用了 “may help explain” 的措辞,可 §5 的因果链是:ρ 上升 → span 梯度在总更新里占比变大 → strict 更新被干扰 → 掉点。这条链要成立,需要一条在 λ=1.0 run 上测同款诊断的对照。论文没做。
(3)分裂半参照 自己塌到近零,末期的判别力失效。 step 0 时 是 0.956 / 0.986 / 0.977,step 100 只剩 0.208 / 0.246 / 0.076。到 step 100(也就是所有下游指标的评估点), 只剩 0.229 / 0.250 / 0.077,而 step 0 时是 0.926 / 0.920 / 1.337。⇒ 「span 梯度比同目标内部子集还不一致」这条证据几乎全部来自前期;在最终评估点上,两个余弦都接近零。这也意味着 step 100 时 strict 损失自身的梯度已经是高维近正交的叠加,那么「ρ 涨到 1.942」是否等于「有效干扰」,要打问号。
(4)ρ 差 8 倍的两对,掉点幅度一样。 Qwen→Llama 的 ρ 终值 1.942,Granite→Phi 只有 0.233,相差 8.3 倍;两对的 Full 降幅分别是 0.39–1.20 pp 与 0.40–1.07 pp,区间几乎重合。⇒ 范数比解释不了跨对差异,「相对尺度增长」这条机制至少缺一个自由度。附带一条:论文图 5 标注的是 step 0→100 的增长倍数,Granite→Phi 是 29 倍、Qwen→Llama 是 6.6 倍,倍数最大的那对绝对终值最小。凡报增长倍数,先看绝对终值。
(5)λ 扫描非单调,邻点摆幅与 λ=0 的差距同量级。 Granite→Phi 的六个 λ 依次是 −0.61 / −0.68 / −0.40 / −1.07 / −0.47 / −0.80:λ=0.75 的掉点比 λ=0.25 还小。全文 “seed” 零命中——下游结果没有多种子复现,没有置信区间,没有显著性检验。在这个前提下,±0.3 pp 级的摆动与 λ=0 的 0.27–1.20 pp 不可区分。「随 λ 增大而单调变差」这句话逐点读是不成立的,正文也只敢写 “an overall downward trend”。
(6)缺一条「换损失、覆盖同一批位置」的对照。 λ 是唯一旋钮:λ>0 一次性纳入全部 mismatch 组,且只有 span log-prob MSE 一种形式。缺的对照至少有三类——对 mismatch 组改用排序匹配或分布匹配;只覆盖一部分 mismatch 组(例如只收 1:2、不收 3:5);对 span 概率用 KL 而非 log 空间 MSE。⇒ 现有证据支持的是「这个损失形式有害」,论文的结论句把它上升成了「覆盖度这个维度不值得追求」。这是从一个损失形式外推到一个研究维度。
(7)基线组在 Granite→Qwen 上崩了两条,论文没点名。 ULD 的 Code 是 20.87,低于 Base 的 34.51(−13.64);MBPP 20.37 对 Base 45.77(−25.40)。Extended ULD 的 Code 32.00 同样低于 Base。附录 A 写明 ULD / Extended ULD / GOLD 三条基线都排除末尾 EOS,可同样排除 EOS 的 GOLD 在代码上拿 54.84,与 Strict full 打平 ⇒ EOS 约定解释不了 ULD 家族的崩塌。论文没有给出任何解释,也没在正文里提「两条基线低于不训练」。基线组内部的 Full 极差是 19.43 pp(27.12 到 46.55),用「胜过全部四条基线」当 headline 的强度要按这个极差打折。
(8)最大的那一对增益来自 base 学生,格式学习与蒸馏收益混在一起。 Granite→Qwen 的 Full +17.79 里,Code 贡献 +10.17(57%),学生是 Qwen2.5-7B-Base。分基准看:HumanEval +23.78、MBPP +25.79、LiveCodeBench +11.43。前两个是短函数补全、对输出格式高度敏感,第三个是竞赛题、格式敏感度低得多。本专栏推算:这三个数的落差里相当大的一部分来自「学会输出代码块并停止」,而非「学会教师的分布」。论文没有报 base 学生的截断率或格式合规率诊断,无法分离。
(9)概率质量探针只在蒸馏前测一次,而支撑集在训练中是逐位置重选的。 表 5 的标题写明 “before distillation”, 却依赖当前学生的 。训练跑满 100 轮,学生数学从 18.32 涨到 26.60,分布明显移动。⇒ 93.54–98.44% 的保留率是 step 0 的快照,中后期没有复测。附录 B 还列了四类排除(空响应、两侧字节流不一致、无严格位置、超长)却没报排除比例——Granite→Phi 的 Jaccard 只有 39.49%,字节流不一致的比例未必低。
(10)「紧凑」目前只有未量化的工程收益。 全文 wall-clock、GPU-hour、throughput、FLOPs 零命中,没有报 top-16 相比全共享词表省了多少时间或显存。准确率上 top-16 反而略低于 Strict full(−0.22 / −0.23 / −0.29),只有 top-128 在两对上略高。站得住的表述是:砍掉 99.98% 的支撑集条目,准确率损失控制在 0.3 pp 以内。
4.3 对大模型领域的影响
跨分词器蒸馏的研究重心会从「补覆盖」转到「挑位置」。 SimCT 与 Byte-Prefix Marginalization 的前提是「被排除的监督有学习价值」。这篇在三个师生对上给出了反例,且用的是对方的失败模式之外的证据(概率质量 + 梯度方向)。后续工作再提「补回 X% 的 token」,需要先回答:补回来的这批梯度与 strict 梯度的余弦是多少。
top-k 支撑集会变成默认实现。 每个位置只对十几个候选算反向 KL,对跨分词器场景的显存与通信开销是量级改善。这条结论还牵出一层:长尾词表参与的主要是归一化常数,不是梯度方向——这与 Li et al. (2026) 在同分词器下得到的「top-k 交集含大部分质量」结论互相印证,说明这个现象不依赖分词器相同。
「负结果 + 诊断」会成为跨分词器方向的模板。 论文明确写了 “do not propose a new one” 式的克制——它只测已有估计量。对已经堆了五六种覆盖度方案的子领域,一篇把已知方案逐个放到有 ground truth 的对照里检验的论文,比第七种方案更有价值。
5 实践启示
5.1 可以借鉴的技术
把「对齐覆盖率」和「静态词表相似度」分开监控。 工程上最容易犯的错是拿 Jaccard 当蒸馏可行性指标。表 1 显示两者可以排序相反。正确做法是在 rollout 上直接统计严格 1:1 覆盖,并按训练窗口分段看(论文报了 step 1–20 / 41–60 / 81–100,窗口内极差 ≤1.43 pp)。
蒸馏支撑集默认砍到 top-16 量级。 三个师生对上一致:k=16 留住 94.55–98.44% 的学生质量、93.54–98.44% 的教师质量,下游损失 0.3 pp 以内。实现要点是子集按学生分布选、两侧在同一集合上重归一化——论文验证了只用学生侧选出的条目,教师侧质量也留住了九成以上。
引入新监督项之前,先跑一次梯度余弦 + 范数比。 这套诊断成本极低(在已有 checkpoint 上重放固定 rollout、累积原始梯度、取 replay unit 的中位数),却能在训练前预判「这条新损失会不会打架」。关键是要配一个分裂半参照:把主损失的位置随机切两份。参照本身塌到近零时(本文 step 100 的 0.076–0.246),说明主损失自身的梯度已经是高维噪声叠加,此时任何「一致性差」的判断都不牢靠。
对 base 学生单独设一条基线。 本文最大的一组增益(+17.79)落在 base 学生上,其中过半来自代码域。做蒸馏评估时,加一条「同数据的 SFT / 同数据的格式对齐」对照,把「学会格式」与「学会分布」分开。
5.2 潜在应用场景
异构模型蒸馏流水线。 工程上最常见的场景正是本文设定:教师与学生来自不同厂商、不同词表。结论直接可用——只做严格 1:1 位置的反向 KL,支撑集砍到 16,跳过所有 mismatch 组。
长 mismatch span 的定向处理。 本文式 8 的归一化缺失提示了一条改进路径:按组内 token 数归一化,或对组内 token 做加权(例如按各自与教师的偏差分配责任)。改完之后重跑 λ 扫描,如果掉点消失,说明问题出在损失形式而非覆盖度——这正是论文缺的那条对照。
多教师 / 多分词器并行蒸馏。 附录 D 已验证 235B → 8B 的规模落差。top-16 的紧凑支撑让「同一学生并行对齐多个不同词表的教师」的显存开销从线性于词表大小降到常数级,这是本文没有展开的方向。
把同一套审计移植到 RLVR。 本专栏此前读过的 CARM(2610.02039)在改响应级准入、Mesh Learning(2610.02835)在改策略容量,都属于「往训练信号里加东西」。本文的梯度余弦 + 分裂半参照可以直接搬过去,用来判断新加的那一项到底是信号还是噪声。
参考文献
Hou, B., Jiang, G., Quan, G., Li, W., Feng, W., Liu, G., & Zhang, Y. (2026). Rethinking Cross-Tokenizer On-Policy Distillation: From Alignment Coverage to Supervision Reliability. arXiv:2610.08448 [cs.CL]. Alibaba Cloud Computing.
相关精读
- 本篇把本专栏连续三十二期的主线再挪一格:此前三十一期回答的是「挑哪些 token、挑哪些轨迹、信用按哪套口径记账、信号被消费时旧了多少、数据分布离基座多远、整条响应有没有资格参与这次更新、策略容量会不会被优化动力学耗光」,这一期问的是教师的分布里哪些位置允许比较、比不了的那部分要不要补回来——作用层从「这条轨迹怎么进损失」转到「两个词表之间这条边是否合法」。
- 精读:Mesh Learning——把 RLVR 的坍塌解释成策略容量的供需冲突
- 精读:CARM——把响应级掩码的判据从净位移换成双向漂移
- 精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据
- 精读:GMC-GRPO——把重要性比从逐条裁剪换成整组收缩
- 精读:SCAPO——用「扰动下不动」给 token 记一笔负账
- 精读:ARCUS——prompt 的选择也有一条弧
- 精读:把中间那一步的信号从模型里搬进环境——用沙箱回滚跑出免费过程奖励
- 精读:把特权信息从损失搬到采样器——多轮 agent 里自蒸馏为什么会崩
- 精读:OC-GRPO 与离上下文重要性校正
- 精读:不跑 RL,先把新奖励的结果预测出来
- 精读:给 token 级信用一个唯一解,然后把它求和掉
- 精读:把后训练配方本身当成果,再逐阶段对账
- 精读:STAR-E——按惊讶度给 token 重加权 advantage
- 精读:按梯度可估性给 token 分配蒸馏监督
- 精读:TrimSFT——按 logit 间隔剪掉 SFT 里的低信息 token
- 精读:ESFT 与端点 SFT 对中段推理链的裁剪
- 精读:把中间状态的价值估计整体消掉
- 精读:ActObs——把被 mask 掉的那 45% 观察 token 重新纳入损失
- 精读:SP³O——一条响应里只给三个位置价值监督
- 精读:教师引导的课程 RLVR——把解不出的题变成可解的题
- 精读:DataFlex-RL 与均匀采样的替代策略
- 精读:NGU 与 RL 里的马太效应
- 精读:按排序可分辨性做 RLVR 数据联合工程
- 精读:模型与外壳共演化时的同策略校正
- 精读:OPD-then-RL——顺序摆信号胜过同 step 混信号
- 精读:One-Shot OPD 与状态覆盖吸收率
- 精读:Compile by Training——把 LLM 降级为构建期依赖
- 精读:Terminal-Universe——轨迹反向造环境
- 精读:OPSA——无教师的同策略自适应
- 精读:SPADE——把优化对象从轨迹上移到生成器
- 精读:DART-SD——标注单元从轨迹换成状态图