Skip to content

模型训练范式

摘要: 大语言模型的训练遵循一条从通用知识灌输到人类偏好对齐的流水线范式。预训练阶段通过自监督学习(Next-Token Prediction/MLM)在海量语料上构建基础能力,其效果受 Scaling Laws 支配——模型性能与参数量、数据量和算力呈幂律关系。对齐阶段依次通过监督微调(SFT)赋予模型指令遵循能力,再通过 RLHF 或 DPO 将人类偏好注入模型,使其输出符合有用性、真实性和无害性标准。理解这条训练流水线,是评估模型能力边界和选择微调策略的基础。

📄
图集速览:模型训练范式——从海量知识灌输到人类价值对齐如果你对模型训练范式还比较陌生,建议先读这篇图集速览。用可视化图片集合和要点摘要,帮你快速理清预训练、微调与对齐的完整流水线。
预训练微调对齐RLHF

1. 引言

现代大语言模型的训练并非一蹴而就,而是一条环环相扣的精密流水线。从海量语料中的知识积累,到人类偏好的精准对齐,每个阶段都在塑造模型的能力与边界。理解这条训练流水线,正是解锁 LLM 核心能力的关键。

2. Pre-training(预训练)

预训练是 LLM 训练的基石,也是资源消耗最密集的阶段。如果将 LLM 比作一位学生,预训练就相当于"通读人类所有典籍"的奠基过程——在浩瀚语料中习得语言规律与世界知识,为后续能力发展打下坚实基础。

2.1 自监督学习(Next-Token Prediction / MLM)

预训练的核心思想被称为自监督学习:不需要人工标注,模型从数据本身自动构造监督信号。

GPT 系列模型的 Next-Token Prediction

GPT 系列采用自回归(Autoregressive)方式。给定前文,模型预测下一个 token:

输入:  "中国的首都是"
模型预测: "北"  → 输入变为 "中国的首都是北"
继续预测: "京"  → 输入变为 "中国的首都是北京"

损失函数: 交叉熵损失 = -log P(正确token | 前文tokens)

这就是 Causal Language Modeling(CLM),每个位置只能看到它前面的 token(因果注意力掩码)。

BERT 系列的 Masked Language Modeling(MLM)

BERT 采用另一种思路——随机遮住 15% 的 token,让模型根据上下文填空:

原句: "猫坐在垫子上"
遮罩: "猫坐在 [MASK] 上"
模型需预测: [MASK] = "垫子"

损失只在被遮罩的位置计算

关键区别

MLM 是双向的(能看到前后文),CLM 是单向的(只看前文)。现代大模型几乎都采用 CLM,因为它更自然地适配对话生成任务。

2.2 训练数据规模与质量

关键理解

"Garbage in, garbage out" 在预训练中体现得尤为深刻。

一个常见的经验是:用更少但更好的数据训练,效果好于用更多但更差的数据训练

预训练数据量级用万亿 token衡量:

模型训练数据量
GPT-3 (2020)~300B tokens
LLaMA 2 (2023)2T tokens
DeepSeek-V3 (2024)14.8T tokens

质量比数量更重要,LLaMA 2 的技术报告明确指出了这一点——2T 高质量 token 的效果远超更多低质量 token。

数据处理的典型流程:

原始网页爬取 → 语言过滤 → 去重(MinHash) → 启发式清洗
→ 基于模型的质量打分 → 去隐私(PII移除) → 最终语料

2.3 Scaling Laws

2022 年,DeepMind 的 Chinchilla 论文提出了一个关键发现:在给定计算预算下,模型参数量和训练数据量应该等比例增长

在此之前,大家习惯的做法是把模型越做越大(像 GPT-3 有 175B 参数但只训练了 300B token)。Chinchilla 定律指出这是欠训练(undertrained):

Chinchilla 最优:  参数量 ∝ 训练token数

例如: 你有 10× 的计算预算
  正确做法: 模型扩大 ~3.16×, 数据扩大 ~3.16×
  常见错误: 模型扩大 10×, 数据不变

