大模型训练全景:预训练与后训练

5 阅读10分钟

大模型训练全景:预训练与后训练

AI 核心技能系列 · 第 2 篇


导语

上一篇我们搞清楚了大模型"长什么样"(Transformer 架构),这一篇要搞清楚它"怎么长大的"。

大模型不是天生就聪明的。ChatGPT 不是一上来就能跟你聊天,Claude 也不是一出生就会写代码。它们都经历了一个漫长的"培养"过程——从什么都不懂的随机参数,到能理解人类语言、遵循指令、输出有用内容。

理解这个培养过程有什么用?

  • 做 Fine-tuning 的时候,你知道为什么要这样准备数据
  • 选择模型的时候,你知道为什么有些模型"更听话"
  • 面试的时候,SFT、RLHF、DPO 这些名词你能讲清楚而不是只知道缩写

这篇文章带你走一遍大模型从"白纸"到"产品"的完整旅程。


一、大模型训练的全景图

大模型的训练可以分为三个阶段,每个阶段目标不同、方法不同、成本也差了几个数量级:

┌────────────────────────────────────────────────────────────────────┐
│                    大模型训练全流程                                   │
│                                                                      │
│  阶段一:预训练          阶段二:后训练            阶段三:部署推理     │
│  (Pre-training)        (Post-training)          (Inference)        │
│                                                                      │
│  ┌──────────┐    ┌──────────────────────┐    ┌──────────┐          │
│  │ 海量文本   │    │  SFT → RLHF/DPO      │    │ 用户使用   │          │
│  │ 学习语言   │ →  │  学会听话+对齐人类偏好  │ →  │ 实时生成   │          │
│  └──────────┘    └──────────────────────┘    └──────────┘          │
│                                                                      │
│  目标:理解语言      目标:遵循指令+安全对齐     目标:高效推理         │
│  数据:万亿Token     数据:万~百万条指令数据     数据:用户实时输入      │
│  成本:千万~亿美元   成本:百万~千万美元         成本:按Token计费       │
│  时间:数月          时间:数周                  时间:毫秒级            │
└────────────────────────────────────────────────────────────────────┘

一个关键的类比:

  • 预训练 = 上学(系统学习知识,但不会做具体工作)
  • SFT = 入职培训(学会按公司要求做事)
  • RLHF = 绩效考核(根据反馈持续改进工作方式)

二、预训练:海量数据中学会"语言"

2.1 数据是一切的基础

预训练阶段的核心:用海量文本数据,让模型学会"语言"本身

训练数据的来源:

数据来源典型规模特点
网页(Common Crawl)数万亿 Token最大来源,需要大量清洗
书籍数十亿 Token质量高,覆盖面广
维基百科数十亿 Token事实性强,结构化
代码(GitHub)数千亿 Token编程能力来源
论文(arXiv)数十亿 Token科学推理能力
对话数据数百亿 Token对话能力来源

GPT-3 使用了约 3000 亿 Token 的训练数据。到了 Llama 3,训练数据超过 15 万亿 Token。而数据质量往往比数量更重要——DeepSeek 公开表示,他们在数据清洗和过滤上投入了大量工程资源。

数据清洗的关键步骤:

  1. 去重:移除重复内容(文档级 + 段落级 + 句子级)
  2. 质量过滤:移除低质量内容(广告、乱码、机器生成的垃圾文本)
  3. 敏感内容过滤:移除有害、非法内容
  4. 数据配比:控制不同来源数据的比例(网页太多会拉低质量)
  5. 去污染:移除测试集数据,防止数据泄露

2.2 Tokenizer:怎么把文字变成数字

模型不认识文字,只认识数字。Tokenizer 负责把文字转换成数字序列(Token ID)。

主流方法是 BPE(Byte Pair Encoding)

# 一个简单的例子
原始文本: "Hello, how are you?"

# BPE Tokenizer 的处理结果
Tokens:  ["Hello", ",", " how", " are", " you", "?"]
Token IDs: [15496, 11, 703, 527, 499, 30]

