模型训练与对齐
是什么
模型训练是将一个随机初始化的神经网络,通过海量数据和计算资源,训练成能够理解和生成人类语言的 LLM 的过程。
一个 LLM 从”白纸”到”AI 助手”,需要经历三个阶段:先学知识,再学对话,最后学做人。
阶段一:预训练 → 学知识(语言、事实、推理)
阶段二:有监督微调 SFT → 学对话(遵循指令、格式化回答)
阶段三:人类偏好对齐 → 学做人(安全、有帮助、诚实)
阶段一:预训练(Pre-training)
目标
让模型学会语言的统计规律和世界知识。训练结束后得到的是 Base Model(基座模型)。
训练任务
Next Token Prediction(下一个 Token 预测):
输入: "法国的首都是"
标签: "巴"
输入: "法国的首都是巴"
标签: "黎"
模型的唯一任务就是:给定前面的所有 Token,预测下一个 Token 是什么。损失函数是预测概率与真实 Token 之间的交叉熵。
训练数据
| 数据来源 | 规模 | 用途 |
|---|---|---|
| 互联网网页(CommonCrawl) | 数万亿 Token | 通用语言和知识 |
| 书籍 | 数百亿 Token | 长文理解和深度知识 |
| 代码(GitHub) | 数千亿 Token | 编程能力 |
| 学术论文(arXiv) | 数百亿 Token | 科学知识和推理 |
| 维基百科 | 数十亿 Token | 结构化事实 |
| 对话数据(Reddit 等) | 数百亿 Token | 对话理解 |
数据处理流程:
原始数据 → 去重 → 清洗(去广告/乱码)→ 质量过滤 → 毒性过滤 → Tokenize → 训练
数据质量对模型性能的影响远超参数量。低质量数据会导致模型学到错误知识和不良表达。
训练规模
| 模型 | 参数量 | 训练 Token | GPU | 训练时间 |
|---|---|---|---|---|
| GPT-3 | 1750 亿 | 3000 亿 | 1024 × A100 | ~1 个月 |
| Llama 2 70B | 700 亿 | 2 万亿 | 2048 × A100 | ~2 个月 |
| Llama 3 405B | 4050 亿 | 15 万亿 | 16384 × H100 | ~3 个月 |
Scaling Laws
OpenAI 研究发现,模型性能与三个因素之间存在幂律关系:
Loss ∝ N^(-α) × D^(-β) × C^(-γ)
N = 模型参数量
D = 训练数据量(Token 数)
C = 计算量(FLOPs)
意味着:在一定范围内,投入更多参数、数据、算力,性能会可预测地提升。这就是为什么 AI 公司不断”堆大模型”的理论依据。
Base Model 的特性
预训练完成后的 Base Model:
- 能力:续写文本、知识问答、翻译、代码补全
- 不能:不会”对话”——你问一个问题,它可能接着写 10 个类似的问题而不是回答
- 风险:可能生成有害、不准确、偏见性的内容(因为训练数据中就有这些)
用户: "请解释什么是 Docker"
Base Model: "请解释什么是 Kubernetes\n请解释什么是容器化\n请解释什么是微服务..."
(它在"续写"类似的问题列表,而不是"回答"你的问题)
阶段二:有监督微调(SFT)
目标
教 Base Model 理解和遵循人类指令,将其从”文本续写器”变成”对话助手”。
训练数据
高质量的指令-回答对(Instruction-Response Pairs):
{
"instruction": "请解释什么是 Docker,用通俗的语言",
"response": "Docker 是一种容器化技术。你可以把它想象成一个轻量级的虚拟机..."
}数据来源:
- 人工标注(成本高、质量高)
- 从强模型蒸馏(用 GPT-4 生成训练数据给小模型)
- 开源数据集(ShareGPT、OASST 等)
训练方式
SFT 本质上是在 Base Model 基础上继续训练,但只用指令-回答数据:
输入: [System Prompt] + [用户指令]
标签: [期望的回答]
模型学会了:
- 理解不同类型的指令(问答、摘要、翻译、代码等)
- 以合适的格式回复(不再续写无关内容)
- 遵循特定的行为规范(礼貌、结构化、承认不确定性)
参数高效微调(PEFT)
全量微调(修改所有参数)成本极高。PEFT 方法只修改少量参数:
| 方法 | 原理 | 可训练参数占比 |
|---|---|---|
| LoRA | 在注意力层插入低秩矩阵 | ~0.1%-1% |
| QLoRA | LoRA + 4bit 量化 | ~0.1% |
| Prefix Tuning | 在输入前添加可训练的”虚拟前缀” | ~0.1% |
| Adapter | 在 Transformer 层间插入小型网络 | ~1-5% |
LoRA 原理:
原始权重矩阵 W (d×d):不修改
添加低秩分解:ΔW = A × B
A: d×r 矩阵(r << d,通常 r=8 或 16)
B: r×d 矩阵
推理时:W' = W + ΔW
LoRA 让在消费级 GPU(如单张 24G 显卡)上微调 7B-70B 模型成为可能。
阶段三:人类偏好对齐
为什么需要对齐
SFT 之后的模型已经能”对话”,但仍存在问题:
- 可能生成有害、歧视性内容
- 可能泄露用户隐私
- 可能”过度帮忙”(帮用户做危险的事)
- 回答质量参差不齐——有些很好,有些很差
对齐(Alignment) 的目标是让模型的行为符合人类价值观,通常遵循 HHH 原则:
- Helpful(有帮助):尽可能有效地回答用户问题
- Honest(诚实):不确定时坦诚承认,不编造事实
- Harmless(无害):拒绝执行有害请求,不输出偏见内容
RLHF(基于人类反馈的强化学习)
最经典的对齐方法,由 OpenAI 在 InstructGPT 论文中提出。
三步流程:
Step 1:收集人类偏好数据
对于同一个 Prompt,让 SFT 模型生成多个回答,由人类标注员排序:
Prompt: "如何学习编程?"
回答 A: "先学 Python,因为它语法简单..." ← 人类评分:8/10
回答 B: "随便学一个语言就行了" ← 人类评分:3/10
回答 C: "建议先学 C 语言打基础..." ← 人类评分:7/10
偏好排序:A > C > B
Step 2:训练奖励模型(Reward Model)
用偏好数据训练一个模型,学习”人类喜欢什么样的回答”:
奖励模型:输入 (Prompt, Response) → 输出一个分数
RM("如何学编程", 回答A) = 0.85
RM("如何学编程", 回答B) = 0.21
RM("如何学编程", 回答C) = 0.72
Step 3:强化学习优化
用 PPO(Proximal Policy Optimization)算法,让 SFT 模型的输出向高奖励方向优化:
while 训练未结束:
生成回答 = SFT_模型(Prompt)
奖励分数 = 奖励模型(Prompt, 生成回答)
更新 SFT_模型 → 让它生成更多高奖励的回答
约束:不要偏离 SFT 模型太远(KL 散度惩罚)
KL 散度惩罚防止模型为了”刷分”而退化(比如学会写讨好但无实质的回答)。
DPO(Direct Preference Optimization)
DPO 是对 RLHF 的简化——直接从偏好数据优化模型,省去了训练奖励模型和强化学习两步:
RLHF:偏好数据 → 训练奖励模型 → 强化学习 → 对齐模型
DPO: 偏好数据 → 直接优化 → 对齐模型
DPO 的核心思想:
对于每对 (好回答, 差回答):
增加生成"好回答"的概率
降低生成"差回答"的概率
DPO 的优势:
- 不需要训练奖励模型(节省成本)
- 不需要强化学习(训练更稳定)
- 实现简单,效果与 RLHF 相当甚至更好
目前 DPO 和其变体(如 IPO、KTO)正在逐步替代 RLHF 成为主流对齐方法。
训练完成后:推理与部署
模型量化
训练时用 FP32/BF16(32/16 位浮点),但推理时可以压缩:
| 精度 | 每参数字节 | 70B 模型大小 | 质量损失 |
|---|---|---|---|
| FP16/BF16 | 2B | ~140 GB | 无 |
| INT8 | 1B | ~70 GB | 极小 |
| INT4 (GPTQ/AWQ) | 0.5B | ~35 GB | 小 |
| GGUF Q4_K_M | ~0.5B | ~40 GB | 小(CPU 友好) |
量化让在消费级硬件上运行大模型成为可能。配合 Ollama 等工具可以在本地笔记本电脑上运行。
推理优化
| 技术 | 原理 |
|---|---|
| KV Cache | 缓存已计算的注意力键值,避免重复计算 |
| Flash Attention | 优化注意力计算的内存访问模式 |
| Continuous Batching | 动态调度多个请求共享 GPU |
| Speculative Decoding | 用小模型快速生成草稿,大模型验证 |
| MoE(专家混合) | 每次推理只激活部分参数(DeepSeek V3 使用) |
开源 vs 闭源生态
| 维度 | 开源模型 | 闭源模型 |
|---|---|---|
| 代表 | Llama、Qwen、DeepSeek | GPT-4、Claude、Gemini |
| 成本 | 一次性硬件投入 | 按 Token 付费 |
| 定制化 | 可微调、可修改 | 只能通过 API 调用 |
| 隐私 | 数据本地处理 | 数据发送到云端 |
| 性能 | 正在快速追赶 | 目前顶尖仍领先 |
| 门槛 | 需要 GPU 和工程能力 | 开箱即用 |
趋势:开源模型正在快速缩小与闭源模型的差距,尤其在特定领域(如代码、中文)已经非常接近甚至超越。
关键术语速查
| 术语 | 全称 | 含义 |
|---|---|---|
| SFT | Supervised Fine-Tuning | 有监督微调 |
| RLHF | Reinforcement Learning from Human Feedback | 基于人类反馈的强化学习 |
| DPO | Direct Preference Optimization | 直接偏好优化 |
| LoRA | Low-Rank Adaptation | 低秩适配(参数高效微调) |
| PPO | Proximal Policy Optimization | 近端策略优化(强化学习算法) |
| MoE | Mixture of Experts | 混合专家(稀疏激活架构) |
| KL 散度 | Kullback-Leibler Divergence | 衡量两个概率分布差异的指标 |
延伸阅读
- 01-LLM 原理:LLM 的宏观认知与推理流程
- 02-Transformer 架构:模型的底层架构
- 03-Embedding 与向量表示:Token Embedding 的机制