大模型训练四阶段:从原始语料到对齐智能
大语言模型的训练是一个多阶段的复杂过程。从原始互联网文本到能与人类对齐的智能助手,需要经过预训练、监督微调、人类反馈强化学习(RLHF)和直接偏好优化(DPO)四个阶段。本文将全面解析这条训练链路。
一、训练流程总览
┌─────────────────────────────────────────────────────────────┐
│ 大模型训练全流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 阶段1: 预训练 (Pre-training) │
│ 输入: 万亿 Token 原始语料 │
│ 目标: Next Token Prediction │
│ 产出: 基座模型 (Base Model) │
│ │
│ 阶段2: 监督微调 (SFT) │
│ 输入: 高质量指令-回复对 (10K-1M) │
│ 目标: 模仿专家回复 │
│ 产出: 指令模型 (Instruct Model) │
│ │
│ 阶段3: 人类反馈强化学习 (RLHF) │
│ 输入: 人类偏好数据 (A > B 对比) │
│ 目标: 最大化人类偏好奖励 │
│ 产出: 对齐模型 (Aligned Model) │
│ │
│ 阶段4: 直接偏好优化 (DPO) │
│ 输入: 同 RLHF 的偏好数据 │
│ 目标: 直接优化策略, 无需奖励模型 │
│ 产出: 进一步优化的对齐模型 │
│ │
└─────────────────────────────────────────────────────────────┘
二、预训练(Pre-training)
2.1 训练目标
预训练使用Next Token Prediction(NTP)作为训练目标:
$$\mathcal{L}{NTP} = -\sum{t=1}^{T} \log P(x_t | x_{<t}; \theta)$$
给定前 $t-1$ 个 Token,预测第 $t$ 个 Token 的概率。模型通过最小化这个交叉熵损失来学习语言的统计规律。
2.2 数据构成
2026 年主流模型的预训练数据规模:
| 模型 | 训练 Token 数 | 数据来源构成 |
|---|---|---|
| Llama 4 | 20T | 60% 网页 + 20% 代码 + 15% 学术 + 5% 多模态 |
| DeepSeek V4 | 30T | 40% 网页 + 30% 代码 + 20% 数学 + 10% 多语言 |
| GPT-5 | ~40T | 未知 (推测包含大量合成数据) |
数据质量比数量更重要。2026 年的最佳实践:
- 去重:MinHash LSH 去重,去除 90%+ 的重复内容
- 质量过滤:使用小模型打分,保留高质量文本
- 安全过滤:移除有害、偏激内容
- 代码数据:GitHub 高星仓库 + 竞赛代码
- 数学数据:arXiv 论文 + 数学教材 + 证明步骤
2.3 训练超参数
| 参数 | 典型值 | 说明 |
|---|---|---|
| 学习率 | 3e-4 → 3e-5 (cosine) | 预热 + 余弦衰减 |
| Batch Size | 4M-8M Token | 全局 Batch |
| 序列长度 | 4K-8K (逐步扩展) | 阶段性增长 |
| 优化器 | AdamW | β1=0.9, β2=0.95 |
| 权重衰减 | 0.1 | L2 正则化 |
| 梯度裁剪 | 1.0 | 防止梯度爆炸 |
| 训练步数 | 300K-500K | 取决于数据量 |
2.4 训练稳定性
大模型预训练中常见的不稳定性:
- Loss Spike:损失突然跳升,通常由于学习率过大或数据异常
- 梯度爆炸:通过梯度裁剪和 LayerNorm 控制
- 注意力熵坍缩:注意力过度集中于少数 Token
2026 年的稳定训练技术:
- bf16 混合精度:主权重用 fp32,计算用 bf16
- Z-Loss:辅助损失项 $\mathcal{L}_z = \log \sum_i z_i$ 稳定 softmax
- 动态学习率:检测 loss spike 时自动降低学习率
三、监督微调(SFT)
3.1 SFT 的目标
SFT 让模型学会"听指令":
$$\mathcal{L}{SFT} = -\sum{t} \log P(y_t | x, y_{<t}; \theta)$$
其中 $x$ 是用户指令,$y$ 是期望回复。关键区别:只在回复部分计算损失,不对指令部分计算。
3.2 SFT 数据构建
高质量 SFT 数据是模型能力的关键:
| 数据类型 | 数量 | 来源 | 作用 |
|---|---|---|---|
| 通用对话 | 100K | 人工标注 + GPT-4 生成 | 基础对话能力 |
| 代码生成 | 50K | 人工编写 + 验证 | 代码能力 |
| 数学推理 | 50K | 竞赛题 + 逐步解答 | 逻辑推理 |
| 工具使用 | 30K | API 调用示例 | Agent 能力 |
| 多语言 | 50K | 翻译 + 本地化 | 多语言支持 |
| 安全拒答 | 20K | 红队测试数据 | 安全对齐 |
3.3 全参数 vs LoRA
| 方案 | 可训练参数 | 显存需求 | 效果 |
|---|---|---|---|
| 全参数 SFT | 100% | 模型大小 × (2 + optimizer) | 最优 |
| LoRA (r=64) | ~1% | 模型大小 × 1.2 | 接近全参数 |
| QLoRA (r=64) | ~1% | 模型大小 × 0.4 | 略低于 LoRA |
2026 年的实践:大模型(>30B)普遍使用 LoRA 进行 SFT,因为全参数 SFT 的计算成本过高。
3.4 Evol-Instruct
2026 年 SFT 数据生成的主流方法是 Evol-Instruct(进化指令):
- 从简单指令开始
- 使用更强的模型(如 GPT-5)进行指令"进化":
- 增加约束条件
- 增加深度
- 增加多样性
- 验证进化后指令的质量
- 生成回复
这种方法可以自动生成大量高质量、有梯度的训练数据。
四、RLHF(人类反馈强化学习)
4.1 RLHF 三阶段
┌─────────────────────────────────────────────────────┐
│ RLHF 流程 │
├─────────────────────────────────────────────────────┤
│ │
│ 阶段1: 训练奖励模型 (Reward Model) │
│ 数据: 同一 prompt 的两个回复, 人类标注偏好 │
│ 目标: r(x, y_chosen) > r(x, y_rejected) │
│ 损失: L_RM = -log σ(r(x,y_w) - r(x,y_l)) │
│ │
│ 阶段2: PPO 强化学习 │
│ 策略模型 π 生成回复 y │
│ 奖励: r = R(x, y) - β·KL(π||π_ref) │
│ 优化: PPO 算法更新 π │
│ │
│ 阶段3: 迭代优化 │
│ 收集新的人类反馈 → 重训 RM → 再 PPO │
│ │
└─────────────────────────────────────────────────────┘
4.2 奖励模型
奖励模型的训练目标:
$$\mathcal{L}_{RM} = -\log \sigma(r(x, y_w) - r(x, y_l))$$
其中 $y_w$ 是更好的回复(winner),$y_l$ 是较差的回复(loser)。
奖励模型通常是 SFT 模型 + 一个标量输出头的结构:
class RewardModel(nn.Module):
def __init__(self, base_model):
self.base_model = base_model
self.reward_head = nn.Linear(hidden_size, 1)
def forward(self, input_ids, attention_mask):
hidden = self.base_model(input_ids, attention_mask)
last_hidden = hidden[attention_mask.sum(-1) - 1]
reward = self.reward_head(last_hidden)
return reward.squeeze(-1)
4.3 PPO 训练
PPO(Proximal Policy Optimization)的核心步骤:
- 采样:策略模型 $\pi_\theta$ 生成回复
- 打分:奖励模型给出分数 $r(x, y)$
- 优势估计:$A(x, y) = r(x, y) - V(x)$
- 策略更新:
$$\mathcal{L}{PPO} = \min\left(\frac{\pi\theta(y|x)}{\pi_{old}(y|x)} A, \text{clip}\left(\frac{\pi_\theta(y|x)}{\pi_{old}(y|x)}, 1-\epsilon, 1+\epsilon\right) A\right)$$
- KL 约束:$\mathcal{L}{total} = \mathcal{L}{PPO} - \beta \cdot D_{KL}(\pi_\theta || \pi_{ref})$
KL 约束防止策略偏离参考模型太远(防止"奖励黑客")。
4.4 RLHF 的问题
- 训练不稳定:PPO 需要精心调参,容易崩溃
- 奖励黑客:模型学会利用奖励模型的漏洞
- 计算成本高:需要同时维护 4 个模型(策略、参考、奖励、价值)
- 标注成本:人类偏好标注昂贵且不一致
五、DPO(直接偏好优化)
5.1 DPO 的核心洞察
DPO 的突破在于:不需要显式的奖励模型,可以直接从偏好数据优化策略。
数学推导:RLHF 的最优策略与奖励函数之间存在解析关系:
$$\pi^*(y|x) = \frac{\pi_{ref}(y|x) \exp\left(\frac{r(x,y)}{\beta}\right)}{Z(x)}$$
反解得到奖励函数:
$$r(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + \beta \log Z(x)$$
代入 Bradley-Terry 模型,$Z(x)$ 项被消去:
$$P(y_w \succ y_l | x) = \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)$$
5.2 DPO 损失函数
$$\mathcal{L}{DPO} = -\log \sigma\left(\beta \log \frac{\pi\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)$$
5.3 DPO vs RLHF 对比
| 维度 | RLHF (PPO) | DPO |
|---|---|---|
| 需要奖励模型 | 是 | 否 |
| 训练稳定性 | 低 | 高 |
| 计算成本 | 高 (4 模型) | 低 (2 模型) |
| 实现复杂度 | 高 | 低 |
| 效果上限 | 较高 | 接近 RLHF |
| 探索能力 | 强 | 弱 |
5.4 DPO 的变体
IPO(Identity Preference Optimization) 使用均方误差替代交叉熵,防止过拟合:
$$\mathcal{L}{IPO} = \left(\log \frac{\pi\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)} - \frac{1}{2\beta}\right)^2$$
KTO(Kahneman-Tversky Optimization) 不需要成对偏好数据,只需要"好/坏"标签,大幅降低数据收集成本。
5.5 迭代 DPO
2026 年的最佳实践是迭代 DPO:
- 用当前模型生成多个回复
- 使用奖励模型(或 LLM-as-Judge)标注偏好
- 用 DPO 优化模型
- 重复
迭代 DPO 结合了 RLHF 的探索能力和 DPO 的稳定性。
六、2026 年训练链路最佳实践
6.1 推荐流程
预训练 (1T+ tokens, NTP)
│
▼
SFT (100K-500K 高质量指令数据)
│
▼
DPO (迭代 3-5 轮, 每轮 50K 偏好对)
│
▼
RLHF (可选, 仅在高要求场景)
│
▼
安全对齐 (红队测试 + 安全 SFT)
│
▼
部署模型
6.2 关键决策点
| 决策 | 推荐选择 | 理由 |
|---|---|---|
| 预训练数据 | 多样化 + 高质量 | 数据质量决定上限 |
| SFT 方式 | 全参数 (小模型) / LoRA (大模型) | 平衡效果和成本 |
| 对齐方法 | DPO 优先 | 稳定且高效 |
| RLHF | 高要求场景使用 | 成本高但探索性强 |
| 迭代轮数 | DPO 3-5 轮 | 过多轮次会过拟合 |
七、总结
大模型训练的四阶段是一个逐步精炼的过程:
- 预训练注入世界知识
- SFT教会模型听指令
- DPO/RLHF让模型与人类偏好对齐
- 迭代优化持续提升
每个阶段都有其不可替代的作用。理解每个阶段的目标、挑战和最佳实践,是构建高质量大模型的基础。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。
