当 EOS Token 不一致时:理解 On-Policy 蒸馏中的长度膨胀

  • 关联论文:2609.20511
  • 作者:flyP
  • 更新:2026-09-19

§0 元层五问(写作前自检)

维度 自问 本文答复
真实问题 这篇论文到底解决什么「之前没人解决」的事? OPD 中 student 输出越来越长甚至耗尽 generation budget 的「长度膨胀」根因
既有失败模式 之前业内默认的解法为何不行? 默认做法只看「停止集合是否一致」,掩盖了「集合相同但 EOS token 错位」的实质不匹配
关键 trick 这篇真正聪明的一招是什么? 把功能等价的 EOS token 在 decoding 阶段合并为同一个「语义停止动作」,而不是只对齐 declared stopping set
适用范围 这招在哪能用、在哪不能用? 任何 teacher / student 使用同一 tokenizer 家族、且走 KL / on-policy 蒸馏的场景;多模态、非自回归、检索-生成管线上不直接适用
一句话结论 用一句话讲清核心 基座 vs 后训练教师在 EOS token 上的概率错位,是 OPD 长度膨胀的重要但非唯一来源,对齐 stopping set 不足以根治,对齐「语义停止动作」才是关键修正项

本文评级:⭐⭐⭐ 立基础候选(research · method · 3 模型族 + K2-Horizon 阶段分析 + 公开代码 / 元信息齐 / 无顶会 anchor ⚠️ 待补 / 未给统一数值表 ⚠️ 待核)

§1 解决什么真问题

On-Policy Distillation(OPD)是一类用后训练好的 teacher 引导 base student 做自回归训练的范式,最近在 Qwen3、Llama、Gemma 等多模型族的 K2-Horizon 等管线中被广泛使用。一个被忽视但极其影响实际部署的现象是:student 的回答会越来越长,严重时甚至把 generation budget 跑完才停。这个长度膨胀(length inflation)并不是「越训越强所以啰嗦」能解释的——它直接带来推理成本上升、用户体验恶化、甚至在长上下文任务里触发截断。

论文把这个现象拆开看,识别出一个具体且可干预的机制:终止 token 不匹配(termination-token mismatch)。具体而言,base student 与 post-trained teacher 即使声明了相同的「停止集合」(例如 <|endoftext|></s><|im_end|> 都在停止列表里),它们实际生成的概率质量可以落在集合里不同的 EOS token 上。

后果是双向负面的:

  1. 抑制 student 偏好的终止动作:teacher 在训练信号里给了高概率给 EOS_A,但 student 的自然分布更倾向 EOS_B,于是在 SFT 信号下 EOS_B 的概率被压制。
  2. 没把 teacher 偏好的替代动作可靠传给学生:teacher 用 EOS_A「停」,但 student 的解码器未必把这个信号学到位,结果是 student 既停不下来,又学不好替代停止模式

所以长度膨胀不只是「teacher 长 student 也长」的简单模仿,而是终止机制在两个模型间发生错位后的副作用。

§2 核心方法(机制拆解)

2.1 形式化

令 $t \in T_{\text{EOS}}$ 表示任一终止 token,$T_{\text{EOS}}^{\text{stu}}$ 与 $T_{\text{EOS}}^{\text{tea}}$ 是各自声明的停止集合。论文的关键观察是:

$$ T_{\text{EOS}}^{\text{stu}} \equiv T_{\text{EOS}}^{\text{tea}} \quad \nRightarrow \quad \arg\max_t\, p_{\text{stu}}(\cdot|t) = \arg\max_t\, p_{\text{tea}}(\cdot|t) $$

即「集合等价」≠「token 等价」。两者只是 coarse-grained 的等价,fine-grained 的 token 级别概率分布仍可能完全不同。

2.2 关键修正:把 EOS 合并成「语义停止动作」