更直觉的理解:不要只给模型"更大的大脑",要同时给它"更多的知识"。

计算预算 C 的分配:

                 参数量 (N)              训练数据量 (D)

Chinchilla:  N_opt ∝ C^0.5           D_opt ∝ C^0.5
过往实践:    偏大(如C^0.73)            偏小(C^0.27)

这意味着: 像 LLaMA 2-7B 用 2T token 训练的 "小模型大数据"
策略, 正是 Chinchilla 定律的成功应用

2.4 分布式训练概览

当模型规模超出单张 GPU 的显存容量时,就需要采用分布式训练技术。目前主要有三种并行策略:

┌──────────────────────────────────────────────────────┐
│                    分布式训练策略                       │
├──────────────┬──────────────┬─────────────────────────┤
│  数据并行(DP) │  模型并行(MP) │     ZeRO (DeepSpeed)    │
├──────────────┼──────────────┼─────────────────────────┤
│ 每张卡有完整  │ 模型切分到    │ ZeRO-1: 切分优化器状态    │
│ 模型副本      │ 多张卡上      │ ZeRO-2: +切分梯度         │
│ 各自算自己的   │              │ ZeRO-3: +切分参数         │
│ batch数据     │ 流水线并行    │                         │
│ 最后聚合梯度  │ 张量并行      │ 最小化显存占用           │
└──────────────┴──────────────┴─────────────────────────┘
  • 数据并行:每张 GPU 持有完整模型副本,各自处理不同数据批次,然后同步梯度。显存要求高但实现简单
  • 流水线并行:按层切分模型(前几层在 GPU-0,后几层在 GPU-1)
  • 张量并行:把单层内的矩阵运算切到多张卡上
  • ZeRO:DeepSpeed 的核心技术,通过在数据并行的各卡之间切分优化器状态、梯度和参数来消除冗余。ZeRO-3 可以让 13B 模型在 4 张 24G 显存的消费级显卡上训练

实际训练中往往三者结合:3D 并行 = 数据并行 + 流水线并行 + 张量并行。

3. Fine-Tuning:微调

3.1 什么是微调?

微调(Fine-Tuning)是在预训练模型的基础上,用特定领域或任务的数据继续训练模型,使其适应下游任务。 它是连接「通用基础模型」和「实际应用」的桥梁。

核心思想:模型在预训练阶段已经学到了丰富的语言知识和通用能力(语法、常识、推理模式等),微调只需要用少量任务数据就能唤醒和引导这些能力,而不需要从头训练。

figure
预训练模型(通用能力) + 任务数据(特定行为)→ 微调 → 专用模型

3.2 Fine-Tuning ≠ SFT:概念澄清

一个常见的混淆是把 Fine-Tuning 等同于 SFT。实际上,SFT 只是 Fine-Tuning 的众多形式之一

Fine-Tuning(微调)——大类,指所有「在预训练模型上继续训练以适应特定任务」的方法
├── 按训练目标分类:
│   ├── SFT (Supervised Fine-Tuning)           ← 监督学习形式(指令-回答对)
│   ├── RLHF (Reinforcement Learning from Human Feedback)  ← 强化学习形式
│   └── DPO (Direct Preference Optimization)   ← 偏好学习形式(DPO 也是一种微调)

├── 按参数规模分类:
│   ├── 全量微调 (Full Fine-Tuning)             ← 更新所有参数
│   └── 参数高效微调 (PEFT, Parameter-Efficient Fine-Tuning)
│       ├── LoRA / QLoRA                       ← 低秩适配
│       ├── Adapter                             ← 插入小型适配层
│       ├── Prefix Tuning                       ← 学习可训练前缀
│       └── Prompt Tuning                       ← 学习软提示向量

└── 按数据形式分类:
    ├── 指令微调 (Instruction Tuning)            ← SFT 的一种特化
    ├── 对话微调 (Chat Tuning)                   ← 多轮对话数据
    └── 领域微调 (Domain Adaptation)             ← 垂直领域数据