# 注意:
# - 常见词(Hello)是一个 Token
# - 不常见的长词可能被拆成多个子词
# - 空格通常和后面的词合在一起

不同模型使用不同的 Tokenizer,这也是为什么同一段文本在不同模型上消耗的 Token 数不同:

Tokenizer使用模型词表大小中文效率
cl100k_baseGPT-4/4o100K较好
claude-tokenizerClaude 3.5/4100K+较好
SentencePieceLlama, Gemini32K-256K一般~较好
Qwen-TokenizerQwen 2.5152K优秀(中文优化)

实用小技巧:中文平均 1 个汉字 ≈ 1.5-2 个 Token(取决于 Tokenizer),英文平均 1 个单词 ≈ 1-1.5 个 Token。这对估算 API 成本很重要。

2.3 训练目标:Next Token Prediction

预训练的目标极其简单——给定前面的 Token,预测下一个 Token:

输入: "The cat sat on the"
目标: 预测下一个 Token 是 "mat" (概率最高)

具体地:

P("mat""The cat sat on the")=?P(\text{"mat"} \mid \text{"The cat sat on the"}) = ?

模型通过最小化交叉熵损失来学习:

L=logP(xtx1,x2,,xt1)\mathcal{L} = -\log P(x_t \mid x_1, x_2, \ldots, x_{t-1})

就是这么"简单"的目标,当你在万亿 Token 上训练数千亿参数的模型时,涌现出了理解语言、逻辑推理、甚至编程的能力。

这也是为什么有人说大模型的能力是"涌现"的——你没有显式地教它推理,但规模足够大的时候,推理能力自己冒出来了。

2.4 训练基础设施:分布式训练

训练大模型需要的算力是惊人的。以 GPT-3 为例:

  • 参数量:1750 亿
  • 训练数据:3000 亿 Token
  • 训练算力:约 3640 PF-days(每秒千万亿次运算 × 3640 天)
  • GPU:数千张 A100/H100
  • 训练时间:数周到数月

一台机器放不下这么多参数和数据,所以需要分布式训练。主流的并行策略:

并行策略核心思想适用场景
数据并行 (DP)每张 GPU 一份模型副本,各自处理不同数据,梯度同步模型放得下单卡
张量并行 (TP)把一个矩阵运算拆到多张 GPU 上单层太大,放不下一张卡
流水线并行 (PP)不同层放在不同 GPU 上,数据像流水线一样流过层数太多
ZeRO优化器状态/梯度/参数分片存储内存优化

实际训练通常组合使用多种策略,比如 DeepSeek V3 同时使用了 TP + PP + DP + ZeRO。

2.5 Scaling Law:大力出奇迹的理论基础

2020 年 OpenAI 发表了 Scaling Law(规模定律),核心发现:

模型的性能(损失值)与参数量 N数据量 D算力 C 之间存在幂律关系——三者中任一个增大,模型性能都会平滑提升。

L(N,D)(NcN)αN+(DcD)αD+LL(N, D) \approx \left(\frac{N_c}{N}\right)^{\alpha_N} + \left(\frac{D_c}{D}\right)^{\alpha_D} + L_\infty

其中:

  • LL 是损失值
  • NN 是参数量
  • DD 是数据量
  • αN,αD\alpha_N, \alpha_D 是缩放指数(约 0.076 和 0.095)
  • LL_\infty 是理论下限

直觉理解:模型越大、数据越多、训练越久,效果越好——而且这个关系是可预测的。这就是为什么各大厂商疯狂堆参数和数据——Scaling Law 告诉你,堆下去一定有回报。

后来 DeepSeek 等团队的实践表明,数据质量训练效率可能比单纯的规模扩大更重要。这引发了行业从 "Scaling Law" 到 "Efficiency Law" 的思考转变。

2.6 预训练的成本:算一笔账

训练一个大模型要多少钱?

