LLM训练范式:预训练与微调
文章目录
🏗️ 大模型训练的四大阶段
整个大模型的训练流程分为以下阶段:
预训练 (Pre-training)
↓
SFT 有监督微调 (Supervised Fine-Tuning)
↓
RM 奖励模型 (Reward Model) —— 训练一个"教练模型"
↓
RL 强化学习 (Reinforcement Learning / PPO) —— 使用教练指导模型
↓
循环迭代:RM → RL → RM → RL → ... 直至无法提升
其中预训练为第一阶段,SFT、RM、RL 统称为后训练(Post-Training)。
1️⃣ 预训练阶段 (Pre-training)
核心目的
让一个"刚出生的婴儿"学会两件事:
- 大量的知识 —— 通过海量文本语料获取世界知识
- 语言的运用 —— 理解文字之间的关系、语法、表达方式
核心机制:预测下一个字(Next Token Prediction)
大模型工作时只做一件事:根据前面的文字,预测并输出下一个最可能的字。
- 我们跟大模型对话时输入的"问题",本质上叫提示词(Prompt)——目的是提示模型"我给你这些文字,请继续往后输出"
- 模型并不知道"正确答案",只能根据过去见过的海量知识去"猜"下一个字应该是什么
训练数据规模
| 单位 | 含义 | 示例 |
|---|---|---|
| M | 百万(Million) | — |
| B | 十亿(Billion) | 4.5B = 45亿参数 |
| T | 万亿(Trillion) | 15T tokens ≈ 13万亿中文汉字 |
各模型预训练数据量:
- Llama 3:约 15T tokens(≈13万亿汉字)
- Llama 4 最大版本:约 40T tokens(≈30万亿汉字)
- GPT-3.5:约 3000亿 tokens(以4000 token段落计≈7500万条训练数据)
段落联合概率 (Joint Probability of a Paragraph)
这是本节课的核心概念之一,用于衡量模型对一条训练数据的掌握程度。
计算方式:
- 给模型第一个字"人",让它预测第二个字——只取正确答案"类"对应的概率值
- 给模型"人类",让它预测第三个字——只取"简"对应的概率
- 给模型"人类简",让它预测第四个字——只取正确答案对应的概率
- 如此反复,遍历整段文字的所有字(包括标点符号、换行符)
段落联合概率 = 所有位置正确答案对应概率的乘积
这个数值可以非常非常小,它描述了"在当前模型智商水平下,能一字不差地完整输出整段训练数据的概率"。
训练迭代过程
- 一次处理一批训练数据,称为一个 Batch
- 整个预训练过程通常需要几百万到上千万次迭代
- 每次迭代都在调整模型内部参数,使整体的段落联合概率逐步提升
训练终止条件: 当无论如何迭代,整体平均的段落联合概率都无法再提升时,训练停止。没有绝对的"及格线",由模型自身能力的瓶颈决定。
算力与成本
| 模型 | 显卡 | 数量 | 训练时长 | 显卡单价 |
|---|---|---|---|---|
| Llama 2 | A100 | ~2000张 | 21天 | 8-12万人民币 |
| Llama 3 (405B) | H100 | ~16000张 | 54天 | ~25万人民币 |
💰 预训练阶段消耗了整个训练流程约 90% 的经费。
预训练完成后的模型状态
- ✅ 非常熟悉人类语言,语言能力接近人类水平
- ✅ 掌握了大量人类知识
- ❌ 说话像"接话茬"——能聊但不会做任务
- ❌ 不能进行问答、推理、代码生成、指令执行等任务
2️⃣ SFT 有监督微调阶段 (Supervised Fine-Tuning)
又称:指令微调(Instruction Tuning)、SFT
核心目的
让模型从"会聊天"升级为**“会做任务”**——包括对话、分类、推理、代码生成、解析等各种任务类型。
训练数据格式
SFT阶段的训练数据是一问一答(Q&A Pair),格式通常为:
<|im_start|>system
你是一个有用的AI助手
<|im_end|>
<|im_start|>user
解释一下什么是登月
<|im_end|>
<|im_start|>assistant
登月是指人类通过航天器...
<|im_end|>
关键要素:
- 系统提示(System Prompt):定义模型的角色和行为
- 用户输入(User Input):问题或指令
- 模型输出(Assistant Output):标准答案
- 特殊标记(Special Tokens):
<|im_start|>、<|im_end|>等,用于分隔不同角色(通常4000+个特殊标记)
数据量对比
| 阶段 | GPT-3.5 | Llama 3 |
|---|---|---|
| 预训练 | ~7500万条 | ~37.5亿条 |
| SFT | ~1.3万条 | 几十万~100万条 |
SFT的数据量比预训练小数千倍,但数据质量要求极高。
OpenAI 的 SFT 数据生产方式
- 雇佣了 80位博士(不同领域、已毕业工作多年)
- 人工撰写高质量问答对
- 例如:“像一个六岁的小孩解释一下什么叫登月”——博士亲自撰写答案
SFT 完成后的模型状态
- ✅ 能理解指令并执行任务
- ✅ 能做问答、解析、推理等
- ❌ 能做任务但做得不够好(不够全面、不够深入、不够严谨)
- ❌ 与人类期望存在差距——需要对齐(Alignment)
3️⃣ 奖励模型阶段 (Reward Model / RM)
又称:奖励模型、教练模型(Coach Model)
核心目的
训练一个独立的"教练模型",用来给大模型的回答打分,评估回答质量。这是为后续强化学习做准备。
为什么需要 RM?
到了SFT阶段后,已经很难用"准备标准答案"的方式继续提升模型——模型"会做"了但"不精通"。需要一个机制来告诉模型"你的回答好在哪里、差在哪里"。
RM 的训练数据:偏好排序数据
OpenAI 的做法:
- 准备一批问题
- 让模型对每个问题生成 4个不同答案(A、B、C、D)
- 人工标注员对4个答案进行排序(而非打分),如 “B > A > C > D”
- 一个问题的4个答案可以产生 6条比较数据(B>A, A>C, C>D, B>C, B>D, A>D)
💡 为什么用排序而非打分?因为给绝对分数(如75分)在不同标注员之间很难统一标准;而"A比B好"这种相对判断更容易标注、一致性更高。
早期标注员: 肯尼亚的"$2小时标注工程师",只做简单的二元比较(“A和B哪个更好?")
RM 的训练目标
RM 学习的目标是:给B答案的分数 > A的分数 > C的分数 > D的分数,让RM输出的打分与人类偏好排序一致。
4️⃣ 强化学习阶段 (Reinforcement Learning / RL)
核心算法:PPO (Proximal Policy Optimization)
核心机制:教练+运动员
大模型(运动员) ←→ 奖励模型(教练)
│ │
├─ 生成回答 ├─ 给回答打分
│ │
└─ 根据分数调整策略 ←────┘
- 大模型生成一个回答 → RM打分 → 模型根据分数调整 → 再生成 → 再打分 → 循环
- 强化学习来源于游戏AI领域(如围棋、游戏人机对战),核心是需要"知道结果的反馈”
迭代循环:RLHF 流程
SFT → 训练 RM(教练1.0) → RL 强化学习
↓
RM(教练2.0) → RL 强化学习
↓
RM(教练3.0) → RL 强化学习
↓
... 直至无法提升
这就是著名的 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习):
- RL = 强化学习
- HF = Human Feedback(人类反馈)
RLHF 的完整含义:
先做 SFT → 训练教练模型 → 强化学习 → 再训练更优教练模型 → 再强化学习 → 不断循环
这个循环过程也叫对齐(Alignment)——让模型的回答逐步对齐人类的偏好和标准。
循环何时结束? 当模型的表现提升到教练也无法分辨哪个回答更好时,说明这种模式已经达到瓶颈。GPT-3/4、DeepSeek-V3 基本在此阶段结束。GPT-4o、o3、DeepSeek-R1 等还有后续阶段。
🔄 开源 vs OpenAI:训练范式的差异
两种不同的后训练路径
| 维度 | OpenAI | Llama (Meta) |
|---|---|---|
| SFT数据来源 | 80位博士人工撰写(~1.3万条) | 模型生成 + RM打分筛选 |
| SFT数据生成 | 纯人工 | 拒绝采样(Rejection Sampling) |
| 每问题生成答案数 | 4个 | K个(K≈10-30) |
| 保留策略 | 全部用于RM排序 | RM打分后只保留Top 3 |
| 核心循环 | RM→RL→RM→RL 交替迭代 | 6轮循环(包含DPO等简化步骤) |
Llama 的 SFT 数据生成流程(拒绝采样)
收集问题(几十万条)
↓
当前最好模型对每个问题生成 K 个答案(K≈10-30)
↓
RM 对所有答案打分
↓
每个问题只保留得分最高的 3 个答案
↓
问题 + Top3答案 = 90万条 SFT 训练数据
为什么 Llama 需要生成20个答案?
- 大模型是概率模型,同一问题多次生成结果不同
- 生成20个答案中,一定有好有坏
- 让 RM 挑最好的3个,实现拒绝低质量、保留高质量
- 同一个问题的不同答案之间可能差距很大
关键差异
OpenAI 路径(强RLHF):
- SFT 数据由专家人工撰写,质量极高
- 依赖强大的强化学习进行对齐
- 指令遵循能力(Instruction Following)业界最强
Llama 路径(简化RLHF + DPO):
- SFT 数据由模型生成+RM筛选,自动化程度高
- 早期强化学习能力有限,后引入 DPO(Direct Preference Optimization)
- 直接使用偏好数据微调模型(AB比较数据,分4个等级:显著好/好一点/差不多/差一点)
🌍 开源模型生态现状
模型梯队
| 梯队 | 模型 | 说明 |
|---|---|---|
| 🥇 全球最强 | GPT系列(OpenAI) | 指令遵循、Agent开发能力仍是冠军 |
| 🥇 开源第一 | 通义千问 Qwen(阿里巴巴) | 开发者使用率、下载量、二次训练衍生模型均为开源第一 |
| 🥈 开源第二 | Llama(Meta) | 原开源头部,2024下半年被Qwen反超 |
| 🥉 用户知名 | DeepSeek | 在C端用户中知名度高,开发者生态不及Qwen |
| 中后位置 | 豆包 Doubao(字节) | 休闲娱乐可用,严肃AI应用场景较吃力 |
如果要做 AI 应用,国内开源首选 Qwen(通义千问),闭源模型 GPT 仍是最强。
📌 核心概念速查表
| 概念 | 英文 | 解释 |
|---|---|---|
| 预训练 | Pre-training | 第一阶段训练,用海量文本让模型学会语言和知识 |
| 有监督微调 | SFT | 用一问一答数据让模型学会做任务 |
| 指令微调 | Instruction Tuning | 同SFT,强调让模型理解指令 |
| 奖励模型 | Reward Model (RM) | 独立的"教练模型",能对回答质量打分 |
| 强化学习 | RL / PPO | 通过"教练打分+自我调整"循环提升模型 |
| 人类反馈强化学习 | RLHF | RL + Human Feedback 的完整流程 |
| 对齐 | Alignment | 让模型回答对齐人类偏好和标准 |
| 段落联合概率 | Joint Probability | 整段训练数据每个位置正确答案概率的乘积 |
| 提示词 | Prompt | 给模型的输入文字,引导其继续输出 |
| Token | Token | 文本最小单位,约等于0.8个汉字 |
| Batch | Batch | 一次迭代处理的一批训练数据 |
| 拒绝采样 | Rejection Sampling | 生成多个答案,只保留高质量的几个 |
| 偏好数据 | Preference Data | 人类标注的"A比B好"排序数据 |
| DPO | Direct Preference Optimization | 直接用偏好数据微调模型的简化方法 |
📖 Q&A
- 奖励模型能否跨模型复用? 很难。RM 是与特定模型绑定的,因为每个模型的回答特征不同。
- SFT和预训练的损失函数一样吗? 一样,都是基于段落联合概率的对数损失函数。
- 偏好数据是否主观? 是的,但在模型表现远不如真人的阶段,对标人类偏好(即使是主观的)是很好的提升手段。
- 预训练需要人工标注吗? 不需要,预训练的数据处理几乎是全自动化的。
- GPT为什么做Agent最强? 核心在于指令遵循能力极强,而这是做 AI Agent 最重要的能力。
- SFT和RAG的关系? 数据格式相似(都是一问一答),但SFT数据覆盖面更广且包含通用对话数据,以免破坏模型原有的对话能力。