只用 SFT 来解释 Fine-Tuning,会遗漏两大块:

  1. RLHF/DPO 也是微调。它们同样是在预训练模型上继续训练、更新模型参数,只是优化目标从「拟合标签」变成了「最大化人类偏好分数」。严格来说,RLHF/DPO 属于一种特殊的 Fine-Tuning。
  2. 实践中更常用的是 PEFT 而非全量微调。过去所谓「微调」默认是全量更新参数,但现在 7B/70B 规模下全量微调太贵,LoRA 等轻量级方法才是工程主流——而 SFT 这个术语默认暗示的是全量监督微调。

3.3 微调 vs 预训练的本质差异

维度预训练 (Pre-training)微调 (Fine-Tuning)
数据量数万亿 token数百~数万条样本(取决于任务复杂度)
计算量数万 GPU·月数 GPU·小时(全量)或 数 GPU·分钟(LoRA)
学习率较高(如 3e-4)较低(如 2e-5 或更低)
训练轮数通常 1 个 epoch(避免过拟合)1-5 个 epoch(数据少,需要多轮)
目标学习「世界知识」——语言结构、常识、推理模式学习「特定行为」——交互格式、任务规则、偏好对齐
数据形式任意自然文本(网页、书籍、代码)结构化数据(指令-回答、偏好对、对话等)
泛化目标通用语言能力任务特定表现

一个比喻:

预训练是让一个学生读完整个图书馆(积累通识知识),微调是教他考某一门科目的答题技巧(聚焦特定行为)。学生不是因为微调才有了知识,而是微调教会了他如何把已有的知识以正确的形式表达出来。

3.4 全量微调 vs 参数高效微调(PEFT)

全量微调:更新模型的所有参数。效果上限最高,但代价大——需要存储完整模型的梯度和优化器状态,显存需求是模型权重本身的 4-5 倍。

参数高效微调(PEFT)只训练一小部分(通常是新增的)参数,冻结原始权重。最常见的三种:

LoRA (Low-Rank Adaptation):
  在原始权重旁增加两条低秩矩阵 A 和 B
  h = W·x + (B·A)·x
      ↑原始   ↑LoRA增量的修正(仅这部分可训练)
  
  参数量: A + B 通常只有原始 W 的 0.1%~1%
  训练后: 可以将 (W + B·A) 合并为一个矩阵,推理速度无损
  
  典型配置: r=8~64, α=16~128

QLoRA:
  LoRA + 4-bit 量化原始权重
  使得 70B 模型可以在 48GB 消费级 GPU 上微调

Adapter:
  在 Transformer 层之间插入小型的 bottleneck 适配层
  每个 Adapter 参数量通常仅占原始模型的 1%~3%
  可以像插件一样为不同任务挂载不同的 Adapter
figure

LoRA 就是咱们平民开发者的救星。它会把庞大的模型“冻结”起来,不让它的核心参数变动,只在旁边加一点点可以训练的小插件。

这样一来,以前需要一个机房才能完成的微调工作,现在一张显卡就能搞定。它用最省成本的方式,实现了最高效的模型定制化。

PEFT 为什么是工程主流?

  • 7B 模型全量微调需要 ~60GB 显存(仅模型+优化器),LoRA 只需要 ~16GB
  • LoRA 训练出的 adapter 通常只有几 MB 到几十 MB,可以像文件一样分发和热切换
  • 同一份基座模型可以挂载多个 LoRA adapter 服务不同任务

4. SFT(Supervised Fine-Tuning,监督微调)

SFT 是 Fine-Tuning 中最基础、最直观的形式:用指令-回答对作为监督信号,让模型学会按照人类期望的方式回应。

4.1 SFT 的核心逻辑

预训练后的模型善于「续写」,但不太会「回答问题」。给它一个指令,它可能会续写下去而不是执行。SFT 正是解决这个问题——通过大量的指令-回答对训练,让模型学习「指令 → 回答」的行为模式,而不是「前缀 → 续写」。