模型估算训练成本主要开支
GPT-3 (175B)~$460 万GPU 集群租用
GPT-4~$1 亿+GPU、数据、人力
Llama 3 405B~$3000 万+GPU 集群
DeepSeek V3~$560 万(声称)GPU(性价比极高)

DeepSeek V3 的训练成本之所以低得惊人,是因为他们在架构(MoE)、训练框架和工程优化上做了大量工作——这也说明训练大模型不一定要拼钱,拼工程能力也行。

2.7 代码示例:加载和探索预训练模型

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 加载一个开源预训练模型(以 Qwen2.5-7B 为例)
model_name = "Qwen/Qwen2.5-7B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name, 
    torch_dtype=torch.float16,
    device_map="auto"  # 自动分配到可用的 GPU
)

# 看看模型结构
print(f"参数量: {sum(p.numel() for p in model.parameters()):,}")
print(f"词表大小: {tokenizer.vocab_size:,}")
print(f"模型层数: {model.config.num_hidden_layers}")
print(f"隐藏维度: {model.config.hidden_size}")
print(f"注意力头数: {model.config.num_attention_heads}")

# 用预训练模型生成文本(注意:纯预训练模型不会"聊天",只会续写)
text = "The future of artificial intelligence is"
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=50, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

注意:纯预训练模型只会"续写文本",不会"回答问题"。要让它遵循指令,需要后训练。


三、后训练阶段一:SFT(监督微调)

3.1 SFT 的目标

预训练模型会续写文本,但不会遵循指令。你问它"北京有什么好吃的?",它可能会继续写"北京有什么好玩的?上海有什么好吃的?"——因为它只是在做 Next Token Prediction,不知道你在问问题。

SFT(Supervised Fine-Tuning)的目标:让模型从"续写模式"切换到"指令遵循模式"。

做法很直接:构造大量的 (指令, 回答) 数据对,用监督学习微调模型。

3.2 指令数据的构造

// SFT 训练数据的典型格式
{
  "messages": [
    {"role": "system", "content": "你是一个有帮助的助手。"},
    {"role": "user", "content": "请解释什么是机器学习"},
    {"role": "assistant", "content": "机器学习是人工智能的一个分支,它让计算机能够从数据中自动学习规律和模式,而不需要人为地编写明确的规则..."}
  ]
}

高质量 SFT 数据的来源:

数据来源成本质量规模
人工标注最高小(万级)
蒸馏(用强模型生成)大(十万级)
开源数据集参差不齐
Self-Instruct

3.3 SFT 的关键技巧

  1. 数据质量 >> 数据数量:1000 条高质量数据 > 100 万条低质量数据
  2. 覆盖多样性:指令类型要丰富(问答、写作、翻译、代码、推理……)
  3. 格式一致性:训练数据的格式要统一
  4. 避免灾难性遗忘:SFT 数据中混入一些预训练数据,防止模型忘掉通用能力

3.4 为什么只做 SFT 还不够

SFT 教会了模型"怎么回答问题",但没教它"什么是好的回答"。

一个只做过 SFT 的模型可能会:

  • 一本正经地胡说八道(自信但错误)
  • 回答有害问题("怎么制造炸弹")
  • 输出冗长废话
  • 对敏感问题不当处理

要解决这些问题,需要对齐(Alignment)——让模型的行为符合人类的价值观和偏好。这就是 RLHF 的工作。


四、后训练阶段二:RLHF(人类反馈强化学习)

4.1 核心思想

RLHF(Reinforcement Learning from Human Feedback)的核心思想:用人类偏好来教模型什么是好的回答。

直觉理解:

想象你在教一个小孩写作文。SFT 相当于给他看了大量范文,他学会了写作的基本套路。RLHF 相当于你改他的作文——"这句话写得好"、"这个论点太弱了"、"这个例子不恰当"——让他不断改进。

4.2 RLHF 的三步流程

