Mid-training:把基础能力塑造成可学习的起点
数据重平衡、continued pretraining、退火与阶段切换
以Qwen的分阶段预训练和公开配置对照,解释中训练做什么、何时该做,以及怎样避免遗忘和错误恢复。
读完这一章,你应该能够
- 严谨区分官方术语与课程抽象
- 设计数据与学习率阶段切换
- 判断能力应在哪个训练阶段获得
本章目录 · 0 个小节
一个更实际的起点:已经会续写,为何仍不适合 RL
基础模型可能有大量知识,却很少生成可验证的数学解答、可编译程序或长文档证据链。如果一次任务采样很多次仍全失败,稀疏 outcome reward 很难告诉模型朝哪里探索。反过来,若模型已经能产生正确候选,却总是不遵循对话格式,继续灌入大量知识文本也不一定解决行为问题。
课程分析:Mid-training 是我们对预训练与任务后训练之间能力塑形工作的统一称呼。它不是一个唯一目标函数,也不是所有公司共享的正式阶段名。continued pretraining、domain adaptation、annealing、long-context extension 可能部分重叠,应按数据、目标、初始化与训练状态判断,不按名字硬分。
从头部模型的公开阶段抽象共性
本章选用 Qwen3 的完整公开阶段报告来拆解机制;同系列当前版本及 DeepSeek、Kimi、GLM、MiMo 的最新证据在 技术演进地图 持续对照。版本更新时,应重新核对数据、目标函数和恢复语义,不能沿用前代结论。
Qwen3 报告在预训练内部区分 General、Reasoning 和 Long Context:前两段使用 4K 序列,第二段提高 STEM、代码、推理与合成数据比例并加快 LR 衰减;后段训练到 32K。我们把第二段的能力重平衡纳入“中训练”教学范畴,不把报告的 Reasoning Stage 改写成它官方称为 Mid-training。官方阶段与论文实验
DeepSeek-V3 的报告则在预训练后安排单独的两步上下文扩展。该事实支持“能力塑形可有多个阶段”,并不证明所有团队有一样的阶段边界。技术报告 Olmo 3 明确使用 Midtraining 一词,可作为术语及开源实现的补充对照。官方报告
| 变化轴 | 原训练 | 能力塑形 | 后训练接口 |
|---|---|---|---|
| 数据 | 广覆盖、多样性 | 目标能力加权与保留分布 | prompt/response、偏好或轨迹 |
| 目标 | 全文 token 预测为主 | 可保留相同预测目标 | response mask、偏好、policy objective |
| 预算 | 大规模长期 | 通常更集中、可分支实验 | 生成和验证也消耗大量计算 |
| 评测 | 域级 loss 与基础能力 | 目标增益 + 非目标保留 | 固定采样预算下可用性 |
表中的“通常”是课程抽象,不是每个团队的公开事实。合成问答可进入全文预训练,也可进入 response-only SFT;数据看起来像聊天,不能直接决定训练阶段。
最新接口案例:Agent中心中训练
MiMo-V2.6 最新公开报告明确使用 mid-training 术语:它在通用多模态基础之上混入Agent任务轨迹,并为后续大批RL调整长上下文、优化器和量化方案。官方报告 §3.2 这给了本章抽象一个新的、直接命名的头部案例。其隐藏矩阵采用Muown,而非所有参数一律替换AdamW;细节和代价在 最新机制源码对照 分解。
课程分析:阶段契约应新增三栏——后续rollout的最大任务长度、训练/推理精度,以及需要继承或变换的optimizer state。中训练的交付物不仅是更高的目标评测分数,也可能是适合高吞吐RL的数值和系统状态。是否值得这样准备,仍需用固定RL预算的后续实验验证。
数学上仍是语言建模,优化轨迹已经改变
令通用分布为 、目标分布为 ,一段简单的能力塑形目标可以写成 控制塑形压力与通用回放, 控制每次更新的幅度。增加目标数据比例和增大学习率都可能加速目标能力变化,但副作用不同:前者改变期望梯度方向,后者放大所有梯度。两者同时大幅切换,诊断会变得困难。
一个重要局部近似是:沿目标梯度 更新后,通用 loss 改变量约为 。若梯度内积为负,改善目标领域可能损害通用领域。这不是完整的高维训练理论,却给了 replay 与小步切换一个可解释的动机。双领域实验
Annealing 不等于只把学习率画成下降曲线
退火阶段可能同时改变数据质量、比例、训练长度和 optimizer 状态。评价其收益必须拆开变量:固定数据只变 LR;固定 LR 只变数据;再比较组合。否则不能判断“最后 100B token 很有效”来自优质数据、阶段时机还是更多训练。
课程建议:设计四组最小对照——维持原 mixture、目标 mixture、目标加 replay、目标加 replay 且缓和切换。固定初始 checkpoint 和 token 预算,至少记录目标能力、通用能力、每域 loss 与格式指标。在多个保存点测曲线,避免只比较最后一步。
真实源码对照:恢复 optimizer 不等于恢复 trainer
透明实现里最容易读错的地方是阶段时间坐标。固定版本 OLMo 3 7B midtrain build_config 使用专门 mixture、100B token 预算、线性 LR 衰减;load_optim_state=True,而 load_trainer_state=False。与预训练第二段两者均为 True 形成对照。源码:midtrain 源码:pretrain
这段代码帮助解释一个通用问题,不表示 Qwen 或 DeepSeek 的私有训练系统也按此实现。保留 Adam moments 可继承对梯度尺度的估计;新分布又可能让旧 moments 不合适。重置它们会产生另一种瞬态。是否保留要做受控实验,不能以“微调都要重置”或“续训都要保留”当规则。
加载旧 trainer state 还可能继承旧数据位置、累计 token 和 LR 时钟。如果换了 dataset 却把旧 dataloader offset 当新数据的 offset,开头的目标池可能被跳过;如果没有加载 trainer state 却沿用已衰减完的 LR,模型可能几乎不更新。源码阅读的产物应是状态表,不是一条启动命令。
如何判定能力应该放在哪个阶段
| 具体问题 | 首选调查 | 为什么 |
|---|---|---|
| 领域术语、API、语法概率普遍差 | continued pretraining / 数据塑形 | 需要覆盖基础分布;检索也可能更划算 |
| pass@k 有正确解,pass@1 低 | 后训练选择与优化 | 候选支持集已有成功路径 |
| 不遵守 JSON 或工具协议 | SFT 与执行反馈 | 首先是条件行为与接口问题 |
| 长文证据无法连接 | 长上下文适配 + 长任务训练 | 长度、位置与利用能力要分开定位 |
| API 经常变动的事实知识 | 检索/工具 + 更新机制 | 持续更新参数未必是合适成本结构 |
课程分析:这不是自动决策器。最好用小额预算对两个阶段做同任务、同生成预算对照,观察“可用候选数”和“选择正确候选的概率”分别发生了什么变化。
可运行实验:把遗忘变成曲线
python3 -m labs.run --experiment mixture --seed 7
CPU 教学实现让两个领域竞争共享参数,比较阶段切换与 replay。它不是能力上限的实证证明,而是一个能算出梯度方向的缩小机制实验。先预测增加 replay 后哪个领域 loss 会升高,哪个会降低,再检查实际输出。
默认 seed=7 的实验:基础阶段 A/B MSE 约 0.322/0.331;把 A 权重调至 95% 后约为 0.003/1.186;65% A 的回放方案约为 0.142/0.587。这里 A 与 B 的目标故意冲突(y=x 与 y=-x,且没有 domain tag),用来暴露容量竞争,不能当作真实 LLM 的收益预测。
生产映射:共享标量对应一部分共享表示;阶段步数对应 token 曝光;领域 loss 对应领域 held-out 指标。真实大模型的容量、多任务迁移和优化器会使曲线更复杂,因此把实验当作排查直觉,不当作目标数据比例建议。
失败排查与交付任务
目标 loss 降低但通用退步:检查实际 replay token 与重复率,分离记忆与迁移。目标评测提升但后续 RL 没有收益:对齐 sampling budget 和 verifier,检查更高分是否来自格式或污染。阶段切换马上发散:检查 LR 时钟、Adam moments、loss 归一化与异常长度。后训练后丢失中训练收益:在相同 prompt 上回放各 checkpoint,判断是 SFT 数据覆盖不足还是 RL reward 导向变化。
工程任务:写一张阶段契约,包含 checkpoint ID、数据 manifest、tokenizer、loss mask、LR 起止、optimizer/trainer 恢复标志、目标与保留评测、停止条件。用它审读一个新模型的报告,把每一项标记为“公开”“源码确认”或“未知”。下一章 能力塑形 专门解决合成推理数据怎样进入这张契约。
把这一章放进实验里
调整变量,观察机制,再运行本地 Python 实验验证。
本章证据与源码
引用代表相应来源支持的结论,不意味着公开了完整训练配方。
论文实验Qwen3 Technical ReportQwen Team · arXiv:2505.0论文实验DeepSeek-V3 Technical ReportDeepSeek-AI · arXiv:2412.1源码观察OLMo 3 7B:官方 Midtraining 配置与恢复语义allenai · 0589a034f721源码观察OLMo 3 7B:官方预训练第二阶段配置allenai · 0589a034f721论文实验2 OLMo 2 FuriousTeam OLMo / Ai2 · arXiv:2501.0论文实验Olmo 3Team Olmo / Ai2 · arXiv:2512.1源码观察OLMo-core:数据源比例与重复上限allenai · 0589a034f721论文实验MiMo-V2.6 Technical ReportXiaomiMiMo · 5711b2681699留下你的工程判断
记录一个还没有解释清楚的现象,或下一次实验要控制的变量。笔记仅保存在当前浏览器。
自动保存在本机 · 可在“我的学习笔记”导出