4.2 Instruction 数据的构建

SFT 需要的是指令-回答对(Instruction-Response Pair):

json
{
  "instruction": "解释什么是光合作用,用小学生能听懂的语言",
  "output": "光合作用就像植物在给自己做饭。植物的叶子里有一种绿色的东西叫叶绿素,它能抓住阳光。植物用阳光作能量,把空气中的二氧化碳和从根部吸上来的水,变成自己的食物——葡萄糖,同时放出氧气。所以我们呼吸的氧气,很多都是植物送的礼物哦!"
}

高质量 SFT 数据的关键特征:

  • 多样性:覆盖代码、写作、推理、翻译等多种任务,防止任务偏差(task bias)
  • 格式遵循:教会模型按照特定格式输出(JSON、Markdown 等)
  • 思维链对于推理类任务,需要包含详细的推理步骤(CoT),而不是只给最终答案
  • 数量:通常几千到几万条高质量样本就足够——质量远比数量重要,1 万条精心制作的样本效果远超 10 万条低质数据

SFT 数据与 RLHF/DPO 数据的区别

SFT 数据RLHF/DPO 数据
形式指令 + 单个标准答案指令 + 多个候选回答的排序(偏好对)
标注难度中等(需要写出高质量回答)较低(只需要排序,不需从头写)
核心诉求教会「怎么做」教会「哪种做法更好」
典型量级几千~几万条几万~几十万条

4.3 SFT 在训练流水线中的位置

预训练模型 —→ SFT —→ RLHF/DPO —→ 最终模型
  │              │         │
  │              │         └─ 对齐阶段:强化偏好,走向「更好」
  │              └─ 行为格式化:从续写到对话,学会格式
  └─ 知识积累:通读天下文字

SFT 承前启后

  • 承接预训练的知识基础,并为后续的偏好对齐(RLHF/DPO)提供一个格式良好、行为可控的起点。
  • 一个未经 SFT 的预训练模型直接丢进 RLHF,就像让一个从来没考过试的学生直接参加高考——他不知道答题格式,也不知道什么是「好的回答」。

5. RLHF:基于人类反馈的强化学习

RLHF 是一种用强化学习方法将人类偏好注入模型行为的训练范式。

核心思路:先收集人类对模型输出质量的主观判断(偏好数据),再用这些偏好信号训练一个奖励模型来替代人类打分,最后用强化学习算法(PPO)优化模型策略,使模型生成的内容更符合人类期望——更有帮助、更安全、更诚实。

figure

若没有 RLHF,AI模型可能就是一个只会说话,但说话不好听、不好用的怪胎。

正是 RLHF,让 AI 变得有礼貌、好用,还符合咱们人类的价值观。

具体怎么做呢?

咱们让模型生成几个不同的回答,然后让人类来打分,哪个好、哪个不好,标得明明白白。久而久之,模型就摸清了“人类喜欢听什么、需要什么”,不再只是单纯地预测词语,而是学会了贴合人类的需求。

一句话区分:

SFT 教会模型「怎么回答问题」,RLHF 教会模型「什么样的回答才是好回答」。

SFT 教会模型"怎么回答",但无法精确控制回答的"质量偏好"——比如我们希望回答更有帮助、更安全、更诚实。RLHF 就是为此而生的。

5.1 完整流程

RLHF 通常包含三个步骤:

阶段1: SFT (监督微调)
  预训练模型 ──→ 标注的高质量指令数据 ──→ SFT 模型

阶段2: RM (奖励模型训练)                      │
  SFT 模型生成多个回答 ──→ 人工排序 ──→ 训练奖励模型

阶段3: PPO (强化学习优化)                     │
  SFT 模型 ←── 奖励模型打分 ←── PPO 算法优化策略

步骤详解

第一步(SFT)已在上节讲过。

第二步训练奖励模型(Reward Model, RM)。让 SFT 模型对同一个 prompt 生成多个不同回答,人工标注员进行排序(不是打分,是排序),然后用这些排序数据训练模型学会判断"哪个回答更好":