Step 1: 收集人类偏好数据
─────────────────────────
给同一个问题,模型生成两个回答(AB),
让人类标注员选择哪个更好。

  问题: "解释量子计算"
  回答A: [详细、准确、易懂]  ← 人类选择这个 ✓
  回答B: [简短、有错误]

Step 2: 训练奖励模型 (Reward Model)
─────────────────────────────────
用人类偏好数据训练一个"评分模型",
它能自动给回答打分,模拟人类判断。

  Reward Model("解释量子计算", 回答A) → 0.85Reward Model("解释量子计算", 回答B) → 0.32Step 3: 用 PPO 优化策略模型
───────────────────────────
用强化学习(PPO 算法)优化模型,
让它生成的回答得到更高的奖励分数。

优化目标:

maxπ  E[R(response)]βDKL(πnewπref)\max_\pi \; \mathbb{E}\left[R(\text{response})\right] - \beta \cdot D_{KL}\left(\pi_{\text{new}} \| \pi_{\text{ref}}\right)

  • R(response)R(\text{response}): 奖励模型的分数(要高)
  • DKL(πnewπref)D_{KL}(\pi_{\text{new}} \| \pi_{\text{ref}}): 和原始模型的差异(不能太大,防止过度优化)

4.3 RLHF 的工程挑战

RLHF 是出了名的难训:

  1. 奖励模型不完美:人类标注有噪声,奖励模型可能学到错误的偏好
  2. Reward Hacking:模型学会"讨好"奖励模型,但回答质量并没有提高(比如学会输出冗长但没信息量的回答)
  3. 训练不稳定:PPO 算法对超参数敏感,容易训崩
  4. 成本高:需要大量人类标注,一个标注员一天标不了几百条
  5. 四个模型同时运行:策略模型、参考模型、奖励模型、价值模型——GPU 需求巨大

五、后训练阶段三:DPO 与新范式

5.1 DPO:去掉奖励模型的简化方案

RLHF 太复杂了,有没有更简单的方法?2023 年 Stanford 提出了 DPO(Direct Preference Optimization)

核心思想:不需要训练奖励模型和使用 PPO,直接用人类偏好数据优化语言模型。

RLHF:  偏好数据 → 训练奖励模型 → PPO优化策略 → 对齐的模型
DPO:   偏好数据 → 直接优化策略 → 对齐的模型(中间步骤省了!)

DPO 的损失函数(看不懂公式没关系,理解思想即可):