# 伪代码:termination-aware decoding
for step in generation:
    logits = model(...)
    for t in declared_EOS_set:
        if t != canonical_EOS_for(model_family):
            logits[t] = logsumexp([logits[t_e] for t_e in semantically_equivalent(t)])
        else:
            logits[t] = max([logits[t_e] for t_e in semantically_equivalent(t)])
    # 现在整个等价类塌缩成一个"语义停止动作"上的概率
    next_token = sample(logits)

关键差异:传统做法只校验「declared stopping set 是否相同」,而本文做法在 decoding/logit 阶段把功能等价的 EOS 视为同一个动作,因此 student 与 teacher 之间的概率比较才有可对齐的 fine-grained 基础。

论文同时验证了「仅对齐解码停止集合」是不够的:在 Qwen3、Llama、Gemma 三个模型族上,仅做 set-level 对齐,长度膨胀缓解幅度有限;只有把等价 EOS 合并成共享语义停止动作,才能在三族上都看到稳定缓解。

2.3 阶段演化分析

论文沿着 K2-Horizon 的训练阶段(stage-wise)跟踪终止偏好的演化,发现两件之前被掩盖的事:

  1. 终止偏好在训练中会显著漂移:早期偏好 EOS_A,到中段可能漂到 EOS_B,意味着一次性静态校正不够,理想做法是在每个 stage 重做 termination alignment。
  2. 训练后期出现独立的长度膨胀:即使做了 termination alignment,OPD run 后期仍残留一种与终止错位无关的长度增长,说明终止错位是长度膨胀的「重要来源之一」而非全部

⚠️ K2-Horizon 阶段的具体训练 step 数与百分比,paper card 未给出,需读 PDF §X 复核(待核 PDF §X)。 ⚠️ 各模型族长度缓解幅度的具体数值(如平均减少 token 数 / 比例),abstract 未列,需 PDF 主表复核(待核 PDF §X)。

§3 关键实验与数据

论文给出 30 页 / 12 图 / 3 表 的相对完整实验结构,按 paper card 与 abstract 可归纳的可见证据如下:

  • 跨模型族验证:Qwen3 / Llama / Gemma 三族,每个族内对照「declared set 对齐」vs「语义停止动作对齐」两种处理下 student 输出长度的分布。
  • 训练阶段演化:跨 K2-Horizon 多阶段采样终止 token 概率质量分布。
  • 解耦分析:固定 termination alignment,看下 OPD run 后期长度膨胀是否仍存在,从而证伪「终止错位 = 长度膨胀全部原因」的简化叙事。
  • 代码开源github.com/UNCSciML/opd-eos,包含 termination-handling corrections 的实现。

⚠️ 各模型族的具体对照数字(如平均 token 数 / pass@1 变化 / 长度膨胀倍数),abstract 与 paper card 都未给出,需 PDF §X 主表 + 附录表(待核 PDF §X)。 ⚠️ 是否对照 KL / RKL / DPO / GKD 等不同 OPD 变体,未见 abstract 显式说明(原文未明确)。

§4 亮点

  1. 把 EOS 处理从声明层推到概率层:业内默认「declared stopping set 一致就够了」,本文直接证伪,给出 token 级修正。
  2. 跨模型族一致性:Qwen3 / Llama / Gemma 三个族结果同向,不是单一模型现象。
  3. 机制 + 校正 + 演化的三段式叙事:不仅给「错位」一个名字,还给「如何修」和「修了之后还有什么」一个清晰的下一步。
  4. 可落地:开源 opd-eos,工程团队可直接接入训练 loop 的 termination handler。

§5 局限与边界