对同一个 prompt,模型生成 4 个回答:
  A: "我认为..."            (排名 2)
  B: "根据相关法规..."      (排名 1, 最好)
  C: "这个问题没有意义"     (排名 4, 最差)
  D: "简单来说就是..."      (排名 3)

→ 训练 RM 学习: score(B) > score(A) > score(D) > score(C)

第三步用 PPO(Proximal Policy Optimization) 算法进行强化学习:

目标 = 奖励模型打分 - KL散度惩罚项

KL 惩罚项的作用: 防止模型"跑偏"
  - 如果新模型与 SFT 模型的输出分布差异太大,会被惩罚
  - 保证模型在"变得更有帮助"的同时不丢失基础能力

5.2 PPO 的核心思想

PPO 的关键在于 "Proximal"(近端)——每次更新步子不要太大。PPO 通过裁剪(Clipping)机制来约束策略更新幅度:

PPO 裁剪目标:
  L = min( ratio × advantage,
           clip(ratio, 1-ε, 1+ε) × advantage )

其中 ratio = 新策略概率 / 旧策略概率
     ε 通常取 0.1~0.2

直觉: 如果 ratio 过大(策略变化太剧烈), 裁剪会限制它,
      防止一次不成功的更新破坏模型已有的好行为

RLHF 的代表性成果是 InstructGPT(ChatGPT 的前身)和 Claude。

6. DPO(Direct Preference Optimization)

RLHF 虽好,但流程复杂:需要训练一个独立奖励模型,需要运行 PPO(涉及 4 个模型:policy model、reference model、reward model、value model)。DPO 更简洁。

6.1 DPO 的核心思想

DPO(2023)的关键洞察:可以直接从偏好数据中优化策略,不需要显式训练奖励模型

数学上,DPO 证明了在 Bradley-Terry 偏好模型下,最优策略有一个闭式解。RLHF 的"先拟合奖励模型再优化策略"两步可以合成一步:

RLHF:  偏好数据 → 训练RM → PPO优化策略  (两步)
DPO:   偏好数据 → 直接优化策略          (一步)

6.2 DPO 与 RLHF 的对比

维度RLHFDPO
需要奖励模型是(需单独训练)
训练稳定性需要大量调参类似 SFT,更稳定
计算开销高(PPO 需 4 个模型)低(只需 2 个模型)
在线/离线通常需要在线采样纯离线
工程复杂度
最终效果成熟,广泛验证接近 RLHF,某些情况下更优

DPO 的损失函数简洁优雅:

L_DPO = -E[ log σ( β × (log π_θ(y_w|x) / π_ref(y_w|x)
                        - log π_θ(y_l|x) / π_ref(y_l|x)) ) ]

直觉: 增大"好回答"相对于参考模型的概率,
      减小"差回答"相对于参考模型的概率
      β 控制偏离参考模型的程度

DPO 让偏好对齐变得像 SFT 一样简单——同样的训练循环,只是换了个损失函数。

7. GRPO(Group Relative Policy Optimization)

GRPO 是 DeepSeek-R1 采用的强化学习训练方法,在 2025 年初引起广泛关注。

7.1 核心创新

传统 PPO 需要一个独立的 Value Model 来估计优势函数,增加了显存和计算开销。GRPO 的做法是对同一个 prompt 生成一组候选回答,用组内相对分数代替价值模型

PPO:   对每个生成样本, 需要 Value Model 估计 baseline
       → 需要额外训练和维护一个与 policy 同量级的模型

GRPO:  对同一个 prompt, 同时采样 G 个回答
       → 用组内平均奖励作为 baseline
       → advantage_i = (reward_i - mean(rewards)) / std(rewards)
       → 不需要 Value Model!
GRPO 工作流:

