用一条生命周期主线理解大模型如何从 base model 变成可上线的 assistant model:预训练、中训练、后训练、评估和数据飞轮。
这一篇先不急着拆单个算法,而是把大模型训练看成一个完整生命周期:数据如何进入模型,参数如何被塑形,模型如何从"会续写"逐渐变成"能执行任务",上线后又如何通过真实反馈继续迭代。
一、一句话总览
大模型训练可以先记成一条线:
预训练 Pretraining-> 中训练 / 继续预训练 Continued Pretraining-> 后训练 Post-training-> 评估 Evaluation-> 数据飞轮 Data Flywheel如果把它压缩成一条工程主线:
预训练让模型学会通用语言建模和世界知识;中训练在特定高质量数据上补能力;后训练把 base model 调成更会听指令、更符合人类偏好的 assistant model;评估用离线和线上指标判断模型是否真的变好;数据飞轮则把线上反馈、badcase 和人工标注重新沉淀为下一轮训练数据。
这条线的关键不是"越后面越高级",而是每一阶段解决的问题不一样。
| 阶段 | 主要目标 | 典型数据 | 训练/优化方式 | 产物 |
|---|---|---|---|---|
| 预训练 | 学通用语言能力和世界知识 | 网页、书籍、代码、论文、多语言语料 | 自监督 next token prediction | Base model |
| 中训练 | 补领域和专项能力 | 代码、数学、长上下文、行业语料 | 继续语言模型训练 | 更强的 base / domain base |
| 后训练 | 对齐指令、偏好和安全边界 | 指令数据、偏好对、奖励信号、工具轨迹 | SFT、DPO、RLHF、GRPO 等 | Assistant model |
| 评估 | 判断能力是否提升,是否安全可用 | benchmark、领域测试集、线上实验 | 离线评测、人工评审、A/B | 模型报告 |
| 数据飞轮 | 用真实反馈持续迭代 | 用户日志、badcase、人工反馈 | 清洗、标注、训练、评测 | 下一轮数据资产 |
从训练对象看,每一阶段都在处理三个东西:
- 数据分布:模型看见什么,就会被什么塑形。
- 参数状态:模型已有能力、已有偏差和已有安全边界。
- 优化目标:loss 或 reward 到底鼓励模型变成什么样。
预训练的优化目标最简单,但数据和算力最大;后训练的数据规模小得多,但目标更贴近人类使用;评估和数据飞轮则决定模型是否真的能进入真实系统。
二、预训练:先学会"接着说"
预训练阶段的核心目标通常是 Next Token Prediction:给定前面的 token,预测下一个 token。
比如训练样本是:
北京是中国的 [MASK]对于自回归语言模型来说,它看到前文后,要给"首都""城市"等候选输出分配概率。这个过程在海量语料上重复很多次,模型就会逐渐学到:
- 语言结构:语法、搭配、上下文关系。
- 世界知识:人名、地点、事实、常识。
- 推理雏形:数学、代码、因果和类比模式。
- 多语言能力:不同语言之间的表达规律。
所以 base model 并不是"什么都不会",它其实已经有很强的语言和知识能力。只是它还没有被训练成一个稳定的助手。
比如你直接问 base model:
请用三点解释 Transformer 的注意力机制。它可能会回答,也可能续写成论文、问答数据、网页片段,甚至自己生成新的问题。因为它本质上只是在做"最可能的文本续写",而不是严格服从用户指令。
三、中训练:在通用能力上继续补专项能力
中训练也常被叫作 continued pretraining、continual pretraining、domain-adaptive pretraining,有些场景也会说 mid-training。它的位置介于预训练和后训练之间。
它解决的问题是:
预训练太泛,后训练数据又太少,如果想让模型真正补上某类能力,通常需要在高质量专项语料上继续训练一段。
常见目标包括:
- 代码能力:继续喂高质量代码仓库、题解、单元测试。
- 数学能力:继续喂数学题、推导、证明、竞赛数据。
- 长上下文能力:用长文档、长对话、长代码库训练上下文建模。
- 多语言能力:补中文、小语种、跨语言数据。
- 垂直领域能力:医疗、法律、金融、教育、企业内部文档。
- 多模态能力:图文、视频、音频等跨模态数据。
中训练和 SFT 很容易混在一起,但它们的重点不同:
| 对比项 | 中训练 | SFT |
|---|---|---|
| 更像什么 | 继续预训练 | 指令微调 |
| 数据形态 | 大量领域文本、代码、文档 | instruction-response 对话样本 |
| 学到什么 | 知识分布、领域语言、专项能力 | 指令跟随、回答格式、对话风格 |
| 损失形式 | 仍然多是语言建模 loss | 对 assistant answer 做监督学习 |
一个简单例子:
- 想让模型更懂法律条文:中训练会喂大量法规、判例、合同、法律解释。
- 想让模型按"先结论、再依据、最后风险提示"的格式回答:SFT 会喂这种格式的问答样本。
四、后训练:把 base model 变成 assistant model
后训练是最容易被用户直接感知的部分,因为现在的大模型体验差异,很多都来自后训练。
它主要解决三类问题:
- 指令跟随:用户让它做什么,它能按要求做。
- 偏好对齐:多个答案都能说通时,它更倾向人类喜欢的答案。
- 安全和工具能力:知道什么时候拒答,什么时候调用工具,什么时候继续追问。
常见方法可以先这样记:
| 方法 | 核心数据 | 主要作用 |
|---|---|---|
| SFT | 人工/合成 instruction-response | 学会按指令回答 |
| RLHF/PPO | 偏好数据 + reward model | 用强化学习优化人类偏好 |
| DPO | prompt、chosen、rejected | 直接用偏好对训练,不显式训练 reward model |
| GRPO | 同一 prompt 的多条输出 + reward/verifier | 用组内相对奖励做强化学习 |
| Safety Alignment | 安全样本、拒答样本、红队数据 | 建立安全边界 |
| Tool-use / Agentic RL | 工具调用轨迹、任务成功反馈 | 学会多步调用工具完成任务 |
所以当别人问"后训练是什么"时,可以这样回答:
后训练不是继续给模型灌知识,而是把一个会续写文本的 base model 调成可交互、可控、符合偏好和安全要求的 assistant model。SFT 主要解决指令跟随,DPO/RLHF/GRPO 主要解决偏好和任务结果优化,安全对齐和工具训练则解决上线可用性。
五、评估:训练不是只看 loss
大模型训练里一个常见误区是:loss 降了,模型就一定更好。
实际不是这样。训练 loss 只是说明模型更适合当前训练数据分布,但上线时真正关心的是:
- 能力有没有提升?
- 幻觉有没有变多?
- 安全性有没有变差?
- 工具调用是否更稳定?
- 用户是否真的更满意?
评估一般会分成几层:
| 评估层次 | 例子 |
|---|---|
| 通用能力 | MMLU、C-Eval、CMMLU、BBH |
| 数学推理 | GSM8K、MATH |
| 代码能力 | HumanEval、MBPP |
| 指令跟随 | IFEval、MT-Bench、Arena 风格评测 |
| RAG | Recall@k、MRR、faithfulness、answer correctness |
| Agent | 任务成功率、工具调用准确率、平均步数、成本 |
| 安全 | 越狱、隐私泄露、偏见、有害内容 |
| 线上 | A/B 实验、满意度、badcase rate、留存、人工反馈 |
评估体系不要只看 benchmark。更完整的结构是:
离线 benchmark 用来快速判断基础能力,领域测试集用来判断业务适配,人工评测用来补主观质量,线上 A/B 用真实用户指标验证最终效果。对于 RAG 和 Agent,还要单独看检索命中、工具调用、任务完成率和失败类型。
六、数据飞轮:线上反馈反过来塑造模型
模型上线之后,训练并没有结束。
一个真实系统会不断产生新数据:
- 用户点赞、点踩、追问、改写。
- 模型回答错误的 badcase。
- Agent 工具调用失败轨迹。
- 人工审核标注。
- 自动评测发现的失败样本。
- 用户真实任务中的长尾需求。
这些数据经过清洗、去重、脱敏、标注后,可以进入下一轮:
线上日志-> badcase 挖掘-> 数据清洗 / 脱敏 / 去重-> 人工或模型辅助标注-> 加入训练集和评测集-> 训练新模型-> 灰度上线和 A/B-> 继续收集反馈这就是数据飞轮。
它的重点不是"收集越多越好",而是要把真实失败样本变成可复用的数据资产。尤其是 Agent 场景,每一次工具调用轨迹都很有价值:模型为什么选错工具、参数为什么填错、观察结果为什么没用上,这些都能反过来训练下一代模型。
七、一个具体例子
假设要做一个企业内部的"合同审查助手",完整管线可能是这样:
- 选择一个通用 base model,它已经有基本语言理解和法律常识。
- 做中训练:加入合同、法规、判例、公司制度等领域语料,让模型更熟悉法律和企业内部表达。
- 做 SFT:准备"用户提问 -> 合同风险分析回答"的指令数据,让模型学会固定输出结构。
- 做偏好优化:同一个问题下,标注"更准确、更谨慎、更可解释"的 chosen 回答,压低啰嗦或误判的 rejected 回答。
- 做安全对齐:遇到高风险法律结论时要求提示"需要专业律师确认",避免过度承诺。
- 做评估:离线看合同风险识别准确率,人工看解释质量,线上看用户采纳率和 badcase rate。
- 做数据飞轮:把用户纠正、法务复核结果、误判案例重新清洗标注,进入下一轮训练和评测。
这个例子里,每个阶段都不是孤立的。中训练如果补不好法律语料,SFT 会变成"硬教模型输出法律话术";评估如果没有高风险合同样本,偏好优化后的模型可能看起来更顺,但风险判断更差;数据飞轮如果只收集点赞点踩,不追踪法务复核结果,就很难知道模型到底错在哪里。
八、本篇小结
大模型训练管线可以看成一条持续塑形链路:
预训练:用海量语料建立通用语言模型中训练:用专项语料补能力和分布后训练:用指令、偏好、奖励和安全数据塑造行为评估:用离线与线上指标判断真实变化数据飞轮:用真实失败样本驱动下一轮迭代真正理解这条线以后,再看 SFT、DPO、RLHF、GRPO、Agentic RL 就不会觉得它们是散落名词。它们都是在回答同一个问题:我们希望模型在什么数据和什么目标函数下,往哪个方向改变。
专题阅读
LLM Base
这篇文章属于同一条阅读链。你可以直接在这里切换,不用再回到列表页重新找。
部分信息可能已经过时
留言区
留言
欢迎纠错、补充、交流。昵称和评论内容必填;如果你愿意,也可以留下联系方式,仅站主可见。