边界 内容
B1 「终止错位是来源之一但非全部」:OPD 后期残留的长度膨胀未被本文解释
B2 仅在 autoregressive LLM OPD 范式验证,未覆盖 diffusion / 检索-生成 / 多模态管线的终止机制
B3 「功能等价 EOS」的等价类划分依赖 tokenizer 家族,跨 tokenizer(teacher 与 student 用不同 tokenizer)的场景未讨论
B4 静态 termination alignment 可能不够,阶段演化要求「每 stage 重新对齐」的工程开销未给出
B5 未给出与 KL / RKL / GKD / DPO 等 OPD 变体的横向对比(原文未明确)
B6 「declared stopping set 等价」的具体判定逻辑依赖各模型 chat template,跨框架对齐门槛不低
B7 长度膨胀与下游任务质量(pass@k / 正确率)的权衡在 abstract 中未量化(待核 PDF §X)
B8 实验所用 teacher / student 的版本号与具体 checkpoint 未在 abstract 中给出(待核 PDF §X)
B9 ablation 上是否拆解「logsumexp vs max」合并策略差异未明(原文未明确)
B10 termination handler 的延迟开销未披露(原文未明确)
B11 与现有 EOS 规范化工具(如 tokenizer 配置标准化)的关系未讨论(原文未明确)
B12 是否给出「teacher 与 student 必须共享 tokenizer 家族」的强约束未明(原文未明确)

§6 对工程落地的启发

  1. 训练侧 termination handler:在 OPD loop 内插入等价 EOS 合并模块,比「修改 chat template 期望 set 一致」更直接。
  2. 监控侧 termination drift 仪表盘:跨训练阶段画 EOS token 概率热力图,提早发现 teacher → student 终止偏好漂移。
  3. 推理侧 decoding guard:即使训练阶段未做 alignment,推理时也可以做一次 logit-time EOS 合并,做为 safety net(但会引入轻微延迟 ⚠️ B10 待核)。
  4. 评测侧加「停止分布一致性」指标:把 teacher / student 在固定 prompt 下的 EOS 概率分布差异作为 OPD 训练的健康度检查项。

§7 与同方向工作的关系(撞名 ≥3 主线)

  • 主线 R1 · On-Policy Distillation 系列:与 GKD(Generalized Knowledge Distillation,Google DeepMind)、MiniLLM、Distill-and-Refine 等 OPD 变体属同谱,本文专注于 OPD 长度膨胀这一长期被忽视的副作用。
  • 主线 R2 · EOS / Termination 工程实践:与 HuggingFace tokenizer 规范化、vLLM / SGLang 的 stop token 配置、Chat Template 的 <|im_end|> 设计实践同源,本文提供了概率层面的解释。
  • 主线 R3 · K2-Horizon / 长后训练管线:与 Llama-3 post-training、Qwen3 instruct 训练、Gemma-2 IT 等长周期多阶段后训练工作方向一致,本文给出的 stage-wise 终止漂移观察对其工程实践有直接借鉴价值。
  • 主线 R4 · Length / Token efficiency 研究:与「concise SFT」「brevity reward」「length-controlled RLHF」属同方向,但本文走的是 termination mechanism 解释路线,而非 reward shaping。

§8 适合谁读

  • LLM 训练 / 后训练工程师:直接受益,理解 OPD 中 student 越来越长的真实机制。
  • 推理系统工程师:termination handler、stop token 配置、decoding 优化方向。
  • RLHF / OPD 研究者:机制层面给出 length inflation 的一个具体可证伪解释。
  • 评测 / 工具开发者:可以基于本文「declared stopping set ≠ token-level alignment」的观点设计新的 OPD 健康度指标。
  • 不推荐给:纯应用层 LLM 用户、非自回归生成研究者、本文未覆盖的扩散 / 检索-生成管线工程师(B2)。

§9 来源与不确定处

  • 来源/shared/research-kb/organized/paper_cards/1425-2609-20511.md + arXiv abstract https://arxiv.org/abs/2609.20511 + GitHub https://github.com/UNCSciML/opd-eos(按 abstract 链接)。
  • 不确定 / 待核 PDF §X:跨模型族长度缓解具体数值、K2-Horizon 阶段百分比、teacher/student checkpoint 版本、终止 handler 延迟、与 KL/RKL/GKD/DPO 对照表。
  • 未触碰边界:未下载 PDF / 未跑代码 / 未生成新数据;所有推断基于 paper card + abstract 公开内容;不确定处已逐条标 ⚠️。