在大语言模型(LLM, Large Language Model)的训练和对齐流程中,CPT、SFT、DPO是三个关键阶段的缩写,分别代表:
1.CPT:Continued Pre-Training(继续预训练)
有时也称为Domain-specific Pre-Training或Post-Pretraining
✅ 目的:
在通用预训练(如 LLaMA、Qwen 的原始训练)之后,用特定领域或高质量语料继续训练模型,使其掌握更专业、更新或更符合目标场景的知识。
🔧 做什么?
- 输入:大量无标注文本(如医学论文、代码、金融报告、中文百科等)
- 方法:依然使用自回归语言建模目标(即预测下一个词,损失函数为交叉熵)
- 模型结构不变,继续训练 Transformer 的所有参数
🌰 举例:
- 用 GitHub 代码继续训练 → 得到更强的代码生成能力(如 CodeLLaMA)
- 用中文书籍/网页继续训练 → 提升中文理解(如 Chinese-LLaMA)
- 用最新新闻数据训练 → 更新模型知识截止日期
⚠️ 注意:
- CPT 不涉及指令(instruction)或人类偏好
- 输出仍是“通用语言模型”,不会自动遵循指令
2.SFT:Supervised Fine-Tuning(监督微调)
也叫Instruction Tuning(指令微调)
✅ 目的:
教会模型理解和遵循人类指令,将“通用语言模型”转变为“有用助手”。
🔧 做什么?
- 输入:人工编写的 (指令, 回答) 对,例如:
{"instruction":"解释牛顿第一定律","output":"牛顿第一定律指出:任何物体都要保持匀速直线运动或静止状态,直到外力迫使它改变运动状态为止。"} - 方法:以监督学习方式微调模型,最小化生成回答与标准答案的交叉熵损失
- 通常只微调部分参数(如全参数微调、LoRA)
🌰 效果:
- 模型学会格式化输出、多轮对话、任务分解等
- 但可能仍会生成不真实、有害或冗长的回答(因为 SFT 数据有限,且未建模人类偏好)
3.DPO:Direct Preference Optimization(直接偏好优化)
一种替代 RLHF(基于强化学习的人类反馈)的对齐方法
✅ 目的:
让模型输出更符合人类偏好的回答(如有帮助、诚实、无害),而不仅仅是模仿 SFT 数据。
🔧 做什么?
- 输入:偏好数据集,每条包含:
- 一个 prompt
- 两个模型生成的回答:chosen(优选)vsrejected(次选)
- 由人类标注哪个更好
- 方法:不使用强化学习,而是通过一个巧妙的损失函数直接优化策略模型,使其更倾向于生成 “chosen” 回答
📐 DPO 核心思想(简化):
如果人类认为回答 A 比 B 好,那么模型对 A 的 log-probability 应该显著高于 B。
✅ DPO 优势(vs RLHF):
| 项目 | RLHF | DPO |
|---|---|---|
| 是否需要奖励模型(RM) | ✅ 需要先训练 RM | ❌ 不需要 |
| 是否使用强化学习(PPO) | ✅ 是,复杂不稳定 | ❌ 否,纯监督式训练 |
| 实现难度 | 高 | 低 |
| 训练稳定性 | 较差 | 更好 |
✅ 总结对比表
| 阶段 | 全称 | 输入数据 | 目标 | 是否需要标注 |
|---|---|---|---|---|
| CPT | Continued Pre-Training | 大量无标签文本 | 扩展知识/领域适应 | ❌ 无监督 |
| SFT | Supervised Fine-Tuning | (指令, 回答) 对 | 学会遵循指令 | ✅ 人工编写 |
| DPO | Direct Preference Optimization | (prompt, chosen, rejected) | 对齐人类偏好 | ✅ 人工偏好标注 |
💡 补充说明
- RLHF(Reinforcement Learning from Human Feedback)是 DPO 之前的主流对齐方法,包含两步:
- 用偏好数据训练奖励模型(Reward Model, RM)
- 用 PPO 算法优化语言模型以最大化 RM 奖励
- DPO 是 RLHF 的“简化替代方案”,效果相当甚至更好,已成为当前主流(如 Llama-3、Qwen2 等都采用 DPO)
大模型训练,典型的流程就是:
CPT → SFT → DPO,逐步从“知识丰富”到“听话”再到“靠谱”。