LLM Training Lifecycle
LLM Training Lifecycle
主线
1 | Base Pre-training |
各阶段目标
| 阶段 | 主要数据 | 主要目标 |
|---|---|---|
| Base pre-training | 大规模通用语料 | next-token prediction,形成语言、知识与模式能力 |
| Mid-training | 更高质量或能力倾斜数据 | 强化代码、数学、长上下文、工具等方向 |
| Annealing | 高质量数据 + 更低学习率 | 训练后期收尾与稳定化 |
| SFT | 指令和示范轨迹 | 学会任务接口、格式和行为模式 |
| Reasoning RL | 可验证任务、奖励或偏好 | 优化推理策略与结果质量 |
| Agentic RL | 环境交互轨迹 | 优化多步行动、工具使用和长期回报 |
跨阶段核心问题
- 新阶段是否造成 Catastrophic Forgetting?
- 数据分布、学习率和训练目标如何平滑切换?
- 能力来自预训练涌现、SFT 示范还是 RL 强化?
- 评测是否能覆盖通用能力、推理、工具和安全?
把生命周期看成一条因果链
每次阶段切换都在改变三件事:数据分布、优化目标和可接受的行为边界。因果关系可以写成:
1 | 数据混合与采样 |
因此“进入下一阶段”不是日历事件,而是一个带验收条件的迁移。预训练结束要确认基础能力和数据污染边界;SFT 结束要确认指令接口、格式和拒答行为;RL 结束要确认奖励提升没有换来长度投机、知识回归或工具失败。
| 迁移 | 必须观测 | 典型回归 | 下一步控制 |
|---|---|---|---|
| Pre-training → SFT | loss、通用能力、chat template | 知识覆盖下降 | 混入保留集、降低学习率 |
| SFT → Preference/RL | 偏好胜率、可验证正确率 | 奖励投机、回答变长 | KL/长度约束、难例重采样 |
| RL → Agentic RL | 工具成功率、轨迹回报 | 单步强、多步崩 | 环境课程、过程奖励 |
| Training → deployment | 延迟、吞吐、峰值显存 | 线上 OOM 或格式漂移 | 量化/批处理/回滚版本 |
训练计划的最低记录
每个 checkpoint 应同时记录数据版本、tokenizer/chat template、目标函数、有效 batch、学习率、精度、并行策略和评测快照。缺一项,出现回归时就无法判断是数据迁移、优化器状态还是推理包装造成的。
相关节点:Catastrophic Forgetting、Training Memory Accounting、Reasoning RL。
阶段切换不是换一个 loss 名字
从预训练切到 SFT,变化的不只是数据格式。预训练的 token 分布通常宽而杂,目标是让模型降低通用 next-token loss;SFT 则把梯度集中在少量角色、任务和输出格式上。若直接沿用预训练的学习率和数据比例,模型会快速适应新接口,却可能损伤词汇覆盖、事实知识或少数语言能力。可行的迁移需要短跑 checkpoint:在新数据 loss、通用回归集和格式验收集上同时观察,找出能力曲线开始分叉的位置。
SFT 之后进入偏好优化时,训练对象又从“这个答案的 token 概率”变成“两个答案的相对选择”。再进入 reasoning RL,样本不再是固定标签,而是当前 policy 自己生成、由 verifier 打分的轨迹。每次迁移都应显式写出:哪些行为被奖励、哪些行为不再被监督、哪些旧能力必须通过 replay 或 KL 保留。否则阶段名称会掩盖真实的目标漂移。
一个 checkpoint 的验收卡
不要只保存训练 loss。每个阶段至少固定三组结果:目标能力(例如工具成功率或可验证正确率)、通用回归(知识、语言、代码、拒答)和接口契约(模板、EOS、JSON schema)。训练过程中按相同 token 预算保存 checkpoint,画出三组曲线,而不是只挑最终模型。若目标集提升、通用集下降,优先回看数据混合和监督 mask;若离线集都好但线上失败,再排查 tokenizer、量化和 serving 包装。
生命周期的闭环在部署后才完成:线上失败轨迹经过脱敏、去重和质量筛选后进入下一轮数据;如果只把线上日志原样回灌,模型会放大用户错误、提示注入和 reward-hacking。数据版本、评测版本和回滚点必须与 checkpoint 一起存档,才能判断改进来自训练还是评测漂移。