中期预训练(continual pre-training,也叫 mid-training)几乎都是同一套流水线:拿一份领域语料,继续跑下一个 token 预测。但这套默认配方在同一份语料上,能把一个模型推上去,也能把另一个推下悬崖。

11 月 10 日提交的 arXiv 论文(arXiv:2611.13855)用受控实验把这件事摆到了台面上。作者从 MegaMath-Web-Pro 随机采了 1B token 数学语料,用同一套 NTP 配方,分别喂给 Llama-3.2-3B 和 Qwen3-1.7B-Base,在 MATH-500 和 Minerva 上走出相反的方向。

同一份配方,一个涨一个崩

Llama-3.2-3B 的起点是 MATH-500 pass@16 11.2、Minerva 7.3,一轮中期训练后涨到 37.0 和 17.3。这符合直觉:继续喂数学文本,数学能力上升。

Qwen3-1.7B-Base 则从 76.6 / 30.5 一路掉到 18.2 / 5.5。MATH-500 的 avg@16 从 18.5 跌到 1.5,Minerva 的 avg@16 从 4.7 跌到 0.4。论文的 NTP checkpoint 表显示这不是中途抖动:第 400 步 30.2,第 800 步 17.8,第 1200 步 17.6,跑满 1902 步 18.2。掉下去没有回来迹象。

作者的解读是:更强的基座有更多已成型的推理行为要保住,反而可能对冲突或低效用的训练信号更脆弱。语料质量不是唯一变量,同一份语料对不同基座的效用可以完全相反。而这正是当前中期训练流水线最盲的地方——主流做法是静态数据筛选,全部发生在优化之前,对模型实际走到哪一步一无所知。

换目标函数:在模型自己走过的地方打分

论文的方案叫 OPMD(On-Policy Mid-Training Distillation),把中期训练从离线文本模仿改造成主动查询式知识获取。

三步走。第一步是锚点选择(Anchor Token Identification):用一个冻结的轻量代理模型 DeepSeek-R1-Distill-Qwen-1.5B 扫文档算逐 token 预测熵,长文档按 4096 窗口、2048 步幅滑动并对重叠区取平均,然后分三组——熵最高的 5%、熵最低的 5%、每个位置以 0.05 概率独立随机预选。第二步是去重与对齐:同一文档按 512-token 非重叠桶分组,每桶只留熵最高的一个候选锚点,三组统一下采样到相同的 435,049 条 anchor prompt,保证比较的只是从哪里开始采样,不是训练了多少。

第三步是核心。学生模型以锚点之前最多 1024 token 的上下文作 prompt,自己 rollout 出最多 512 token 的续写;冻结的教师在这些学生真实访问到的状态上给出逐 token 的 reverse KL 奖励,比较范围限制在学生的 Top-16 候选上。实现跑在 veRL 的 PPO 框架上,学习率 1×10^-6,参考策略 KL 系数 β=0.005,4 到 8 张 A100/A800,一个 epoch 的 AdamW。

4B 教师够不够用

效果上,Qwen3-4B-Base 当教师时,MATH-500 pass@16 到 82.8(比基座 +6.2),avg@16 30.5(+12.0);Minerva pass@16 34.9(+4.4),avg@16 7.0(+2.3)。换成 Qwen3-14B-Base 当教师,MATH-500 是 82.4 / 29.9,Minerva 是 36.0 / 8.0。

两组几乎打平,教师规模翻了三倍多,指标基本没动。论文给了两个可能的解释:一是 1.7B 学生的容量天花板,Top-16 上的软目标差异已经够用;二是状态空间分布对齐,因为 rollout 都由学生自己生成,被访问到的状态锚在学生的分布里,两个教师在这些状态上的相对排序本来就接近。在论文测的两个基准上,教师算力从 14B 降到 4B 没有实质损失。论文也提醒步数不能直接比:4B 教师那组是 4 张卡跑 1699 步,14B 教师那组是 6 张卡跑 1132 步,对应相当的 token 曝光量。

另一个值得记的细节是收敛速度:14B 教师那组在第 100 步,MATH-500 的 avg@16 就从 18.5 涨到 29.4,Minerva 从 4.7 涨到 7.1。

锚点选哪没那么关键

消融分高熵、低熵、随机三组,样本预算严格对齐在 435,049。高熵组在两个基准上给出最高的 avg@16 峰值——MATH-500 31.9(第 800 步)、Minerva 8.1(第 800 步)。低熵组明显更差,峰值只有 25.3(第 900 步)和 6.6(第 1699 步),论文的解释是低熵位置多是高度确定的句法结构,蒸馏价值有限。

但随机组的 pass@16 峰值反而更高:MATH-500 83.2(第 800 步),Minerva 40.8(第 400 步)。也就是说,OPMD 这个范式本身对锚点位置相当鲁棒,把静态语料上下文转成主动 rollout 触发才是主要贡献,高熵锚点的优势更多落在解法一致性上。

三处必须说清的保留

第一,论文明确把在更多领域上评估、以及用真正均匀随机的最终锚点列为后续工作。而所谓随机组的最终锚点其实并不均匀随机——去重阶段每个 512-token 桶里保留的仍是熵最高的那个,作者在附录里有说明。

第二,NTP 与 OPMD 两条臂的学习率并不相同,NTP 用的是 1×10^-5。解读「同样的语料」时这点不能忽略。论文表格中的 checkpoint 来自同一次训练的连续评估,不是独立重复实验。

还有一个来自独立来源的提醒。OPMD 用的评测脚本 gen_vllm.py 与 grade.py 直接取自清华 THUNLP 团队的 Rethinking On-Policy Distillation 项目(arXiv:2604.13016,已被 TMLR 收录)。那篇论文指出 OPD 成功需要两个条件:师生思考模式兼容,且教师能提供学生训练中未见过的真正新能力;他们还发现成功的 OPD 会在学生访问到的状态上、对高概率 token 逐步对齐,一个很小的共享 token 集合就集中了 97% 到 99% 的概率质量。更值得注意的是他们的结论:密集 token 级奖励这个免费午餐是有代价的,OPD 能否扩展到长程蒸馏仍是问号。OPMD 的师生都是 Qwen3 同家族基座,这与「同家族教师在学生视角下可能不可区分」的观察形成张力。

所以呢

这套东西的价值不在于又冒出一个蒸馏方法,而在于它把一个一直靠直觉和试错在做的决定——中期训练该用哪种目标函数——变成了可以先小成本验证的工程变量。OPMD 只改训练过程,不加部署时教师、不加额外推理开销。

可执行的版本大概是:中期训练没看到肉眼可见的收益,先别急着加数据,换个目标函数试试,一版对照可能比多爬几百万条语料便宜得多。