Mid-train 技术综述与落地手册:面向有 post-train 经验的基模团队
资料范围:近两年公开资料;同一模型家族优先最新一版,最多看上一版,更老版本只在有不可替代证据时保留 目标读者:有 post-train 经验、准备承担 mid-train 的基模团队;也适合 Model / Data / Training / Eval / Post-train DRI 协作使用 结论性质:技术研究与工程参考,不构成任何商业或投资建议
使用导航 / 主线地图
这篇文章不是必须从头读的文献综述,而是一套 gate-driven 启动手册。若今天要开 mid-train 启动会,先读 0.2、0.3、8、9;若要设计数据和实验,读 4.2-4.6、6、11;若训练已经出事故,直接读 7;若要核查公开资料和引用边界,读 2、3、12。
主线只有一条:先证明目标值得 mid-train,再证明数据和评估可信,再证明短程训练有效,最后证明 post-train 后收益仍保留。
| 决策问题 | 主要证据 | 对应章节 | 产出 |
|---|---|---|---|
| 是否真的需要 mid-train | 目标能力、不可牺牲能力、替代方案排除 | 0.1、1、8.0 | Mid-train charter |
| 公开资料能支持到哪一步 | 报告事实、工程类比、不可外推边界 | 2、3、12 | claim/source matrix |
| 第一轮验证什么 | 主假设、数据桶、不可同时改变的变量 | 4.0、4.4、11 | ablation plan |
| 数据能不能进训练 | data manifest、license、污染、合成数据治理 | 4.2、7.3、9.1 | data readiness memo |
| checkpoint 是否值得继续 | scorecard、guardrail、事故记录、Pareto 曲线 | 5、6、7、8.0 | extend / rollback / kill 决策 |
| post-train 后是否保留收益 | frozen paired protocol、seed、AUC、raw outputs | 6.6、7.6、8.0 | post-train readiness report |
| 是否放大 | go/no-go memo、model registry、成本收益 | 8、9、13 | scale / shrink / stop 决策 |
0. 摘要
Mid-train 不是 post-train 的放大版,也不是简单把 pretrain 再跑一段。 本文采用一个保守的工程定义:
Mid-train 是 base pretrain 后、SFT/RL 等 post-train 前的一段受控继续训练,用来改变模型的能力分布、上下文适应能力,以及后续 SFT/RL 可利用的可训练性。
公开资料中,OLMo 2 明确把 base pretraining 之后、post-training 之前的阶段称为 mid-training;Qwen3、DeepSeek-V3、Qwen2.5-1M 等报告并不总使用这个词,而是称为 pre-training、continued pre-training、context extension 或 long-context pre-training。本文只在工程意义上把这些阶段归入 mid-train-like 范畴,不能等同于原报告术语。
资料选择上,本文不做模型历史复盘。每个模型家族优先读最新一版公开技术报告;只有当上一版披露了当前版本没有替代的信息,例如 1M context、显式 mid-training 命名、annealing 或 synthetic data 细节时,才保留上一版或必要例外。执行项目时,应先用目标模型家族的最新报告替换本文中的历史样本。
实践上,新团队不应先追大规模训练,而应先做小模型 ablation、数据桶验证、污染检查、base 回归评估,再用主模型短程训练验证方向,并用固定 post-train recipe 检验收益是否保留。Mid-train 的成功标准不是某个 base benchmark 上涨,而是能力增强、遗忘可控、post-train 后收益仍存在。
边界上,本文不把所有 continued pretraining 都等同于 mid-train,也不把 DCA、YaRN、sparse attention、chunked prefill 等推理或架构技巧简单归为训练配方。公开案例只能作为设计参考,不能照搬为 recipe。
文中的数据比例、token budget、90 天路线图、质量门和事故 runbook 均为面向新团队的工程起步建议,不是公开论文直接给出的通用结论。
对一个有 post-train 经验、准备承担 mid-train 的基模团队,最重要的不是立刻上大规模训练,而是先建立四件事:
- 明确目标能力和不可牺牲能力:例如数学提升不能以通用对话、事实知识、多语能力大幅退化为代价。
- 做小模型和短程 ablation:先验证数据桶、学习率、序列长度、污染控制和遗忘风险。
- 建立 mid-train 专用评估:不能只看 pretrain loss,也不能只看 post-train 后的榜单。
- 让 Post-train DRI 接力验证:mid-train 的成功标准之一,是 SFT/RL 后收益仍能保留、训练更可控,而不只是 base checkpoint 某几个 zero-shot 分数更好。
0.1 读者决策树:你到底该做哪类 mid-train
| 目标 | 优先路线 | 第一轮实验 | 关键评估 | 不建议一开始做 |
|---|---|---|---|---|
| 数学、代码、STEM、复杂 QA | Capability mid-train | 小模型数据 mix + 低 LR 短程训练 | 目标能力提升 + 通用能力回撤 | 同时拉长到 128K/1M |
| 32K/128K 长上下文 | Context extension | 逐步长度扩展 + 长文档数据桶 | 多证据、长文档、长代码任务 | 只看 needle-in-a-haystack |
| RL reasoning 上限 | Reasoning substrate mid-train | 验证 base 是否已有 edge-of-competence | 固定 RL/RLVR recipe 接力对比 | 把 RL 当成能力来源本身 |
| 垂直领域能力 | Domain continued pretraining | 低比例领域数据 + 通用保真数据 | 领域任务 + 通用回归 | 用单一领域语料灌满训练 |
| Coding agent / tool use | Code/FIM/trajectory mid-train | FIM、repo-level completion、多文件定位 | repo task、编辑任务、post-train 后 agent eval | 把交互格式全部前移到 mid-train |
这个决策树是执行入口,不是排他分类。一个成熟项目最后可能同时包含 capability shaping、long-context adaptation 和 post-train readiness,但第一轮最好只验证一个主假设。
0.2 第一天怎么启动
如果今天就要启动 mid-train 项目,不要先开训练。第一天只做 7 件事:
- 拉齐 Model、Data、Training Infra、Eval、Post-train、Safety/Compliance、Product/Domain 的 DRI。
- 写一页 Mid-train charter:目标能力、不可牺牲能力、为什么必须在 mid-train 做、预算边界。
- 冻结 eval registry 的 v0 owner 和 schema;训练前再冻结 v1 eval registry,包括 base eval、专项 eval、长上下文 eval、私有 holdout、人工样例审查。没有 v1,不进入 Gate 1。
- 让 Post-train DRI 冻结 paired protocol 的 v0 owner 和 schema;训练前再冻结 v1 paired protocol,包括 SFT/RL 数据版本、训练预算、seed、harness、评估集和失败判定。
- 创建实验台账 schema,规定没有台账的实验不进入结论。
- 定义 Gate 0-5 的通过条件、阻断条件和签字人。
- 明确第一周不允许做什么:不边看私有 holdout 边调参,不在同一个实验 ID 下改 mix/过滤器/eval 版本,不把 proxy 成功当成主模型必然成功。
0.3 如何使用本文:按角色和任务跳读
这篇文章可以从头读,也可以当内部手册查。第一次启动 mid-train 项目时,建议按角色分工阅读:
| 角色 | 先读章节 | 需要带走的产出 |
|---|---|---|
| Decision owner / Model Lead | 0、1、4.6、8、11 | 项目是否该做、目标能力、不可牺牲能力、Gate 0-5 决策口径 |
| Data DRI | 4.2、4.2.1、4.2.2、7.3、9.1 | 数据桶准入卡、data manifest、污染检查、合成数据边界 |
| Training Infra DRI | 4.3、4.5、5、7.4 | 训练旋钮冻结项、context curriculum、checkpoint lineage、resume runbook |
| Eval DRI | 6、7.5、9.3、12.3 | eval registry、scorecard、holdout 分层、claim/source 边界 |
| Post-train DRI | 1.2、6.6、7.6、8 | paired protocol、seed/预算/harness、收益保留判断 |
| Safety / Product / Domain DRI | 0.1、4.1、6.3、7.1、10 | 不可牺牲能力、guardrail、真实任务、发布阻断条件 |
如果只开一次 90 分钟启动会,会议不要讨论“大概要训多少 token”,而是按下面顺序收敛:
| 时间 | 问题 | 退出条件 |
|---|---|---|
| 0-15 分钟 | 目标能力是否真的需要 mid-train | 写出 1 个主目标和 3-5 个不可牺牲能力 |
| 15-35 分钟 | 第一轮只验证哪一个假设 | 明确 capability / context / domain / reasoning substrate 中的主线 |
| 35-55 分钟 | 数据、eval、post-train paired protocol 是否能冻结 | 确认 data manifest、eval registry、post-train paired protocol owner |
| 55-75 分钟 | Gate 0-2 的 kill 条件是什么 | 写出污染、回撤、事故、post-train 不保留收益的阻断线 |
| 75-90 分钟 | 本周交付物和不开工条件是什么 | 形成 charter、台账、责任人和第一周 no-go 清单 |
1. 术语边界:什么是 mid-train
1.1 一个实用定义
本文采用工程定义,而不是术语洁癖式定义:
Mid-train 是 base pretrain 后、post-train 前的继续训练阶段。它仍主要使用语言建模目标或其变体,但数据、学习率、序列长度和能力目标已经从“最大覆盖世界文本”转向“高质量能力塑形”。
这一定义覆盖几类公开实践:
- late-stage pretraining / annealing:在较低学习率下,用高质量数据继续训练,追求更低损失和更强下游能力。
- domain / capability continued pretraining:围绕代码、数学、STEM、医学、法律、金融、多语等能力继续训练。
- long-context extension:在原 base context 上扩展到 32K、128K、256K 等,配套位置编码、attention 优化和长文档数据;若目标是 1M 级上下文,应单独验证训练长度、位置/attention 外推、chunked prefill、KV cache 和 serving 成本,不能写成单纯继续训练或数据配方。
- reasoning-oriented mid-train:用数学、代码、合成推理、教材式数据、QA/CoT 等让 base model 更适合后续 RL 或 RLVR。
Mid-train 和 continued pretraining 有重叠,但强调点不同:continued pretraining 描述“训练从哪里接着跑”;mid-train 更强调“为什么跑、用什么数据塑形、如何服务 post-train”。
1.2 它和 post-train 的分工
Post-train 团队容易把 mid-train 想成“更多 SFT 数据”或“更早一点的 SFT”。这是危险的,因为两者优化对象不同。
Mid-train 关注:
- 模型内部是否有解决问题所需的知识、算法模式和表征能力。
- 长上下文中位置编码、attention、检索和跨段归纳是否可用。
- 代码、数学、工具轨迹、复杂指令的基础分布是否进入模型参数。
- 后续 SFT/RL 是否更容易把能力激发出来。
Post-train 关注:
- 指令遵循、回答风格、安全拒答、偏好排序。
- 多轮对话和用户意图对齐。
- 推理过程是否外显、是否符合产品策略。
- RL/RLHF/RLAIF/RLVR 中的 reward 可优化行为。
粗略说,mid-train 更偏向改变能力可达性和参数内分布,post-train 更偏向改变任务接口、行为策略和产品呈现;但在 reasoning、tool use、agent 和长上下文任务上,两者会交叠,必须用 paired protocol 判断收益来自哪里。
1.3 不宜把所有训练都叫 mid-train
本文不把以下情况简单归为 mid-train:
- 从零开始的大规模通用预训练。
- 单纯为了对齐、安全或格式的 SFT。
- 只在 post-train 数据上继续跑语言建模,但没有能力目标、数据控制和回归评估。
- RAG、外部工具、推理时 search 等不改变模型参数的系统工程。
边界要清楚,否则团队会用 post-train 的评估和组织方式管理 mid-train,最后很难判断收益来自哪里。
1.4 给有 post-train 经验的基模团队的 10 条差异认知
- Mid-train 的对象是能力分布,不是回答风格。
- Mid-train 的主损失通常仍接近语言建模目标,不是偏好优化。
- Mid-train 数据可以包含 QA/CoT/FIM,但不要把 SFT 数据整体前移。
- Mid-train 的好 checkpoint 不一定是 loss 最低 checkpoint,而是能力提升和遗忘之间的 Pareto 点。
- Mid-train 的收益必须在 base eval 和 post-train readiness 中同时观察。
- 数据污染在 mid-train 中比 SFT 更危险,因为它会进入 base 能力判断。
- 合成数据要先被验证和分层,不应因为”便宜”而提高比例。
- 长上下文能力要区分训练长度、推理外推长度和线上可服务长度。
- RL 的收益通常依赖 base 已有可达能力区间,不能把所有 reasoning 问题推给 RL。
- 放大训练前必须有停止条件;mid-train 不是”预算还没花完就继续跑”。
2. 公开证据强弱分层
公开材料不完全一致,最容易出错的地方是把“报告明确写出的训练阶段”“研究者的归纳”和“访谈里的行业经验”混为一谈。本文按证据强弱和模型版本新旧两条线使用资料:同一模型家族优先最新一版,最多上一版;更早材料只在有不可替代证据时作为例外。
2.0 本文的证据标签
为避免把公开事实和工程推断混在一起,后文默认使用四类证据标签:
| 标签 | 含义 | 能用于什么 | 不能用于什么 |
|---|---|---|---|
| 报告事实 | 技术报告、论文或官方材料直接披露的阶段、token、context、数据类型、训练目标 | 描述某团队实际做了什么 | 推出其它团队应照搬同一配方 |
| 论文归纳 | 综述或受控实验给出的机制、taxonomy、变量关系 | 设计内部 ablation、建立假设 | 直接升级为产业级训练定律 |
| 工程归纳 | 本文基于多个案例抽出的保守实践建议 | 制定项目流程、gate、台账和风险控制 | 声称是某篇报告原文结论 |
| 待验证假设 | 访谈、博客、行业口径或小样本实验启发的方向 | 进入小模型/短程实验候选 | 进入主模型放大决策 |
读者在使用本文时,应把“报告事实”当作事实底座,把“论文归纳”和“工程归纳”当作实验设计输入,把“待验证假设”当作 backlog。任何会消耗大规模训练预算的决策,都应回到团队自己的 data manifest、eval registry 和 post-train paired protocol。
2.1 强证据:技术报告明确披露的阶段设计
强证据指模型团队在技术报告中直接披露的训练阶段、token 规模、上下文长度或数据策略。
| 案例 | 使用级别 | 报告原术语 | 公开报告直接支持 | 本文工程类比 |
|---|---|---|---|---|
| Qwen3 | 主读 | pre-training stages | General / Reasoning / Long Context 三个 pre-training stage;约 36T 总量、约 5T reasoning-stage tokens、32K 长上下文训练 | mid-train-like capability shaping + context adaptation |
| DeepSeek-V3 | 主读;有同家族新报告时替换 | long context extension | 14.8T base pre-training 后,使用 YaRN 做两段各 1000 steps 的 4K -> 32K -> 128K context extension | mid-train-like long-context extension,但主要支持长度阶段化结论 |
| GLM-4.5 | 主读 | mid-training | 23T pre-training 后约 1.1T mid-training tokens,显式分三个子阶段:repo-level code(~500B,4K→32K)、synthetic reasoning(~500B)、long-context + agent(~100B,→128K);MoE 355B/32B | 显式 mid-training 命名 + 多子阶段能力塑形 + 渐进式 context extension;MoE 架构下 mid-train 的参考样本 |
| Qwen2.5-1M | 上一版专项保留 | long-context pre-training / post-training / inference scaling | progressive long-context pre-training、长上下文 post-training、DCA/YaRN 外推、稀疏注意力和 chunked prefill 部署优化 | context adaptation + inference/deployment 协同样本 |
| OLMo 2 | 必要例外 | mid-training | pretraining -> mid-training -> instruction/preference tuning 的清晰分层;Dolmino Mix、50B/100B/300B、micro-annealing 等细节较透明 | 狭义 mid-training 的公开参考样本 |
| Phi-4 | 必要例外 | pretraining / midtraining / post-training | 合成数据贯穿 pretraining/midtraining/post-training;midtraining 明确把 4K context 扩到 16K | synthetic-heavy training strategy + context extension 边界样本 |
| Llama 3 | 降级参考 | initial pre-training / long-context pre-training / annealing | 405B 在 15.6T tokens 上 initial pre-training,约 800B tokens long-context pre-training 到 128K,最后 40M tokens annealing | late-stage continued pre-training 和 annealing 的保守参考 |
这些报告能支撑“阶段设计”的存在,但通常不能支撑“照搬数据比例或学习率”。未公开的 tokenizer、数据清洗、采样策略、基础 checkpoint 状态、优化器状态和系统实现,都会显著影响结果。
2.2 中证据:综述和受控实验的归纳
Mid-training survey、PRISM 以及 pre-training / mid-training / RL interplay 这类研究能帮助团队理解变量关系:数据保留与能力迁移、能力是否位于模型可达边界、RL 是否能从 mid-trained checkpoint 获益等。
这些研究的价值是提出机制假设和实验维度,而不是给出可直接外推的产业配方。尤其是受控 synthetic task 或小规模模型上的结论,不能直接升级成“所有大模型训练定律”。
2.3 弱证据:访谈、博客和行业口径
访谈和博客通常能提供两类信息:术语如何被从业者使用,以及团队如何描述训练阶段的组织逻辑。但这类资料常常省略失败实验、数据细节和工程约束,所以只能作为趋势背景,不能作为硬事实。
如果访谈声称某个阶段“非常重要”,本文会把它当作待验证假设;只有技术报告、可复现实验或团队内部 ablation 支持后,才进入训练决策。
2.4 从公开资料抽出的保守共识
第一,mid-train-like 阶段通常发生在 base 能力形成之后、post-training 之前。Qwen3、DeepSeek-V3、GLM-4.5 是主读样本;Qwen2.5-1M、OLMo 2、Phi-4、Llama 3 分别作为上一版专项、必要例外或降级参考。其中 GLM-4.5 和 OLMo 2 显式使用 mid-training 术语,GLM-4.5 进一步把 mid-training 拆成 code / reasoning / long-context 三个子阶段,是目前公开报告中子阶段拆分最细的样本。
第二,在 Qwen3、OLMo 2、Phi-4、Llama 3 等案例中,late-stage / continued pre-training 往往伴随更强的数据筛选、能力定向采样或高质量数据上调;但 DeepSeek-V3 这类 context extension 案例主要支持阶段化长度扩展,不直接支持数据配比结论。更稳妥的说法是:晚期 token 的边际价值更依赖质量、配比和训练目标,而不是简单追加 web tokens。
第三,长上下文不是只改 RoPE scaling。真实长上下文能力需要训练数据、长度 curriculum、位置/注意力机制、推理框架和评估任务共同成立。DCA、YaRN、sparse attention、chunked prefill 等技术要区分其作用位置:有些影响训练可行性,有些主要服务推理外推和部署成本。
第四,reasoning mid-train 更适合作为“提高 RL 可用 substrate”的强工程假设,而不是已被证明的普遍定律。较保守的说法是:如果 base/mid-trained checkpoint 对目标任务完全没有可解性,RL 通常很难稳定地产生能力;但 RL 是否带来真实能力增益,还取决于 pretraining 暴露、任务是否位于模型能力边界、reward 设计和探索预算。
第五,合成数据有价值,但不是免费午餐。Phi-4 说明 synthetic data 可以显著影响 reasoning 表现,也提醒团队仍需要有机数据来补世界知识、表达多样性和真实分布。
第六,透明的实验台账比单点榜单更重要。OLMo 2 这类报告的最大价值之一,是把 pretraining、mid-training、post-training 和数据构成分开描述,帮助后来团队建立自己的 lineage、分桶 loss 和回归评估。
第七,公开报告能证明“某些成熟团队采用了阶段化 late-stage training”,但很少能证明“某个数据比例、学习率或 token budget 是通用最优”。本文后续所有 recipe 表都应读作搜索空间和质量门,而不是从某个模型报告复刻出的配方。
3. 公开案例能证明什么,不能证明什么
本章不是模型报告复述,也不是 recipe 来源。案例只用于回答“哪些公开事实能转成内部检查项”,并遵循版本筛选规则:同一模型家族优先最新一版,最多上一版;更早样本必须写明保留理由。
| 案例 / 资料 | 使用级别 | 为什么保留 | 可安全归纳 | 不得推出 | 内部验证动作 |
|---|---|---|---|---|---|
| Qwen3 | 主读:当前/最新公开技术报告样本 | 披露 General / Reasoning / Long Context 三阶段 pre-training | capability shaping 和 context adaptation 可分目标管理 | 原报告自称 mid-training,或完整数据配比可反推 | 把能力与长上下文实验拆成不同 experiment_id |
| DeepSeek-V3 | 主读:DeepSeek-V 系列公开 base report 样本;若后续同家族新报告披露同类细节,应替换 | 披露 14.8T base pre-training 后的 32K/128K context extension,并强调架构/系统协同 | 长上下文必须同时验证训练、架构、serving、eval | context extension 等于普通数据继续训练 recipe | 做 offline/online 长上下文一致性和短任务回归 |
| GLM-4.5 | 主读:GLM 家族最新公开技术报告样本 | 显式使用 mid-training 术语,披露 ~1.1T tokens 的三子阶段(repo-level code / synthetic reasoning / long-context + agent),渐进式 4K→32K→128K context extension | mid-training 可按能力目标拆成多个子阶段独立管理;合成推理数据和 agent 轨迹数据可在 mid-train 阶段注入 | GLM-4.5 的 MoE 架构、子阶段 token 比例或专家路由策略直接适合 dense model | 按子阶段拆 experiment_id;MoE 需额外监控路由熵和专家负载 |
| Qwen2.5-1M | 上一版专项保留 | Qwen3 不替代其 1M context 训练、外推和部署细节 | 训练长度、推理外推、部署成本和真实任务要分开验收 | 直接 mid-train 到 1M,或纯推理技巧即可 | 分开记录 training length、serving config、latency/cost 和真实长任务 |
| OLMo 2 | 必要例外 | 明确使用 mid-training 术语,且披露数据混合、micro-annealing、post-training 分层 | mid-train 可独立管理并保留 lineage/eval gate | OLMo 2 的 Dolmino mix、token 数适合其它模型 | 建立 checkpoint lineage、mid-train scorecard、post-train 前评估 |
| Phi-4 | 必要例外 | 披露 synthetic data for pretraining and midtraining,且显式 midtraining 承担 4K -> 16K context 扩展 | 合成数据要有 verifier、风格多样性和有机数据兜底 | reasoning 增益可精确归因到“合成 CoT mid-train” | 建立 synthetic bucket 验证、模板重复率和人工错误率 |
| Llama 3 | 降级参考 | 仅在需要 late-stage continued pre-training、long-context pre-training、annealing 的公开细节时阅读 | late-stage 收敛需绑定高质量数据、LR、checkpoint 选择 | Llama 3 token budget 或 annealing recipe 是小团队默认值 | 把 annealing 当搜索变量,不当默认动作 |
| PRISM / pre-mid-RL 研究 | 机制假设,不属于模型版本线 | 用受控实验提出 retention、interaction、RL substrate 问题 | 机制假设可进入 proxy ablation | 可升级成产业大模型定律 | 用 paired SFT/RL protocol 验证收益保留 |
这张表的使用方式很简单:先读主读样本;只有当前模型报告没有覆盖某个关键问题,才读上一版或必要例外。若目标团队做的是某个特定模型家族,例如 Qwen、DeepSeek、Llama 或自研模型,内部资料包应优先替换成该家族最新报告,再保留最多一份上一版作为对照。
旧版本案例只保留三种情况:第一,它提供当前版本没有的术语或治理结构,例如 OLMo 2 的 mid-training 分层;第二,它提供专项能力的关键工程拆解,例如 Qwen2.5-1M 对 1M context 的训练/外推/部署拆分;第三,它提供一个仍未被新报告替代的受控变量,例如 Llama 3 的 annealing 或 Phi-4 的 synthetic data 边界。除此之外,旧模型不要进入主读清单。
4. Mid-train 的设计框架
本章先按第一轮最小闭环来读:Gate 0 冻结目标能力、不可牺牲能力、eval registry 和 post-train paired protocol;Gate 1 冻结 data manifest;Gate 2 用 control mix + 3-5 个单变量变体在 proxy scale 排除坏方向;Gate 3 用 target model 短程训练寻找能力/遗忘 Pareto checkpoint;Gate 4 用同一套 frozen post-train paired protocol 验证收益是否保留。4.1-4.6 分别解释这个闭环中的目标、数据、训练旋钮、ablation、curriculum 和组织质量门。
一个可执行的 mid-train 项目,最终应回答五个问题:目标能力是什么,哪些能力不能退化,能力由哪些数据桶驱动,训练长度/学习率/context curriculum 如何设置,以及如何证明它对 post-train 有帮助。
4.0 第一轮最小闭环
第一次做 mid-train 时,不要先设计完整训练系统。这里的“最小闭环”不是最小训练配方,而是最小证据链:用尽可能小的实验代价验证数据、训练、评估和 post-train 接力是否能形成可解释结论。先跑通一个目标、一个主假设、一组数据桶、一套 eval registry、一个短程训练窗口、一个 frozen post-train paired protocol。
| 闭环环节 | 只回答一个问题 | 最小证据 | 失败就回到哪里 |
|---|---|---|---|
| 目标 | 为什么必须 mid-train | 目标能力、不可牺牲能力、替代方案排除 | 回到 charter,改目标或不做 mid-train |
| 数据 | 哪个桶可能驱动目标能力 | data manifest、污染检查、linked eval、人工样例 | 回到数据桶准入卡 |
| 训练 | 低风险短程是否出现方向性收益 | 固定 LR/mix/context 的 checkpoint 曲线和分桶 loss | 回到训练旋钮或数据 mix |
| 评估 | 收益是否不是公开榜单或格式假阳性 | private holdout、raw output、人工审查、scorecard | 回到 eval registry |
| 接力 | post-train 后收益是否保留 | paired SFT/RL protocol、seed、AUC、失败样例 | 回到 post-train recipe 或 mid-train 目标 |
| 决策 | 是否 extend / rollback / kill | Gate dashboard、evidence_path、owner 签字 | 回到对应 gate |
第 11 章给出的是这个闭环的一组示例搜索网格,不是默认配方。第 4 章先讲设计对象,第 6-8 章讲如何判断证据,第 11 章才给可执行起步样例。
4.1 能力目标分层
建议把目标分成四层:
第一层:通用 base 保真
- 通用语言建模 loss 不异常上升。
- 常识、事实、多语、基础指令理解不明显退化。
- 多轮对话虽然不是 mid-train 主目标,但基本可读性不能崩。
第二层:核心能力增强
- 数学:GSM8K、MATH、AIME 类,以及内部可验证题库。
- 代码:HumanEval、MBPP、EvalPlus、repo-level completion、FIM、多文件定位等;SWE-bench 更适合在固定 harness、轻量 instruction wrapping 或 post-train readiness 阶段使用。
- STEM:GPQA、MMLU-Pro、领域题库。
- 推理:BBH、ARC、逻辑推理、复杂 QA。
第三层:结构能力
- 长上下文检索、综合、冲突消解。
- FIM、代码补全、多文件编辑。
- 表格、日志、长 PDF、长会议纪要理解。
第四层:post-train readiness
- SFT 后是否更容易学会目标格式。
- RL/RLVR 后是否更稳定提升。
- reward hacking 是否减少。
- 推理轨迹是否更可控。
4.2 数据桶设计
建议至少建立以下数据桶:
| 数据桶 | 目标 | 主要风险 | 建议控制 |
|---|---|---|---|
| 高质量 web / book | 保持通用语言与世界知识 | 噪声、重复、版权/合规 | 去重、质量分类、采样上限 |
| 代码 | 编程能力、形式化结构 | license、重复、benchmark 泄漏 | license 过滤、repo 去重、题库隔离 |
| 数学 / STEM | 推理与符号能力 | 过拟合竞赛题、解答错误 | 可验证题、难度分层、proof/answer 校验 |
| 合成教材 | 概念压缩、教学式推理 | 风格单一、teacher 错误 | 多 teacher、多模板、验证器过滤 |
| QA / CoT | 推理轨迹和任务格式 | 把 post-train 行为提前固化 | 控制比例,保留自然文本 |
| 长文档 | 长上下文适应 | 空洞 padding、低效 token | 真实长文档 + 合成长任务 |
| FIM / 代码编辑 | coding agent 能力 | 破坏普通 LM 分布 | 分桶 loss 和代码 eval |
| 领域数据 | 行业/产品能力 | 灾难性遗忘、狭窄化 | 低比例混入,通用回归 |
不要只做一个全局 mix。每个桶要有:
- 数据来源和 license 记录。
- 去重策略。
- 质量打分。
- contamination 检查。
- 采样比例。
- 单独 loss。
- 对应 eval。
4.2.1 数据桶准入卡
每个数据桶进入训练前,都应先进入 data manifest,而不是直接进入 mix。最小字段如下:
| 字段 | 说明 |
|---|---|
bucket_id / bucket_name |
数据桶编号和名称 |
source_manifest |
原始来源、时间范围、license / 合规状态 |
processing_commit |
清洗、解析、过滤脚本版本 |
dedup_version |
文档级、段落级、代码 repo 级、题目级去重版本 |
contamination_version |
与 public benchmark、private holdout、合成 prompt 的污染检查版本 |
tokenizer_version |
tokenizer 和 special tokens 版本 |
quality_score_distribution |
质量打分分布,不只写平均分 |
language_domain_distribution |
语言、领域、文件类型、长度分布 |
time_distribution |
数据时间范围、新旧分布、是否包含训练后新事件 |
sampling_weight |
当前 mix 中采样权重和上限 |
shuffle_seed / bucket_interleaving |
数据顺序、bucket 交织策略、是否阶段性改 mix |
bucket_validation_loss |
分桶 validation loss 和异常变化 |
linked_eval_id |
对应 eval registry 中的评估项 |
known_risks |
license、污染、模板化、重复、事实错误、分布过窄 |
数据桶准入门建议写成硬规则:
[!CAUTION] - 没有 manifest/hash,不进入训练。 - 没有对应 eval,不提高采样权重。 - 污染命中未处理,不进入 primary 实验。 - 合成数据没有正确性过滤和风格多样性检查,不超过低比例探索。 - 领域数据没有通用回归保护,不进入主模型短程。 - 长上下文数据只有拼接文本、没有真实长任务,不进入 long-context primary mix。 - 任何改过滤器、质量模型、dedup 阈值、采样权重、合成生成 prompt 或数据顺序的动作,都必须生成新的
data_manifest_hash和experiment_id。
4.2.2 合成数据使用边界
合成数据需要单独治理,因为它最容易在短期指标上“看起来很有效”:
| 风险 | 表现 | 控制方式 |
|---|---|---|
| Teacher 错误放大 | 数学/代码答案看似流畅但不可验证 | 可执行验证、答案校验、抽样人工复核 |
| 风格模板化 | 输出都像同一个 teacher,推理步骤固定 | 多 teacher、多 prompt、多解法、混入有机数据 |
| Benchmark 近似污染 | 公开题变体大量出现 | 题干、解法结构、embedding 和 translated duplicate 检查 |
| 难度分布失真 | 训练题过简单或只覆盖一种题型 | 难度分桶、失败样例回灌、私有 holdout 对照 |
| CoT 行为前移过度 | base 模型过早学会冗长解释格式 | 控制 CoT 比例,混入短答、无 CoT、自然文本 |
合成数据的合理用法是”可验证能力放大器”,不是低成本 token 替代品。数学、代码、结构化推理适合多用可验证合成;开放域知识、语言风格、多语表达仍需要高质量有机数据兜底。
不同合成数据类型的边界也不同:
| 合成数据类型 | 适合用途 | 不适合用途 | 必须检查 |
|---|---|---|---|
| 可验证数学/代码 | 提高符号推理、可执行解题、单元测试能力 | 替代开放域知识 | verifier、答案执行、难度分桶 |
| 教材式解释 | 压缩概念、补齐知识结构 | 大比例替代自然语料 | teacher 多样性、表达模板、事实抽检 |
| CoT / rationale | 提供推理轨迹形式 | 让 base 过早固化冗长回答风格 | CoT 占比、短答混入、风格漂移 |
| 长上下文合成任务 | 覆盖稀缺长任务模式 | 替代真实长文档和长代码 | 证据位置、干扰信息、不可回答样本 |
| 领域合成 QA | 补足领域任务形态 | 替代真实领域文档 | 专家抽检、来源追踪、术语一致性 |
Synthetic bucket 还必须记录 teacher model/version、生成 prompt、采样参数、verifier 版本、过滤规则、被拒样本比例、模板重复率、答案可验证率、人工抽检错误率,以及生成器是否读过 eval/benchmark。合成 CoT/QA 要额外检查 style entropy、template n-gram 和 response length distribution,避免把 post-train 行为格式提前固化。
4.3 学习率和 token budget
公开报告通常不会完整给出所有细节,但工程上有几条稳健原则。
第一,mid-train 通常不应使用接近 pretrain 初期的高学习率。模型已经形成大量通用能力,过高学习率会导致遗忘、风格漂移和 loss spike。
第二,学习率策略要和目标匹配:
- 短程能力增强:低学习率继续训练,观察专项能力和通用回归。
- late-stage annealing:进一步降低学习率,用高质量数据收敛。
- context extension:学习率更保守,并配合长度 curriculum。
- domain adaptation:更要限制 token budget 和数据比例,避免模型变窄。
第三,token budget 不是越大越好。下面三档只是启动实验的保守刻度,不按模型规模线性通用,也不能替代 scaling ablation:
- 1B-10B tokens:用于 pipeline、数据质量、LR、污染检查和 proxy ablation。
- 10B-100B tokens:作为可观察能力增强和中小模型 recipe 验证的示例区间,实际预算要由模型规模、数据质量和 gate 结果决定。
- 100B-1T+ tokens:才适合主模型较完整的 capability shaping 或 long-context extension。
以上不是行业定律,而是工程上较保守的起步刻度。真正 token budget 应由模型规模、数据质量、目标能力和预算共同决定。
4.3.1 配方旋钮与不可同时改变原则
训练变量也要像数据和 eval 一样冻结版本。每次 run 至少记录:
| 变量 | 为什么要冻结 | 常见误判 |
|---|---|---|
base_checkpoint_hash |
决定起点能力和已有数据暴露 | 把不同 base 的差异误判成 mid-train 收益 |
optimizer_state_strategy |
接续或重置会改变 loss 曲线和稳定性 | 重置后 warmup 不足导致假性退化 |
lr_schedule / warmup |
影响遗忘、收敛和 loss spike | 只比较最终分数,不比较训练稳定性 |
peak_lr / min_lr / decay_shape |
决定实际优化轨迹 | 都叫“低 LR”,但训练动态完全不同 |
gradient_clipping / precision |
影响稳定性和数值误差 | 把数值不稳误判成数据 mix 问题 |
global_batch / microbatch |
改变有效 batch 和训练噪声 | 小 batch 噪声被误判成能力波动 |
sequence_length_distribution / length_bucket_ratio |
改变有效 token 分布和训练动力学 | 把长度变化带来的收益归因给数据 mix |
data_order / shuffle_seed |
curriculum、annealing、长上下文阶段对顺序敏感 | 同一 mix 不同顺序得出相反结论 |
packing_policy / masking_policy |
影响 FIM、长文档和短样本比例 | 短任务退化但全局 loss 正常 |
checkpoint_selection_policy |
决定最终比较对象 | 事后挑最佳 checkpoint 夸大收益 |
eval_cadence |
决定何时发现遗忘和漂移 | 训练结束才发现不可逆回撤 |
Scale-up 也要保守。Proxy 成功只能说明某个方向值得继续,不说明目标规模必然成功。进入更大训练前至少满足四个条件:
- 两个 scale 或 target 短程 run 的方向一致。
- 分桶 loss、目标 eval、base regression 的变化能被同一个数据/训练假设解释。
- 相同 mix 下不同 seed 不反转,训练吞吐、checkpoint resume 和监控已经验证。
- 成本上可接受:如果放大 10 倍 token 后只可能换来边际小幅收益,就应先改善数据或 eval,而不是加预算。
一次实验不要同时改太多旋钮。建议把常见旋钮拆开看:
| 旋钮 | 可调方式 | 主要风险 | 观测信号 | 何时停止 |
|---|---|---|---|---|
| LR / warmup | 低 LR、进一步降低、短 warmup sweep | 遗忘、loss spike、收敛过慢 | 全局 loss、分桶 loss、梯度范数 | spike 不恢复或保真指标快速下跌 |
| Token budget | 递增短程预算 | 浪费预算、过拟合窄分布 | checkpoint 间 delta、Pareto 曲线 | 边际收益消失或回撤扩大 |
| Sequence length | 逐步拉长长度分布 | 长训伤短任务、吞吐下降 | 长度分桶 loss、短任务回归 | 短任务显著退化或 serving 成本不可接受 |
| Batch / packing | 改 packing、混长短样本 | 有效数据分布改变 | 吞吐、padding、短样本 loss | 全局 loss 正常但分桶异常 |
| Optimizer state | 接续或重置 | 继承动量或 warmup 不足 | early loss、梯度、resume 连续性 | early instability 无法解释 |
| Synthetic ratio | 逐步增加上限 | 模板化、teacher 错误放大 | 私有 eval、风格审查、失败样例 | 风格坍缩或私有集不涨 |
| Domain ratio | 低比例混入 | 模型变窄、通用能力退化 | 通用回归、领域私有任务 | 领域涨幅小于通用回撤代价 |
4.4 第一轮 ablation 设计表
第一轮不要追求“最好配方”,而要快速排除错误方向。下表中的比例只是搜索变量示例,用来暴露灵敏度和坏方向,不能作为主训练默认 mix。
| 实验目的 | 模型规模示例 | Token budget 示例 | 数据 mix 搜索变量示例 | LR 变量 | 成功指标 | 停止条件 |
|---|---|---|---|---|---|---|
| Pipeline 和 eval 校准 | proxy model,例如 1B/3B | 1B-3B tokens | 小样本全桶 mix | 低 LR 单点 | loss 正常、eval 可复现 | loss spike、eval 不稳定 |
| 通用保真底线 | proxy model,例如 3B/7B | 3B-10B tokens | 通用高质量占比 30/50/70% | 固定低 LR | 通用能力回撤可控 | 多语/事实大跌 |
| 数学/STEM 注入 | proxy model,例如 3B/7B | 5B-20B tokens | 数学/STEM 10/20/30% | 低 LR + 更低 LR | 数学提升且通用不崩 | 只提升公开题型 |
| 代码/FIM 注入 | proxy model,例如 3B/7B | 5B-20B tokens | 代码/FIM 10/20/30% | 固定低 LR | completion/FIM/repo task 提升 | 普通生成明显代码化 |
| 合成数据占比 | proxy model,例如 3B/7B | 5B-20B tokens | synthetic 5/15/30% | 固定低 LR | 可验证任务提升、风格多样 | 模板化或污染风险 |
| 主模型短程验证 | target model | 10B-100B tokens | 候选 2-3 个 mix | 低 LR sweep | Pareto checkpoint 出现 | 目标能力不涨或遗忘过大 |
这些实验的产出不是最终模型,而是决策:哪个数据桶有效,哪个比例危险,哪个学习率区间安全,是否值得进入更长主训练。
4.4.1 如何读 ablation
Ablation 的产出是排除坏方向和形成候选 Pareto,不是证明最终配方。建议按五条规则判读:
- Proxy 成功不等于 target 成功;进入主模型前需要两个 scale 方向一致,或 target 短程 run 复核。
- 单一公开榜上涨不等于能力增强;必须和 private holdout、失败样例簇、人工审查一起看。
- Target 能力提升必须和 guardrail 一起看;数学/代码涨而多语、事实、自然生成明显跌,不算干净收益。
- 接近阈值的结果要重复 run 或相邻 checkpoint 复核;不要用一次 seed 的小幅收益做放大决策。
- 任何中途改 mix、filter、LR、长度 curriculum 或 eval 版本的实验,都必须重开 experiment_id。
4.5 Curriculum:先能力,后长度,还是并行?
建议新团队不要一开始把所有目标混在一起。
更稳的顺序是:
- Base 保真检查:确认 checkpoint、tokenizer、optimizer state、数据 pipeline、评估体系可用。
- 能力型 mid-train:数学/代码/STEM/高质量合成数据,短程 ablation。
- 长上下文适应:从较短 context 逐步拉长,单独监控长上下文 loss 和真实任务。
- 小规模 post-train 接力:用固定 SFT/RL recipe 比较 mid-train 前后 checkpoint。
- 决定是否合并为主训练配方。
为什么建议先能力后长度?因为长上下文训练成本高、debug 难,而且容易把架构和数据问题混在一起。如果模型基础 reasoning/代码能力没有改善,长上下文只是放大输入窗口,不一定放大任务能力。
也有例外:如果产品目标就是法律/金融长文档 QA 或代码库 agent,长上下文可以前置,但仍建议先在小模型上验证。
| 产品主目标 | 推荐先验 | 第一轮验证 | 反证信号 |
|---|---|---|---|
| 数学、代码、STEM、复杂 QA | 先能力,后长度 | 能力桶 + 通用保真桶短程 ablation | 目标能力只在 public benchmark 涨,private/人工样例不涨 |
| 法律/金融/科研长文档 QA | 能力和长度并行,但分两个实验 ID | 一条能力短程、一条 32K/64K context 短程 | 长上下文检索好但综合/冲突/不可回答任务差 |
| 代码库 agent / repo-level editing | 代码/FIM 与中长上下文并行 | FIM/repo task、长代码定位、短代码回归 | repo task 涨但普通代码生成或短任务明显退化 |
| 领域继续训练 | 先低比例领域,再看是否需要长度 | 领域桶 5/10/20% + 通用回归 | 领域任务涨幅小于通用能力回撤代价 |
| 长上下文展示能力 | 先确认产品价值,再做 context extension | 真实长任务、serving 成本、短任务回归 | NIAH 好看但真实任务、线上成本或短任务不成立 |
长上下文 curriculum 要记录长度分布,而不是只记录最大长度。每个阶段至少记录:
- 4K/16K/32K/64K/128K 样本比例。
- packing 策略、padding 浪费、短样本是否被过度上采样。
- 长样本来源:自然长文档、长代码、合成长任务、跨文档集合。
- 任务结构:证据密度、不可回答样本、冲突证据、多跳证据、证据位置、输出长度。
- 训练 kernel 与推理 kernel 是否一致。
否则“扩到 128K”只是一个最大长度声明,不能解释模型到底学到了长上下文理解、长距离检索,还是只学会在更长输入里保持 loss 不崩。
4.6 组织运行机制:角色、台账和质量门
Mid-train 项目不是训练团队单独完成的模型续训,而是 data、training、eval、post-train 四方共用同一张实验台账、同一组质量门的能力塑形项目。每个组织概念都必须绑定工程对象:checkpoint、data manifest、eval version、gate、owner 和 decision。
第一,设定 DRI,而不是泛泛“多团队参与”。
| 工作流 | 唯一 DRI | 参与团队 | 最终拍板 | 关键产出 |
|---|---|---|---|---|
| 目标定义 | Model Lead | Product/Domain、Eval、Post-train | Model Lead | Mid-train charter、不可牺牲能力、实验假设 |
| 数据构建 | Data DRI | Research、Safety/Compliance、Eval | Data DRI + Safety/Compliance | 数据桶说明、data manifest/hash、lineage、contamination report |
| 训练执行 | Training Infra DRI | Model、Data、Infra | Training Infra DRI | 训练 runbook、LR/token budget 配置、checkpoint ledger、事故记录 |
| 评估体系 | Eval DRI | Model、Product/Domain、Post-train | Eval DRI | eval registry、私有 holdout、scorecard、人工审查样例 |
| Post-train 接力 | Post-train DRI | Eval、Safety、Model | Post-train DRI | frozen post-train paired protocol、readiness report、对齐回归 |
| 长上下文系统 | Infra DRI | Training、Eval、Serving | Infra DRI + Eval DRI | kernel/serving 一致性报告、KV cache/latency/cost 评估 |
| 风险与发布 | Safety/Compliance DRI | Data、Product、Release | Decision owner | 合规审查、风险登记表、go/no-go memo |
第二,实验台账要有固定 schema。没有台账的实验不进入结论;任何中途改 mix、改过滤器、改 eval 版本,都必须新建 experiment_id。
| 字段 | 说明 |
|---|---|
experiment_id / hypothesis / owner |
实验编号、要验证的假设、唯一负责人 |
base_checkpoint_hash / training_code_commit |
起点 checkpoint 和训练代码版本 |
data_manifest_hash / data_bucket_ratio |
数据 manifest、采样权重、数据桶比例 |
dedup_version / contamination_version |
去重、近重复和污染检查版本 |
lr_schedule / warmup / optimizer_state_strategy |
学习率、warmup、optimizer state 接续或重置 |
token_budget / sequence_length_distribution |
token 预算和长度分布,不只记录最大长度 |
eval_suite_version / private_holdout_version |
eval registry、私有 holdout、harness commit |
seed / cost / incident_log |
随机种子、训练成本、异常事件和处理动作 |
result_summary / decision / signoff |
结论摘要,kill/retry/extend/promote 决策,签字人 |
post_train_readiness_result |
固定 SFT/RL recipe 后收益是否保留 |
第三,质量门的唯一权威看板放在第 8.0 节;本节只定义角色、台账字段和签字责任。本文不能替团队设阈值,但 gate memo 至少要定义:目标能力最低提升、通用能力最大回撤、私有 eval 通过率、污染命中率上限、loss spike 处理规则、风格漂移判定、post-train 后收益保留比例。任何 gate 状态、证据路径、版本 hash 和过期时间,都以第 8.0 节 dashboard 为准。
| Gate | 进入条件 | 退出条件 | 阻断条件 | 签字人 |
|---|---|---|---|---|
| Gate 0: charter | 目标能力、不可牺牲能力、预算和 post-train 接力需求明确 | Mid-train charter 通过;v1 eval registry 和 v1 post-train paired protocol 状态以第 8.0 节 dashboard 为准 | 无 DRI、无 paired protocol owner/schema、无私有 holdout owner/schema | Model Lead、Eval DRI、Post-train DRI |
| Gate 1: 数据冻结 | 数据源、license、清洗、去重和污染检查完成 | data manifest/hash 冻结,人工抽检无系统性错误 | benchmark 泄漏、license 不清、合成数据模板化明显 | Data DRI、Safety/Compliance DRI、Eval DRI |
| Gate 2: proxy ablation | 至少两个候选 mix 和固定 eval suite | proxy 只用于排除坏方向;进入主模型前需两个 scale 方向一致,或 target 短程验证关键信号 | 只涨公开 benchmark,私有任务不动,通用能力大跌 | Model Lead、Eval DRI、Data DRI |
| Gate 3: 主模型短程 | 训练 runbook、resume、监控和 kill switch 就绪 | 出现能力/遗忘 Pareto checkpoint,分桶 loss 可解释 | NaN、不可恢复 loss spike、梯度异常、吞吐异常、resume 不连续、长上下文伤短任务 | Training Infra DRI、Eval DRI、Model Lead |
| Gate 4: post-train 接力 | paired protocol 的 recipe、seed、预算、harness、失败判定已冻结 | 固定 paired protocol 下 post-train 后收益仍保留,安全/风格无显著恶化 | mid-train 收益在 post-train 后消失、paired protocol 中途改变,或对齐难度显著增加 | Post-train DRI、Eval DRI、Safety DRI |
| Gate 5: 放大训练 | 收益来源可解释,数据/eval/训练自动化稳定 | go/no-go memo 通过,进入下一阶段预算 | 收益依赖污染、窄评估、偶然 checkpoint 或无法复现 | Decision owner、Model Lead、Release owner |
第四,会议节奏要服务决策,不服务汇报:
- Daily training review:loss、吞吐、NaN/loss spike、checkpoint、resume、事故处理。
- Twice-weekly eval review:目标能力、通用回归、私有 holdout、人工样例审查。
- Weekly decision review:kill、retry、extend、promote,只基于台账和 gate memo 决策。
- Post-train handoff review:paired protocol 是否有效,收益是否保留,安全和风格是否退化。
这套机制的底线是:日历不能替代质量门。90 天只是参考节奏,是否进入下一阶段由数据就绪度、训练稳定性、eval 稳定性和 post-train 接力验证决定。
5. 训练工程检查点
5.1 启动前检查
启动 mid-train 前,应完成:
- Base checkpoint 的完整 eval 快照。
- Optimizer state 是否接续的决策。
- Tokenizer 和 special tokens 冻结。
- 数据去重和 benchmark contamination 检查。
- 每个数据桶的样例审查。
- 小规模 dry run,确认 loss、吞吐、显存、checkpoint、resume 正常。
- Post-train DRI 确认后续 SFT/RL 的 paired protocol。
如果没有 post-train 接力验证,mid-train 很容易优化错目标。
5.2 训练中监控
至少需要监控:
- 全局 training loss / validation loss。
- 按数据桶分解的 validation loss。
- 通用能力 benchmark 的回归。
- 目标能力 benchmark 的增益。
- 长上下文不同长度段的 loss。
- 生成样例的风格漂移。
- MoE 模型的专家负载、路由熵和 token drop。
- 梯度范数、loss spike、checkpoint 间差异。
不要等训练结束才做 eval。 Mid-train 的失败常常在早期就有信号:通用 eval 大跌、输出风格模板化、某个数据桶 loss 异常、长上下文短任务退化。
5.3 Checkpoint 策略
建议保留:
- pre-mid checkpoint。
- 每个阶段的 early/mid/final checkpoint。
- 学习率变化前后的 checkpoint。
- context length curriculum 每个长度阶段的 checkpoint。
- 用于 post-train 接力的候选 checkpoint。
不要只保留最后一个。Mid-train 的最佳 checkpoint 可能不是 loss 最低的 checkpoint,而是目标能力和遗忘之间的 Pareto 最优点。
5.4 容易低估的工程风险
第一,mixed-length batching 和 context parallelism 会带来负载不均。长上下文 batch 的吞吐、显存碎片、padding 浪费和通信模式都和短上下文不同,训练监控必须按长度段拆开,否则全局吞吐会掩盖局部不稳定。
第二,optimizer state 接续或重置都可能出问题。接续 optimizer state 更像原训练轨迹延长,但可能继承旧阶段动量;重置 optimizer state 更干净,但需要重新设计 warmup,否则容易出现 loss spike 或过慢收敛。两种方案都应先在 proxy scale 测。
第三,训练 attention kernel 和部署 attention kernel 不一致会制造假阳性。离线 eval 通过,不代表线上 128K/1M 服务可用;长上下文训练、推理外推、kv cache、chunked prefill、sparse attention 和 serving 框架必须联合验证。
6. 评估体系
6.0 从 benchmark list 到 eval registry
Mid-train 的评估系统不是榜单集合,而是一组带版本、污染状态、运行 harness、阈值和原始输出存档的 eval object;没有进入 registry 的评估结果,只能作为观察,不能作为 go/no-go 依据。
每个项目最多设置 3-5 个 primary 指标,另设若干 guardrail 和 diagnostic。Primary 太多会诱导 cherry-pick,diagnostic 太少会让团队不知道为什么涨跌。
6.1 Eval registry 的最小 schema
Eval DRI 应在 Gate 0 冻结 v0 owner 和 schema,并在进入 Gate 1 前冻结 v1 eval registry。最小字段如下:
| 字段 | 含义 |
|---|---|
eval_id |
唯一编号 |
eval_family |
base regression / target capability / long-context / post-train readiness / safety-style |
task_name |
任务名 |
data_source |
public / dev-private / sealed-private / final-blind / synthetic / human-written |
created_at / data_hash |
创建时间和数据 hash;私有集必须早于对应训练数据 mix 冻结 |
split_policy |
dev / private holdout / regression set / final-blind |
contamination_check_version |
exact / n-gram / MinHash / embedding / paraphrase / translated duplicate / manual |
harness_commit |
评估代码版本 |
prompt_or_wrapper_version |
base prompt、minimal prompt、few-shot policy、light instruction wrapper、agent harness 版本 |
decoding_params |
temperature、top_p、max tokens、pass@k 等 |
metric / aggregation |
accuracy、pass@k、F1、judge score、latency/cost 等,以及聚合方式 |
decision_role |
primary / guardrail / diagnostic |
threshold_or_guardrail |
提升阈值、最大回撤、失败条件、最小显著差异 |
sample_size |
样本量和抽样规则 |
manual_review_rubric |
需要人工审查时的 rubric |
raw_output_path |
原始输出存档位置 |
owner_note |
解释性备注,不放组织责任 |
Eval 版本变更规则要写死:改样本、改 prompt、改答案抽取器、改 metric、改 harness、改阈值,都必须生成新 eval_suite_version,旧结果不能横向混比。
私有 holdout 建议分三层:
- dev-private:调 pipeline、校准 harness,不进入最终 gate。
- sealed-private:阶段门使用,禁止针对它调数据 mix 或 prompt。
- final-blind:只在 Gate 5 或发布前使用,避免被反复优化成“另一套训练目标”。
6.2 Eval suite matrix
| Eval family | 目的 | 代表任务 | 适用 checkpoint | Metric | 失败信号 | Raw output 要求 |
|---|---|---|---|---|---|---|
| Base regression | 保护不可牺牲能力 | 通用知识、多语、基础生成、事实 QA | pre-mid、mid、post-train 后 | 最大回撤、低分桶变化、人工审查 | 平均分小跌但某语言/风格崩 | 固定样本篮子完整输出 |
| Target capability | 判断目标能力是否真的变强 | 数学、代码、STEM、领域任务、FIM | pre-mid、mid | delta、难度分桶、私有任务通过率 | 只涨公开榜,私有任务不动 | 成功/失败样例簇 |
| Long-context | 判断长上下文是否可用 | 多证据 QA、冲突消解、长代码定位、长表格/日志 | mid、post-train 后 | 长度分桶表现、短任务回归、latency/cost | needle 满分但真实任务差 | 输入长度、证据位置、backend 配置 |
| Post-train readiness | 判断收益是否在 SFT/RL 后保留 | 固定 SFT/RL recipe 后的真实任务和安全评估 | paired post-train checkpoints | 收益保留比例、训练曲线 AUC、方差 | base 涨但 post-train 后消失 | recipe、seed、checkpoint selection policy |
| Safety/style | 防止风格、安全和拒答漂移 | 安全集、拒答边界、中文写作、长答案质量 | mid、post-train 后 | 回归率、人工 rubric、拒答误伤 | 模板化、冗长 CoT、幻觉变多 | 人工审查样本和评分理由 |
目标能力 eval 回答“能力是否真的变强”;base regression eval 回答“有没有伤到别的能力”;post-train readiness eval 回答“这个 base 变化是否能穿过 SFT/RL 仍然有价值”。
6.3 Base regression eval
Base regression 的重点不是证明模型更强,而是保护不可牺牲能力。它应覆盖:
- 通用知识:MMLU、MMLU-Pro、内部知识题。
- 推理:BBH、ARC、GPQA、逻辑题。
- 数学:GSM8K、MATH、AIME 风格内部题。
- 代码:HumanEval、MBPP、EvalPlus、repo-level completion、FIM、多文件定位。
- 多语:中文、英文和目标市场语言。
- 生成质量:长回答、摘要、解释、翻译、自然对话。
Base model 未必稳定遵循复杂格式,所以要区分“能力不足”和“格式不服从”。每个 base eval 应记录 minimal prompting、few-shot policy、答案抽取器版本和人工复核规则。SWE-bench、agent 任务、tool-use eval 混入了指令遵循、工具协议、环境稳定性和 scaffold 质量,更适合作为 readiness/diagnostic,而不是裸 base 主指标。
Base regression scorecard 至少报告:
- 不可牺牲能力最大回撤,而不只是平均分。
- 低分桶和长尾语言变化。
- 输出风格、拒答、冗长程度和幻觉样例。
- 固定人工审查样本篮子的结论。
6.4 Target capability eval
Target capability eval 要和 base regression 分开。它不只是问“公开榜有没有涨”,而是问“目标能力是否在真实任务和私有任务上变强”。
| 目标能力 | 评估方式 | 必要防线 |
|---|---|---|
| 数学/STEM | 难度分桶、可验证答案、私有变体题、失败样例簇 | 防止竞赛题近重复和 synthetic overfit |
| 代码/FIM | HumanEval/MBPP/EvalPlus、FIM、repo-level completion、多文件定位 | SWE-bench/tool-use 作为 readiness 或 diagnostic |
| 领域能力 | 领域私有题、真实文档 QA、专家人工 rubric | 防止领域数据让通用能力变窄 |
| Agent/tool-use | 固定 harness、环境版本、工具协议、任务轨迹 | 不把 scaffold 变好误判成 base 变强 |
如果目标能力只在 public benchmark 上升,而 private holdout、失败样例簇和人工审查不支持,应先视为污染、格式适配或窄分布优化。
6.5 Long-context eval
长上下文评估要分三层:
- 机械检索:Needle-in-a-haystack、多 needle、不同位置和不同噪声密度。它只能作为 diagnostic,不应进入主 gate。
- 真实理解:长文档 QA、多章节摘要、多证据综合、冲突信息判断、长表格/日志分析。
- 任务完成:长代码库修改、多文件 bug 定位、法律/财报/论文综合分析、agent 轨迹复盘和下一步决策。
长上下文 eval registry 必须按轴展开:
| 轴 | 必测切片 |
|---|---|
| Context length bucket | 4K、16K、32K、64K、128K;如目标是 1M,再加 256K/1M |
| 任务类型 | 检索、摘要、多证据 QA、代码定位、跨段推理、不可回答问题 |
| 证据密度 | 稀疏事实、密集表格、长代码、冲突证据 |
| 干扰信息 | 无干扰、同主题干扰、矛盾证据、过期信息 |
| 证据位置 | 开头、中间、末尾、多位置证据 |
| 输出要求 | 短答、结构化表格、长答案、引用证据 |
| 推理 backend | attention kernel、KV cache、chunked prefill、batching、serving 配置 |
| 成本约束 | latency、吞吐、显存、单位请求成本 |
| 短任务回归 | 短任务放进长上下文后是否退化 |
长上下文的 hard gate 不应只看“最长长度能跑通”。更合理的门槛是:短上下文能力不明显退化,中长上下文真实任务有收益,推理系统在目标长度下成本和延迟可接受。
6.6 Post-train readiness eval
Post-train readiness 要用 paired protocol:
- pre-mid checkpoint 和 mid checkpoint 使用同一套 frozen post-train paired protocol。
- 固定数据顺序、seed、预算、checkpoint selection policy、reward/verifier、harness、decoding 和失败判定。
- 关键结论接近阈值时,跑多 seed 或重复 run,并报告方差或 bootstrapped CI。
- 不用“最佳 post-train checkpoint”做事后比较;要比较固定预算、固定选择规则下的结果,或报告训练曲线 AUC。
这里冻结的 SFT/RL recipe 是诊断仪器,用于比较 pre-mid 与 mid checkpoint,不代表最终生产 post-train 配方。若为追求更好结果而调整 recipe,应重新登记 experiment_id,原 mid-train 结论不得直接沿用。
| 比较项 | 看什么 | 失败信号 |
|---|---|---|
| 收敛速度 | 同预算下是否更快达到目标能力 | 只在个别 seed 变快 |
| 最终能力 | 目标能力是否在 post-train 后仍保留 | base 涨,post-train 后消失 |
| Reward 行为 | RL 是否减少 reward hacking 或提升可验证任务 | 冗长推理、投机格式、答案漂移 |
| 安全/风格 | 拒答边界、中文表达、长答案质量 | 安全回归、模板化、拒答误伤 |
| 长上下文 | post-train 后长任务是否继续可用 | SFT 后长上下文能力被覆盖 |
四格判读:
| 结果 | 解释 | 决策 |
|---|---|---|
| base 涨,post-train 后也涨 | 最可信的 mid-train 收益 | 可进入放大候选 |
| base 涨,post-train 后不涨 | 可能是 base eval 假阳性或 post-train 覆盖掉收益 | 回到数据/eval,不能直接放大 |
| base 不涨,post-train 后涨 | 可能改善了可训练性或与 SFT/RL 交互 | 重复 seed 和真实任务验证 |
| base 跌,post-train 后涨 | 高风险 trade-off | 只有不可牺牲能力未破坏时才可继续 |
6.7 Scorecard:如何读评估结果
每个候选 checkpoint 都应生成一页 scorecard。它是 Eval DRI 给 gate 的输入,不替代 4.6 的最终 go/no-go 决策。
| 字段 | 内容 |
|---|---|
checkpoint_id |
checkpoint hash、训练步数、token 数、context length |
target_capability_delta |
primary 指标变化、难度分桶变化、私有任务变化 |
base_regression_max_drawdown |
不可牺牲能力最大回撤和低分桶变化 |
private_holdout_result |
dev-private、sealed-private 的使用情况和结果;final-blind 在 Gate 5 或发布前应保持 unused/reserved,并记录是否仍未触碰 |
long_context_result |
长度分桶、真实任务、短任务回归、serving 配置 |
post_train_readiness_result |
paired protocol、seed、收益保留、方差 |
contamination_status |
exact/near-duplicate/embedding/manual 检查结果 |
known_regressions |
已知退化、失败样例簇、人工审查结论 |
recommended_action |
kill / retry / extend / promote |
如果某个指标收益异常高,而私有任务、人工审查和相邻 eval 不支持,应先假设污染、格式适配或过拟合,而不是先宣布能力突破。
Gate meeting 里先看一行红黄绿摘要,再看完整 scorecard:
| 状态 | 含义 | 会议动作 |
|---|---|---|
| Green | target、guardrail、private holdout、post-train readiness 同方向支持,且证据路径完整 | 可讨论 extend/promote |
| Yellow | 有收益但方差、回撤、污染、post-train 保留或 serving 成本仍不清楚 | 指定 owner 补证据,不进入放大 |
| Red | 不可牺牲能力越线、污染/license 未清、事故未归因、post-train 后系统性变差 | rollback/kill,或重开 experiment_id |
7. 风险与事故处理 Runbook
第 7 章不是失败模式科普,而是训练中的事故处理 runbook:任何异常都必须能落到一个症状、一个实验 ID、一个受影响 checkpoint、一组证据路径和一个继续/回滚/kill 决策。
7.0 如何使用本章
正常监控、eval registry 和 gate 机制分别放在第 4-6 章;本章只处理异常。触发异常后,值班 DRI 先冻结现场,再做 30 分钟首轮诊断,最后给出临时决策。没有完成归因前,不要在同一个 run 里改数据、改学习率、改 eval harness 或改 post-train recipe。
事故出现后先做三步,不要先改配置:
| 步骤 | 动作 | 输出 |
|---|---|---|
| 1. 冻结现场 | 保存 checkpoint、optimizer、data manifest、eval raw outputs、系统指标和相关 commit | incident_id 和 evidence paths |
| 2. 判定级别 | 判断 observation / alert / blocker,指定 30 分钟首查 owner | 临时 stop/continue 决策 |
| 3. 分层隔离 | 依次做 system replay、data manifest diff、eval harness diff、model checkpoint diff | root cause 或 unresolved 标记 |
事故先按六类登记:
| 事故类型 | 典型范围 |
|---|---|
| numerical | NaN、Inf、loss 爆炸、梯度异常、混合精度溢出 |
| data | 数据桶污染、格式漂移、license 问题、合成数据模板化、采样权重错误 |
| eval | harness、prompt、judge、metric、抽样或污染导致的分数异常 |
| infra | 吞吐、GPU 利用率、NCCL、存储、checkpoint、serving 配置异常 |
| capability | 目标能力不涨、通用能力回撤、guardrail 变坏、长上下文真实任务退化 |
| post-train handoff | SFT/RL 接力后收益消失、reward hacking 增加、recipe 噪声放大 |
[!CAUTION] 硬规则:任何能力结论或训练效果结论必须先完成四层隔离:system replay、data manifest diff、eval harness diff、model checkpoint diff;若某一层与事故无关,应标记为
N/A并写明理由。证据不齐时,只能登记为未归因事故,不能写入能力结论。
7.1 事故分级:观察、警报、阻断
| 级别 | 触发信号 | 现场动作 | 可否继续训练 |
|---|---|---|---|
| 观察 | 单个 eval 小幅波动、分桶 loss 轻微偏移、单次 seed 接近阈值 | 记录 incident_id,复跑相邻 checkpoint 或固定样本篮子 | 可以继续,但不能 promotion |
| 警报 | 连续 checkpoint 指标异常、public/private 分歧、某数据桶 loss 明显偏离、目标能力涨但 guardrail 变坏 | 冻结变量,拉 Data/Eval/Training DRI 做 30 分钟首查 | 视 guardrail 决定;通常暂停放大 |
| 阻断 | NaN/Inf、resume 不连续、污染或 license 不清、不可牺牲能力越线、离线可用但线上不可服务 | 停止 run 或停止发布,回滚到最近健康 checkpoint,开事故复盘 | 不继续,除非复盘后新建 experiment_id |
处理原则:
| 原则 | 具体做法 |
|---|---|
| 先冻结现场 | 保存 checkpoint、optimizer state、训练日志、data manifest、eval raw outputs、系统指标和相关 commit |
| 先分层归因 | 分清 system、data、eval、model、post-train recipe 哪一层先变了 |
| 先看分桶 | 全局 loss 正常不代表数据桶、语言、长度、任务都正常 |
| 先保护 guardrail | 不可牺牲能力超阈值回撤时,不用等目标能力继续上涨 |
| 不做隐性修补 | 改过滤器、采样权重、prompt、harness、judge、decoding 或 serving config 都必须新建 experiment_id |
7.2 训练中事故 triage 表
| 事故类型 | 现场症状 | 30 分钟首查 | 分层归因 | 立即决策 | 必须留档 |
|---|---|---|---|---|---|
| numerical | NaN / Inf / loss 爆炸 | 梯度范数、overflow 计数、LR/warmup、最近 batch、optimizer state、resume 日志 | system:精度/kernel;data:坏样本;model:LR/clip;checkpoint:resume | 阻断;回滚到最近健康 checkpoint,replay 问题 batch | checkpoint_id、batch id、overflow log、optimizer hash、replay 结果 |
| numerical / model | 阶段切换后 loss spike | 阶段切换 commit、LR schedule、mix 权重、长度分布、optimizer/RNG 是否连续 | data:mix 突变;model:schedule;system:resume;eval:窗口口径 | spike 可解释且快速恢复则观察;持续异常则 rollback | phase-change diff、前后 3 个 checkpoint 曲线、data manifest diff |
| infra | 吞吐下降 / GPU 利用率异常 | tokens/s、MFU、dataloader wait、NCCL、存储 IO、kernel 版本、batch shape | system 优先;确认前不要解释为模型变化 | 暂停能力结论;必要时停 run 排查 | system metrics、profile trace、代码/镜像版本、复跑对比 |
| data | 全局 loss 正常但某桶 loss 异常 | bucket validation loss、sampling weight、tokenizer/packing、manifest diff、样例抽查 | data 优先;再看 tokenizer/packing 和 eval bucket | 冻结或下线问题桶;严重时 rollback manifest | bucket id、manifest hash、抽样样例、过滤器版本、修复 diff |
| data / capability | 合成数据模板化或错误率升高 | teacher/version、prompt、verifier、template n-gram、response length、人工错误率 | data:生成器;eval:样例太窄;model:学到格式而非能力 | 降低 synthetic ratio 或隔离桶;不把格式收益写成推理收益 | generator config、verifier 版本、重复率、人工审查记录 |
| capability | 通用能力早期大幅回撤 | base regression max drawdown、低分桶、语言/领域固定篮子、数据 mix | model:LR/训练过长;data:专项比例过高;eval:抽样偏差 | 触发 guardrail;回滚或降低专项比例 | scorecard、失败样例簇、mix curve、rollback 点 |
| capability | 目标能力上涨但 guardrail 变坏 | 目标指标、不可牺牲能力、相邻 checkpoint、错误类型变化 | model/data 权衡;确认不是 eval 口径变化 | 不 promotion;只有 trade-off 被业务接受且可复现才 extend | Pareto 曲线、guardrail 阈值、DRI 签字、样例对照 |
| eval | Eval 突然大涨/大跌 | data_hash、harness_commit、prompt/wrapper、judge、decoding、答案抽取器 | eval 优先;用同一 checkpoint 跑新旧 harness diff | 冻结能力结论;旧/新 harness 交叉复跑 | eval diff、raw outputs、judge 版本、metric 变更说明 |
| eval / data | Public benchmark 涨但 private 不涨 | contamination report、private holdout、题型相似度、raw output | data 污染或 eval 过拟合;也可能 public 太窄 | 从 primary 指标降权;不能放大 | contamination 证据、holdout 使用记录、剔除样本列表 |
| capability / context | Needle 好但真实长任务差 | 长任务 raw output、证据位置、信息密度、不可回答样本、长度分布 | eval:needle 过窄;data:缺综合/冲突任务;system:serving 差异 | 不把 needle 作为主 gate;暂停长训放大 | 长任务失败簇、证据定位、长度桶分数、serving 配置 |
| capability / context | 长上下文训练伤短任务 | sequence_length_distribution、短任务回归、packing/padding、短样本占比 | data:长样本稀释;model:位置/attention 适应副作用 | 回滚长度 mix 或恢复短样本比例 | 长度分布 diff、短任务 scorecard、curriculum 版本 |
| infra / context | 离线长上下文可用但线上不可用 | serving config、KV cache、chunked prefill、batching、kernel、latency/cost | system 优先;模型能力结论暂缓 | 系统阻断;不发布,不把线上失败记成模型失败 | offline/online config diff、线上 raw output、profile |
| post-train handoff | Post-train 后收益消失 | paired protocol、seed、SFT/RL 数据版本、checkpoint selection、训练曲线 AUC | post-train recipe 或 base eval 假阳性;也可能 mid-train 不稳 | 不放大;重复 paired run 或回到目标数据 | recipe hash、seed、A/B 曲线、post-train raw outputs |
| post-train handoff | Reward hacking 增加 | RL raw output、reward/verifier、拒答/安全、格式依赖、CoT 模板 | post-train reward 漏洞;mid-train 可能提前固化格式 | 降低行为格式数据;修 reward/verifier 后重跑 | reward 版本、hacking 样例、行为数据比例、修复记录 |
| infra | Checkpoint resume 不连续 | resume 前后 loss、optimizer/RNG、data cursor、checkpoint hash、训练代码版本 | system/checkpoint 优先;排除后再看 data/model | rollback;replay resume 测试通过后新建 run | checkpoint lineage、RNG/data cursor、replay log、代码 hash |
| eval | Checkpoint 间结论反复 | 相邻 checkpoint、CI/方差、多 seed、selection policy、raw outputs | eval 噪声或 selection 偏差;model 真实波动需二次验证 | 不用单点决策;报告曲线而非最好点 | selection policy、完整曲线、置信区间、失败样例 |
7.3 数据事故 runbook
数据事故的第一原则是隔离版本,不是现场修补。任何过滤器、生成器、去重、采样权重、tokenizer 或 packing 变化,都必须产生新的 data_version 和 manifest hash。
| 步骤 | 动作 | 退出条件 |
|---|---|---|
| 1. 冻结 | 保存旧 manifest、采样权重、生成器配置、过滤器版本和抽样样例 | 能复现事故前的数据输入 |
| 2. Diff | 对比 token 数、语言/领域/长度分布、重复率、污染率、坏样本率 | 解释至少一个异常分桶 |
| 3. 隔离 | 下线或降权问题桶,保留通用保真桶和 guardrail eval | 问题桶不再进入继续训练 |
| 4. 复跑 | 用固定 checkpoint 复跑 data validation 和 linked eval | 证明修复来自数据,而不是 eval 改口径 |
| 5. 复盘 | 更新数据桶准入卡和 prevention_rule | 新 data_version 才能进入下一次训练 |
如果污染、license 或隐私边界无法解释清楚,应直接 kill 该数据版本。对 mid-train 来说,“可能污染但分数好”不是可接受状态。
7.4 训练事故 runbook
训练事故优先保护可恢复性。发现 numerical 或 resume 类问题后,不要先调学习率碰运气;先确认 checkpoint、optimizer、RNG、data cursor 和代码版本是否能 replay。
| 步骤 | 动作 | 退出条件 |
|---|---|---|
| 1. 停表 | 标记 incident_id,冻结当前 run,不再写入能力结论 | 现场日志和状态完整 |
| 2. 回放 | 从最近健康 checkpoint 回放短窗口,确认是否可复现 | 能复现则定位,不能复现则记录系统不确定性 |
| 3. 单变量修复 | 每次只改一个变量:LR、clip、precision、bad batch、resume 逻辑之一 | 修复与指标变化可归因 |
| 4. 回归 | 重新跑分桶 loss、base regression 和关键 target eval | 没有新增 guardrail 事故 |
| 5. 决策 | kill / retry / rollback / extend / promote | 有 DRI 签字和证据路径 |
训练继续的最低条件是:数值稳定、系统 replay 成功、数据 manifest 未漂移、eval harness 未漂移。缺任一项,只能 retry 或 rollback,不能 promote。
7.5 评估事故 runbook
评估事故最常见的错误,是把工具变化当成能力变化。只要 prompt、wrapper、judge、答案抽取器、decoding、样本集或 metric 任一项变化,旧分数和新分数都不能直接横比。
| 排查矩阵 | 旧 checkpoint | 新 checkpoint |
|---|---|---|
| 旧 harness | 复现历史基线 | 看模型真实增量 |
| 新 harness | 看工具口径变化 | 只作为新口径结果 |
只有当“旧 harness 下新 checkpoint 变好”和“新 harness 下旧 checkpoint 没有同等变好”同时成立,才可以把收益初步归因给模型。若 private holdout 被反复查看或调参,应降级为 dev-private,并重新建立 sealed-private 或 final-blind。
7.6 Post-train 接力事故
Mid-train 的收益如果在 post-train 后消失,先不要简单判定 mid-train 无效。需要同时排查四件事:
| 排查项 | 可能问题 | 处理 |
|---|---|---|
| recipe 是否冻结 | SFT/RL 数据、seed、预算、reward/verifier、decoding 变化 | 重跑 paired protocol |
| selection 是否偏差 | 只挑了 post-train 最好点或 base 最好点 | 用固定 checkpoint selection policy |
| 能力是否被覆盖 | SFT 风格数据压过了目标能力,RL 奖励偏向短答或格式 | 若调整 post-train 数据/奖励,必须新建 experiment_id 或 paired_protocol_version 后再测 readiness |
| 收益是否是假阳性 | base eval 污染、public 过拟合、样例太窄 | 回到第 6 章 eval registry 和第 7.5 节 |
如果 post-train 接力连续两轮在 paired protocol 下失败,且 base 端收益只存在于 public benchmark 或单个 seed,应 kill 该 mid-train 方向;如果 base 端收益稳定但被 SFT/RL 覆盖,则把结论写成“post-train handoff 未打通”,不要写成“mid-train 无收益”。为排查覆盖问题而调整 SFT/RL 数据、reward、verifier、预算或 seed 时,旧 paired protocol 的结论不能继续作为 mid-train 收益证据,只能作为诊断线索。
7.7 事故复盘模板
每个警报或阻断级事故都要有一条复盘记录。复盘不是追责文档,而是让下一次训练能少踩同一个坑。
incident_id:
experiment_id:
incident_type: numerical | data | eval | infra | capability | post-train handoff
severity: observation | alert | blocker
first_detected_at:
affected_checkpoint:
symptom:
root_cause: confirmed | suspected | unresolved
changed_variables:
rollback_point:
evidence_paths:
four_layer_isolation:
system_replay:
data_manifest_diff:
eval_harness_diff:
model_checkpoint_diff:
decision: kill | retry | rollback | extend | promote | unresolved
prevention_rule:
owner:
reviewed_by:
如果 root_cause 仍是 unresolved,事故可以关闭训练动作,但不能关闭认知结论:文档中只能写“未归因事故,已隔离”,不能写“模型能力退化”或“某数据桶有效”。
8. 给新团队的 90 天路线图
这张路线图是参考节奏,不是日历承诺。进入下一阶段应由 Gate 0-5 决定,而不是由第几天决定。
8.0 Gate dashboard:每一阶段只回答一个决策问题
90 天路线图的用途不是排期,而是把项目从“想训练”推进到“证据足够再训练”。每个 gate 只回答一个问题:
| Gate | 决策问题 | 必备证据 | Blocker | Owner | Next action |
|---|---|---|---|---|---|
| Gate 0 | 这个目标是否真的需要 mid-train | charter、不可牺牲能力、v1 eval registry、v1 post-train paired protocol | 目标可由 SFT/RAG/产品逻辑解决;eval 或 holdout 未冻结 | Model Lead | go / no-go charter |
| Gate 1 | 数据是否可以进入实验 | data manifest/hash、license、污染检查、抽样审查、linked eval | 数据来源不清、合成生成器读过 eval、holdout 泄漏 | Data DRI | data readiness memo |
| Gate 2 | proxy ablation 是否排除了坏方向 | 目标收益、通用回撤、两个 scale 或 target 短程信号、失败样例簇 | 只有 public benchmark 涨;合成数据模板化;proxy 结论不稳定 | Eval DRI | ablation decision memo |
| Gate 3 | 主模型短程是否值得继续 | checkpoint 曲线、分桶 loss、scorecard、事故记录、Pareto 结果 | NaN/loss spike、resume 不连续、guardrail 越线、长上下文伤短任务 | Training Infra DRI | extend / rollback / kill |
| Gate 4 | 收益能否被 post-train 保留 | paired SFT/RL 结果、seed、AUC、raw outputs、reward/safety 回归 | base 涨但 post-train 后消失;recipe 中途改变;reward hacking 增加 | Post-train DRI | readiness report |
| Gate 5 | 是否进入放大训练或收缩重做 | go/no-go memo、model registry、rollback checkpoint、成本收益判断 | 收益来自污染/窄评估/单 seed;事故未归因;无法解释回撤 | Decision owner | scale / shrink / stop |
[!CAUTION] 只要某个 gate 的证据不完整,就不要用”再训一点看看”绕过去。 Mid-train 的项目成本高,真正的节奏控制来自 gate,而不是日历。
每个 gate 的 dashboard 记录还必须包含 status、owner、evidence_path、version_hash、stale_after 和 next_action。没有证据路径的绿色状态,应视为黄色。
第 0-14 天:定义目标和评估
对应 Gate 0,主责为 Model Lead、Eval DRI 和 Post-train DRI;本阶段的决策会议只回答一个问题:这个目标是否真的需要 mid-train。
交付物:
- Mid-train charter:目标能力、不可牺牲能力、目标 checkpoint、预算。
- Eval matrix:base eval、能力 eval、长上下文 eval、post-train readiness。
- 数据桶设计文档。
- 风险清单和 go/no-go gate。
- Frozen post-train recipe:SFT/RL 数据版本、训练预算、seed、harness、评估集和失败判定。
Go/no-go:
- 如果 eval registry、私有 holdout 和 post-train 接力 recipe 没有冻结,不进入训练。
- 如果私有 holdout 创建时间晚于训练数据混合,或允许针对私有 holdout 调参,不进入训练。
第 15-35 天:数据和小模型 ablation
对应 Gate 1-2,主责为 Data DRI 和 Eval DRI;所有实验必须登记到 4.6 的实验台账。
交付物:
- 例如 1B/3B/7B proxy model 上的数据 mix 实验;具体 scale 由团队现有模型谱系和预算决定。
- 学习率和 token budget sweep。
- 合成数据正确性和多样性报告。
- 每个数据桶的 loss 和能力关联分析。
- Data manifest/hash、near-duplicate 检测报告、污染检查报告、人工抽检样本。
Go/no-go:
- 至少一个 mix 在目标能力上提升,且通用能力回撤可接受。
- 合成数据没有明显污染和风格坍缩。
- Proxy 成功只说明坏方向被排除,不能证明 target scale 一定成立;进入主模型短程前,至少需要两个 scale 方向一致,或 target model 短程 run 验证关键信号。
第 36-60 天:主模型短程 mid-train
对应 Gate 3,主责为 Training Infra DRI、Eval DRI 和 Model Lead;本阶段必须先定义 kill switch,再启动训练。
交付物:
- 主模型短程训练,例如 10B-100B token 级窗口;具体 token budget 由 Gate 2 证据和训练成本决定。
- 每日 checkpoint eval。
- 能力/遗忘 Pareto 曲线。
- 候选 checkpoint 选择。
- 训练 runbook、checkpoint lineage、resume 记录、训练代码 commit、事故记录。
Go/no-go:
- 目标能力提升不是单一 benchmark 驱动。
- 通用能力下降低于事先定义阈值。
- 生成样例没有明显风格漂移。
- 出现 NaN、不可恢复 loss spike、梯度异常、吞吐异常、某数据桶 loss 反常、checkpoint resume 不连续,或长上下文训练伤害短任务时,触发停止或回滚。
第 61-75 天:post-train 接力验证
对应 Gate 4,主责为 Post-train DRI 和 Eval DRI;如果 post-train recipe 在本阶段改变,mid-train 结论应视为无效或重新标记实验 ID。
交付物:
- 固定 SFT recipe 对比。
- 如适用,固定 RL/RLVR recipe 对比。
- post-train 后真实任务评估。
- reward hacking / safety / style 回归报告。
- Post-train readiness report:recipe 版本、seed、预算、harness、失败判定和收益保留比例。
Go/no-go:
- Mid-trained checkpoint 在 post-train 后仍保留收益。
- 对齐难度没有显著增加。
第 76-90 天:放大或收缩决策
对应 Gate 5,主责为 Decision owner、Model Lead 和 Release owner;本阶段不是自动放大,而是决定继续、收缩、重做数据或停止。
交付物:
- 放大候选 recipe 或下一阶段收缩重做 recipe。
- 是否进入 100B-1T+ token 训练的决策。
- 数据和评估自动化改进清单。
- 长上下文或第二能力目标的下一阶段计划。
- Model registry:checkpoint lineage、data manifest、eval raw outputs、训练日志、权限、保留周期和可回滚 checkpoint。
Go/no-go:
- 如果收益主要来自污染、窄评估或 post-train 偶然性,不放大。
- 如果收益稳定、可解释、可在 post-train 后保留,进入主训练。
9. 可执行 checklist
9.0 最小交付包与交付物索引
如果团队不想一开始就维护完整文档体系,至少要有下面 8 个交付物。缺任意一个,mid-train 结论都很难复盘。
| 交付物 | Owner | 模板位置 | 冻结 Gate | 用在哪个会议 |
|---|---|---|---|---|
| Mid-train charter | Model Lead | 0.2 / 8.0 | Gate 0 | 启动会、go/no-go 会 |
| Data manifest | Data DRI | 4.2.1 / 9.1 | Gate 1 | 数据 readiness 会、事故复盘 |
| Eval registry | Eval DRI | 6.1 / 9.3 | Gate 0-1 | eval freeze 会、checkpoint review |
| Training runbook | Training Infra DRI | 4.3.1 / 5 / 7.4 | Gate 3 | train launch 会、事故处理 |
| Experiment ledger | Model Lead / PM | 4.6 | Gate 0 后持续更新 | 每周实验例会 |
| Checkpoint scorecard | Eval DRI | 6.7 | Gate 3-5 | checkpoint review、放大决策 |
| Post-train readiness report | Post-train DRI | 6.6 / 7.6 | Gate 4 | post-train handoff 会 |
| Incident review | 事故 owner | 7.7 | 警报/阻断事故后 | 事故复盘、prevention review |
| Go/no-go memo | Decision owner | 8.0 / 9.4 | Gate 5 | 放大、收缩或停止决策 |
Checklist 的作用是验收这些交付物,不是制造流程负担。对新团队来说,先把最小交付包跑通,比追求完美平台更重要。
每个 checklist 项都不应只打勾,还要绑定最小审计字段:
owner:
evidence_path:
version_hash:
stale_after:
gate_role: primary | guardrail | diagnostic
status: green | yellow | red
如果一项检查没有 evidence_path 或 version_hash,它最多只能算 yellow,不能作为 gate 通过证据。
9.1 数据 checklist
- [ ] 每个数据版本都有 data manifest/hash,记录 source snapshot、processing commit、tokenizer、dedup、contamination、sampling weight、shuffle seed。
- [ ] 每个数据源有 license / 合规记录。
- [ ] 每个数据桶有质量打分和人工样例审查。
- [ ] 每个数据桶绑定 linked_eval_id,未绑定 eval 的桶不提高采样权重。
- [ ] benchmark contamination 检查完成。
- [ ] 训练集、验证集、私有 holdout 分离。
- [ ] 合成数据记录 teacher/version、prompt、采样参数、verifier、过滤规则、拒样比例、模板重复率、人工错误率。
- [ ] 合成数据有正确性过滤、多样性、模板化和 style entropy 检查。
- [ ] 长上下文数据包含真实长任务,不只是拼接文本。
- [ ] 通用数据保留比例有 ablation 支持。
9.2 训练 checklist
- [ ] Base checkpoint eval 完成。
- [ ] Tokenizer / special tokens 冻结或变更有充分理由。
- [ ] Optimizer state 接续策略明确。
- [ ] LR schedule、warmup、peak/min LR、decay shape、gradient clipping、precision 记录清楚。
- [ ] global batch、microbatch、packing/masking、data order、shuffle seed 记录清楚。
- [ ] checkpoint selection policy 在训练前冻结。
- [ ] 每个阶段有 checkpoint 保存策略。
- [ ] 分桶 validation loss 可观测。
- [ ] MoE/attention/long-context 系统指标可观测。
- [ ] 训练可 resume,checkpoint 可复现。
9.3 评估 checklist
- [ ] Eval registry 已冻结,包含 eval_id、eval_family、data_hash、harness_commit、prompt_or_wrapper_version、metric、decision_role、threshold_or_guardrail、raw_output_path。
- [ ] Base eval、能力 eval、长上下文 eval 分开。
- [ ] 每个 eval 标明 primary、guardrail 或 diagnostic,primary 指标不超过 3-5 个。
- [ ] 指标包含真实任务和人工审查。
- [ ] 不只看平均分,也看能力回撤。
- [ ] 每个候选 checkpoint 生成 scorecard,包含目标能力 delta、最大回撤、污染状态、失败样例和建议动作。
- [ ] 每个候选 checkpoint 做同一套 eval。
- [ ] 私有 holdout 分为 dev-private、sealed-private、final-blind,创建时间早于训练数据 mix 冻结,且不得针对 sealed/final 调参。
- [ ] 长上下文 eval 覆盖长度、位置、信息密度、任务类型和部署一致性。
- [ ] Post-train 接力 recipe 固定,并记录数据顺序、seed、harness、预算、checkpoint selection policy 和失败判定。
- [ ] Post-train 后收益可复现。
9.4 组织 checklist
- [ ] 数据团队、训练团队、Post-train DRI 共用同一张实验台账。
- [ ] 每次实验记录数据 mix、LR、token budget、context length、eval 版本。
- [ ] Research、Data、Training、Eval、Post-train、Release owner 均已明确。
- [ ] Model Lead、Data DRI、Training Infra DRI、Eval DRI、Post-train DRI、Safety/Compliance DRI、Product/Domain DRI、Decision owner 均已明确。
- [ ] Mid-train charter、data manifest/hash、eval registry、runbook、checkpoint ledger、post-train readiness report、go/no-go memo 均有 owner。
- [ ] 项目开始前冻结“不可牺牲能力”和各阶段回滚条件。
- [ ] 每个 gate 的阈值、阻断条件和签字人已在实验前写入 gate memo。
- [ ] 任何中途改 mix、改过滤器、改 eval 版本的行为都会新建 experiment_id。
- [ ] 训练中有停止条件。
- [ ] 放大训练前必须过 go/no-go gate。
- [ ] 发布前保留 pre-mid、mid、post 三类 checkpoint 的完整报告和 model registry。
10. 对有 post-train 经验的基模团队的特别提醒
第一,不要用 SFT 的心智做 mid-train(详见 1.2、1.4)。Mid-train 数据可以包含 QA、CoT、代码任务,但其目标不是让模型学会产品回答格式,而是改变能力分布。自检:如果数据 mix 大部分是指令-回答对,大概率在做提前的 SFT,而不是能力塑形。
第二,不要让 RL 背所有锅(详见 2.4 第四点、6.6)。如果 base model 没有足够的数学、代码、长上下文和自我纠错 substrate,RL 很可能只学到表面搜索或冗长推理。自检:如果目标任务的 zero-shot pass@100 为零,说明能力不在 base 的可达边界内,RL 大概率无法稳定探索到正确解。
第三,不要只追榜(详见 6.4、7.2 eval 事故、8.0)。Mid-train 的真实收益要在私有任务、真实产品任务和 post-train 接力中同时成立。自检:如果某个 eval 收益超过 5 个百分点但私有 holdout 不动,先假设是污染或格式适配。
第四,不要一开始就追 1M context(详见 4.5)。对多数团队,先把 32K/128K 做到可靠,比展示极长 context 更实际。自检:如果短任务(<4K)性能在拉长后明显下降,说明 context extension 的成本还没控制住。
第五,不要忽视数据工程(详见 4.2、4.2.1、9.1)。Mid-train 项目中,训练代码常常不是瓶颈,数据 lineage、污染控制、分桶 eval 和实验纪律才是。自检:如果团队无法在 30 秒内说出当前训练使用的 data manifest hash 和污染检查版本,数据治理还没到位。
11. 第一轮搜索空间:示例搜索网格,不可直接作为默认 mix
这一章是工作样例,不是配方。它的用途是帮助第一次做 mid-train 的团队把数据、训练、评估和 post-train 接力串成一个最小证据链(”最小闭环”的定义见 4.0)。
如果团队已有一个可用 base model 和稳定 post-train pipeline,建议第一轮不要做大而全,先做一个”能力型 mid-train + post-train 接力”的最小闭环。以下比例不是推荐 recipe,而是用于启动 ablation 的搜索空间;不同模型规模、预训练历史、目标语言和产品任务会显著改变最优 mix,主训练前必须通过 proxy scale 和短程主模型验证。下列比例和 token 区间只用于设计 ablation 变量,不得作为默认 mix、默认 LR 或默认预算。
只有在 base checkpoint、目标能力、不可牺牲能力、eval registry、data manifest 和 post-train paired protocol 已冻结后,下面的区间才可作为 ablation 变量;否则不应进入训练配置。
目标:
- 提高数学、代码、STEM 和复杂 QA。
- 不显著伤害通用、多语、事实和自然生成。
- 验证 SFT/RL 后是否仍有收益。
数据 mix 搜索空间(bucket sensitivity sweep 轴):
- 高质量通用文本:用低/中/高几个点测试保真底线,例如 30/50/70%,不是固定占比建议。
- 代码与 FIM:用低/中/高几个点测试代码能力和普通生成漂移,例如 10/20/30%。
- 数学/STEM:用低/中/高几个点测试推理注入收益、饱和点和通用回撤。
- 合成教材/可验证推理:用上限 sweep 测试 verifier 质量、模板化和 teacher 错误放大。
- QA/CoT/短答任务形态:用单独开关或低比例混入测试格式漂移,避免把 post-train 行为格式提前固化。
这些 bucket 轴只用于第一轮单变量或少变量搜索,不是要同时满足的归一化比例表。实际 mix 必须通过小模型和短程主模型实验决定。
这个起点不是任何公开模型的复刻配方,也不是从公开报告反推出的最优比例。它只是一组便于新团队暴露数据冲突、遗忘风险和合成数据边界的搜索网格。
主训练前必须有 mix sensitivity curve,而不是只选择一个看起来最好的点。至少回答:
- 通用数据比例下降时,哪些不可牺牲能力最先回撤?
- 数学/STEM 或代码比例提高时,收益是否线性、饱和还是反转?
- Synthetic ratio 增加时,私有任务、风格审查和模板重复率是否同步恶化?
- 同一 mix 在不同 seed 或相邻 checkpoint 上方向是否一致?
- 目标能力收益是否足以补偿通用回撤和训练成本?
第一轮不要只跑一个 mix。更好的做法是保留一个 control mix,再围绕单一变量做小矩阵:
| 变体 | 改什么 | 不改什么 | 目的 |
|---|---|---|---|
| Control | 低风险通用保真 mix | LR、token budget、context length | 建立回归底线 |
| Math/STEM up | 只提高数学/STEM | 代码、通用、LR 不变 | 判断推理注入收益和遗忘代价 |
| Code/FIM up | 只提高代码/FIM | 数学、通用、LR 不变 | 判断代码能力和普通生成漂移 |
| Synthetic cap | 限制 synthetic 上限 | 其它桶不变 | 判断合成数据是否带来模板化 |
| General retain | 提高高质量通用数据 | 目标桶不变 | 判断通用保真能否降低回撤 |
| LR lower | 只降低 LR | 数据 mix 不变 | 区分数据问题和优化问题 |
每个变体只能改 1-2 个主变量。边训边改 mix、过滤器、LR 或 eval 版本,会让实验无法解释。
通过 Gate 2 后的主模型短程验证起点:
- 低学习率继续训练。
- 先用原 context length 或小幅扩展。
- 10B-50B tokens 级短程主模型验证上限示例;实际预算必须由 proxy 结果、target model 短程信号、遗忘阈值和成本共同决定。
- 每 10%-20% token 保存 checkpoint 并 eval。
评估起点:
- Base eval:MMLU/MMLU-Pro、BBH、GPQA、GSM8K/MATH、HumanEval/MBPP、多语集。
- 私有 eval:内部数学、代码、复杂 QA、真实用户任务。
- Post-train readiness:固定 SFT recipe,对比 pre-mid 和 mid checkpoint。
如果这轮闭环没有稳定收益,不要急着扩大 token budget。先回到数据和学习率。
12. 资料地图
本章不是文献综述的尾注,而是读者复核本文结论的路线图。使用原则是:同一模型家族先读最新一版公开技术报告;最多补读上一版;更早材料只在提供不可替代证据时保留,并在内部资料包中标为“必要例外”。
12.1 一手技术报告:事实底座
| 资料 | 使用级别 | 原文优先核查 | 本文如何使用 |
|---|---|---|---|
| Qwen3 Technical Report: https://arxiv.org/abs/2505.09388 | 主读 | 三阶段 pre-training、reasoning/context 阶段、推理外推/部署技术 | capability shaping + context adaptation 的主样本 |
| DeepSeek-V3 Technical Report: https://arxiv.org/abs/2412.19437 | 主读;若同家族新报告披露同类细节,应替换 | 14.8T pre-training、32K/128K context extension、架构与训练协同 | 长上下文扩展必须和架构、系统、训练稳定性一起看 |
| GLM-4.5 Technical Report: https://arxiv.org/abs/2508.06471 | 主读 | 显式 mid-training 三子阶段:repo-level code(~500B,4K→32K)、synthetic reasoning(~500B)、long-context + agent(~100B,→128K);MoE 355B/32B;~1.1T mid-training tokens | 多子阶段 mid-training 的工程拆分样本;合成推理和 agent 轨迹注入 mid-train 的参考;MoE 下 mid-train 路由/负载参考 |
| Qwen2.5-1M Technical Report: https://arxiv.org/abs/2501.15383 | 上一版专项保留 | progressive long-context pre-training、post-training、DCA/YaRN、chunked prefill | 拆清训练扩展、1M 推理外推和部署优化的边界 |
| OLMo 2 Technical Report: https://arxiv.org/abs/2501.00656 | 必要例外 | 明确 mid-training 分层、数据混合、micro-annealing、post-training | 学习阶段命名、data lineage 和透明实验台账 |
| Phi-4 Technical Report: https://arxiv.org/abs/2412.08905 | 必要例外 | synthetic data for pretraining and midtraining;4K -> 16K context 扩展 | 合成数据治理、verifier、风格多样性和有机数据兜底 |
| The Llama 3 Herd of Models: https://arxiv.org/abs/2407.21783 | 降级参考 | long-context pre-training、annealing、checkpoint 选择 | 只在需要 late-stage/annealing 公开细节时阅读 |
不要把这张表理解成“必读清单”。如果团队已经有目标模型家族的最新报告,应先替换主读样本;若新报告没有披露 mid-train 相关细节,再保留上一版或必要例外作为工程类比。
12.2 综述和受控实证研究:假设来源
| 资料 | 主要用途 | 使用边界 |
|---|---|---|
| Mid-Training of Large Language Models: A Survey: https://arxiv.org/abs/2510.06826 | 建立 mid-training taxonomy、任务类型和资料入口 | 综述是二手归纳,不能替代原报告事实核查 |
| A Survey on LLM Mid-training: https://arxiv.org/abs/2510.23081 | 对比不同 mid-training 目标、数据形态和评估口径 | taxonomy 可借鉴,具体配方仍需内部实验验证 |
| PRISM: Demystifying Retention and Interaction in Mid-Training: https://arxiv.org/abs/2603.17074 | 设计 retention / interaction / capability transfer 的受控 ablation | 受控实验的模型规模、数据和任务分布有限,不能直接外推为主模型预算 |
| On the Interplay of Pre-Training, Mid-Training, and RL on Reasoning Language Models: https://arxiv.org/abs/2512.07783 | 建立“RL 是否依赖 pre/mid 阶段能力边界”的实验假设 | reasoning/RL 结论尤其要保守,需用团队自己的 RLVR/SFT paired protocol 验证 |
12.3 Claim / source matrix
| Claim | 正文位置 | 最强支撑 | 支持强度 | 建议措辞 |
|---|---|---|---|---|
| 狭义 mid-training 可以独立管理 | 0 / 1 / 3 / 4.6 | OLMo 2 明确使用 mid-training;Phi-4 使用 pretraining/midtraining/post-training 分层 | 强:报告事实 + 工程归纳 | “公开报告中已有把 mid-training 独立成阶段的样本;团队可借鉴其治理方式。” |
| 许多案例只是 mid-train-like | 0 / 2 / 3 | Qwen3、DeepSeek-V3、Llama 3、Qwen2.5-1M 的原报告术语 | 强:报告事实 | “本文在工程意义上类比,不改写原报告术语。” |
| Qwen3 有 General / Reasoning / Long Context 三个 pre-training stage | 3 / 12.1 | Qwen3 Technical Report | 强:报告事实 | “Qwen3 原文称 Pre-training Stage,不称 mid-training。” |
| DeepSeek-V3 的长上下文扩展是 14.8T base pre-training 后两段 1000 steps | 3 / 12.1 | DeepSeek-V3 Technical Report | 强:报告事实 | “支持阶段化 context extension;不支持反推通用数据 mix。” |
| Qwen2.5-1M 的 1M 能力来自训练、post-training、外推和部署协同 | 3 / 12.1 | Qwen2.5-1M Technical Report | 强:报告事实 + 工程归纳 | “不是直接训练到 1M,也不是纯推理技巧。” |
| Llama 3 的 long-context 和 annealing 可作为 late-stage 参考 | 3 / 12.1 | Llama 3 Technical Report | 强:报告事实 | “405B 规模样本,不是小团队预算建议。” |
| 合成数据有价值,但必须治理模板化、污染和 teacher 错误 | 3 / 4.2.2 / 12.1 | Phi-4、Qwen3,以及合成数据相关受控研究 | 中强:报告事实 + 论文归纳 | “合成数据是可验证能力放大器,不是低成本 token 替代品。” |
| Reasoning mid-train 更像提高 RL substrate 的工程假设 | 2.4 / 3 / 6.6 | PRISM、pre/mid/RL interplay 论文 | 中:论文归纳 + 待验证假设 | “需用团队自己的 paired RL/SFT protocol 验证。” |
| Public benchmark 上涨不足以证明 mid-train 成功 | 6 / 7 / 8 | 多个公开报告的评估实践 + 本文工程治理 | 中:工程归纳 | “必须看 private holdout、raw output、污染和 post-train readiness。” |
| 公开报告通常不能给出可复制 recipe | 4 / 11 / 12 | 一手报告共同体现关键细节不完整公开 | 中:工程归纳 | “本文 recipe 表是搜索空间和质量门,不是公开模型复刻配方。” |
12.4 推荐阅读顺序
- 先读目标模型家族最新报告;没有目标家族时,先读 Qwen3 和 DeepSeek-V3。
- 只在做 1M/超长上下文时补读 Qwen2.5-1M。
- 只在需要明确 mid-training 治理范式时补读 OLMo 2。
- 只在合成数据是主变量时补读 Phi-4。
- 只在需要 late-stage/annealing 公开细节时补读 Llama 3。
- 最后读 survey、PRISM 和 pre/mid/RL 论文,把机制假设转成自己的 ablation。
13. Go/no-go memo 最小模板
具体启动动作见 0.2,交付物索引见 9.0。正文最后只保留一个决策模板:每一次 go/no-go 都必须能追到证据路径、版本和 owner。
decision_id:
gate:
status: green | yellow | red
decision: go | no-go | retry | rollback | kill
target_capability:
non_regression_guardrails:
evidence_paths:
version_hash:
stale_after:
data_manifest_hash:
eval_registry_version:
post_train_protocol_version:
checkpoint_or_run_id:
known_risks:
owner:
signoff:
reviewed_by:
next_action:
一个成熟的 mid-train 项目不是”训练跑起来”才开始,而是在第一个 checkpoint 产生前就已经能回答:目标是什么、不能牺牲什么、证据在哪里、谁来判定继续或停止。
附录:使用边界与更新原则
本文可作为基模团队启动 mid-train 项目的内部手册,但不是训练配方,也不是公开模型的复刻说明。
| 维度 | 当前状态 | 使用时注意 |
|---|---|---|
| 资料筛选 | 同一模型家族优先最新一版,最多上一版,更老版本只作为必要例外 | 使用前先复核目标模型家族最新报告,替换本文中的历史样本 |
| 事实限定 | 区分报告事实、论文归纳、工程归纳和待验证假设(第 12 章 claim/source matrix) | 新报告发布后按同一矩阵更新,不直接追加旧模型案例 |
| Recipe 边界 | 第 11 章是 sensitivity sweep 样例,不是默认 mix、LR 或 token budget | 放大训练前仍需内部 ablation、污染检查、holdout 管理和 post-train paired protocol 共同验证 |
| 风险控制 | 覆盖数据、训练、eval、infra、capability、post-train handoff 六类事故 | 需接入团队真实训练平台、eval 系统和 model registry 后才算工程落地 |