Prompt ──→ 模型采样 G 个回答

              ├─→ 回答1 → 奖励模型打分: 0.8
              ├─→ 回答2 → 奖励模型打分: 0.3
              ├─→ 回答3 → 奖励模型打分: 0.6
              └─→ 回答4 → 奖励模型打分: 0.9

        组内均值 = 0.65, 标准差 = 0.24

        相对优势:
          回答1: (0.8-0.65)/0.24 = +0.63  ← 好, 强化
          回答2: (0.3-0.65)/0.24 = -1.46  ← 差, 削弱
          回答3: (0.6-0.65)/0.24 = -0.21  ← 一般
          回答4: (0.9-0.65)/0.24 = +1.04  ← 最好, 强化

7.2 与 PPO/DPO 的差异

维度PPODPOGRPO
价值模型需要不需要不需要
参考模型需要需要需要
数据需求在线采样离线偏好对在线采样
相对比较与baseline偏好对组内比较
显存效率
代表应用ChatGPT/ClaudeLlama 3/ZephyrDeepSeek R1

GRPO 在 DeepSeek-R1 中被用来激发推理能力(reasoning emergence)。通过精心设计的奖励规则(格式奖励 + 正确性奖励),模型在 RL 过程中自发学会了"反思"和"多步验证"等行为——即著名的 "aha moment"。

8. Instruction Tuning:指令微调

Instruction Tuning 是 SFT 的一种特定形式,专注于让模型理解并遵循自然语言指令

典型的 Instruction Tuning 数据格式:

markdown
### Instruction:
将以下英语翻译成中文

### Input:
The quick brown fox jumps over the lazy dog.

### Response:
那只敏捷的棕色狐狸跳过了那只懒狗。

关键实践

  • 多任务混合:将不同任务(翻译、推理、代码、写作等)的指令数据混合训练,效果远好于单一任务微调(FLAN 论文的核心发现)
  • 零样本泛化:Instruction Tuning 后模型能在未见过的任务类型上表现出色
  • 数据多样性 > 数据量:用 1000 个高质量、多样化的任务训练,效果好于用 10000 个同质化任务

9. Alignment:价值对齐

技术能力只是硬币的一面,另一面是让模型的行为符合人类价值观

9.1 HHH 原则

Anthropic 提出了对齐的三个核心维度:

┌─────────────────────────────────────────────────────┐
│                  HHH 原则                            │
├───────────────┬─────────────────────────────────────┤
│ Helpful       │ 回答应该有实际帮助,解决用户问题     │
│ (有帮助的)    │ 必要时主动澄清模糊问题               │
├───────────────┼─────────────────────────────────────┤
│ Harmless      │ 拒绝有害请求(制作武器、仇恨言论等) │
│ (无害的)      │ 避免生成歧视性、误导性内容           │
├───────────────┼─────────────────────────────────────┤
│ Honest        │ 不知道就说不知道,不编造             │
│ (诚实的)      │ 准确反映自身能力和局限               │
└───────────────┴─────────────────────────────────────┘

这三个维度有时存在张力。例如,一个无害的拒绝("我不能回答这个问题")可能不是最有帮助的回应。对齐在三者之间寻找平衡。

9.2 Constitutional AI

Constitutional AI(宪法式 AI)是 Anthropic 提出的方法:用一套原则(宪法)来指导模型行为,而不是依赖大量人工标注

阶段1: 监督学习阶段
  1. 用 red-teaming prompts 让模型生成有害回答
  2. 要求模型根据宪法原则修改自己的回答
  3. 用修正后的回答做 SFT

阶段2: RL 阶段 (RLAIF — RL from AI Feedback)
  1. 模型根据宪法原则评估自己的回答
  2. 用 AI 反馈替代人工反馈进行 RL
  3. 整个过程中人类反馈的角色被宪法原则取代

宪法原则示例:

原则: "选择毒性最小的回答。如果一组回答中有回答包含
       侮辱、威胁或贬低性语言,即使其他回答似乎更有帮助,
       也应选择最尊重他人的那个。"

Constitutional AI 的美妙之处在于可扩展性:一旦定义好宪法原则,就可以用 AI 自己生成训练数据,大幅减少对人工标注的依赖。Claude 系列模型正是用这种方法训练的。