LDPO=E[logσ(β(logπ(ywx)πref(ywx)logπ(ylx)πref(ylx)))]\mathcal{L}_{\text{DPO}} = -\mathbb{E}\left[\log \sigma\left(\beta \cdot \left(\log \frac{\pi(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \log \frac{\pi(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\right)\right)\right]

其中:

  • ywy_w: 人类偏好的(winning)回答
  • yly_l: 人类不偏好的(losing)回答
  • π\pi: 当前模型
  • πref\pi_{\text{ref}}: 参考模型(SFT 后的初始状态)
  • β\beta: 温度参数

直觉理解:DPO 让模型学会"好回答的概率要高,差回答的概率要低",同时不要偏离初始模型太远。

5.2 RLHF vs DPO 对比

维度RLHFDPO
需要奖励模型
训练稳定性不稳定,超参数敏感相对稳定
工程复杂度高(4个模型同时运行)低(和 SFT 类似)
GPU 需求相对低
实际效果天花板更高大部分场景足够好
在线学习支持不支持
迭代优化容易持续优化每轮需要重新收集偏好数据

5.3 其他新兴对齐方法

方法核心思想特点
ORPO (Odds Ratio Preference Optimization)将 SFT 和对齐合并为一步更简单,不需要参考模型
KTO (Kahneman-Tversky Optimization)只需要"好/坏"二元标签,不需要成对比较数据需求更低
SimPO (Simple Preference Optimization)用序列平均对数概率作为隐式奖励无需参考模型
GRPO (Group Relative Policy Optimization)DeepSeek 提出,组内相对排序适合推理任务

行业趋势:DPO 及其变体正在成为主流,RLHF 则在需要极致对齐效果的场景中仍有不可替代的地位。


六、开源训练框架与工具链

你不需要从头写训练代码。以下是主流的训练框架:

框架适用场景易用性功能特点
Hugging Face TRLSFT + RLHF + DPO★★★★★★★★生态最完整,社区活跃
LLaMA-Factory全流程微调★★★★★★★★★★图形界面,一键微调,支持100+ 模型
Unsloth高效微调★★★★★★★2x 加速,50% 内存节省
DeepSpeed大规模分布式训练★★★★★★★微软出品,ZeRO 优化
Megatron-LM预训练★★★★★★★NVIDIA 出品,张量并行
Axolotl配置化微调★★★★★★★YAML 配置,灵活

选择建议

  • 入门者:LLaMA-Factory(有图形界面,上手最快)
  • 日常微调:Hugging Face TRL + Unsloth(生态好 + 效率高)
  • 大规模训练:DeepSpeed + Megatron-LM(工业级)

七、职业视角:理解训练对实际工作的帮助

7.1 面试高频问题

问题考察点核心答案要点
SFT 和 RLHF 的区别?基础概念SFT 教模型怎么回答问题,RLHF 教模型什么是好的回答
DPO 和 RLHF 的区别?技术深度DPO 去掉了奖励模型,直接用偏好数据优化,更简单但天花板略低
Scaling Law 是什么?前沿认知模型性能与参数量、数据量、算力之间的幂律关系
预训练用什么目标?基础理解Next Token Prediction,通过交叉熵损失优化
什么是灾难性遗忘?实战经验微调后模型忘掉预训练学到的通用能力,可通过混合数据缓解

7.2 不同岗位的侧重点

算法岗                              应用岗
├── 需要深入理解训练原理              ├── 理解概念即可,不需要自己训练
├── 要会写训练代码                   ├── 重点在 Fine-tuning 和数据准备
├── 要了解分布式训练                 ├── 用现成框架(LLaMA-Factory 等)
├── Scaling Law 的应用               ├── 知道什么时候该 Fine-tune
└── 对齐技术是核心竞争力              └── 模型选型和效果评估

7.3 工作中的实际应用

  1. 数据质量判断:理解训练过程,你就知道为什么"训练数据的质量比什么都重要"
  2. Fine-tuning 策略选择:知道 SFT/DPO 的区别,才能选对微调方式
  3. 模型能力评估:理解后训练的对齐过程,你能更准确地判断模型在哪些场景下可靠、哪些场景下不可靠
  4. 成本预估:理解训练成本结构,能帮你向老板解释为什么 AI 项目需要多少预算

总结

这篇文章带你走完了大模型从"白纸"到"产品"的完整旅程:

  1. 预训练:用万亿 Token 学会"语言",核心目标是 Next Token Prediction,需要海量算力
  2. SFT:用指令数据教模型"听话",从续写模式切换到指令遵循模式,数据质量是关键
  3. RLHF/DPO:用人类偏好教模型"什么是好的回答",实现价值观对齐
  4. 工具链:LLaMA-Factory、TRL、Unsloth 等框架让训练和微调变得越来越平民化
  5. Scaling Law:参数、数据、算力三者的关系,是行业军备竞赛的理论基础

理解训练过程不是为了让你去训练模型(大部分人不需要),而是为了让你在做 Prompt Engineering、RAG、Fine-tuning 时,知道"为什么"——这就是原理知识的价值。


本文是 AI 核心技能系列 第 2 篇,共 12 篇。上一篇:大模型基础:从 Transformer 到 GPT | 下一篇:Prompt Engineering:与大模型高效对话的艺术

关注公众号「coft」,获取完整系列更新、配套代码和学习路线图。一起交流 AI 转行经验,助力职业跃升,迈向高薪岗位。