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)

核心目的

让一个"刚出生的婴儿"学会两件事:

  1. 大量的知识 —— 通过海量文本语料获取世界知识
  2. 语言的运用 —— 理解文字之间的关系、语法、表达方式

核心机制:预测下一个字(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)

这是本节课的核心概念之一,用于衡量模型对一条训练数据的掌握程度。

计算方式:

  1. 给模型第一个字"人",让它预测第二个字——只取正确答案"类"对应的概率值
  2. 给模型"人类",让它预测第三个字——只取"简"对应的概率
  3. 给模型"人类简",让它预测第四个字——只取正确答案对应的概率
  4. 如此反复,遍历整段文字的所有字(包括标点符号、换行符)

段落联合概率 = 所有位置正确答案对应概率的乘积

这个数值可以非常非常小,它描述了"在当前模型智商水平下,能一字不差地完整输出整段训练数据的概率"。

训练迭代过程

  • 一次处理一批训练数据,称为一个 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 的做法:

  1. 准备一批问题
  2. 让模型对每个问题生成 4个不同答案(A、B、C、D)
  3. 人工标注员对4个答案进行排序(而非打分),如 “B > A > C > D”
  4. 一个问题的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

  1. 奖励模型能否跨模型复用? 很难。RM 是与特定模型绑定的,因为每个模型的回答特征不同。
  2. SFT和预训练的损失函数一样吗? 一样,都是基于段落联合概率的对数损失函数。
  3. 偏好数据是否主观? 是的,但在模型表现远不如真人的阶段,对标人类偏好(即使是主观的)是很好的提升手段。
  4. 预训练需要人工标注吗? 不需要,预训练的数据处理几乎是全自动化的。
  5. GPT为什么做Agent最强? 核心在于指令遵循能力极强,而这是做 AI Agent 最重要的能力。
  6. SFT和RAG的关系? 数据格式相似(都是一问一答),但SFT数据覆盖面更广且包含通用对话数据,以免破坏模型原有的对话能力。