🏗️ LLM 训练全流程:从裸数据到 AI 助手

一份深入浅出的完整管线地图。覆盖预训练的五大支柱与后训练的对齐三部曲,基于斯坦福 CS 系列讲座内容扩展而成。

📑 目录

  1. 五大支柱:训练 LLM 的完整框架
  2. 预训练 —— 让模型学会"说话"
  3. Tokenization:被低估的关键环节
  4. 评估体系:如何知道模型在进步?
  5. 数据处理管线:从原始网页到训练语料
  6. Scaling Laws:用数学预测未来
  7. 成本估算:Llama 3 405B 案例
  8. 后训练 —— 让模型变成"助手"
  9. SFT 监督微调
  10. RLHF 人类反馈强化学习
  11. DPO 直接偏好优化
  12. 总结与延伸

🧩 一、五大支柱:训练 LLM 的完整框架

组件学术界关注度工业界实际重要度说明
🏗️ 架构🔴🔴🔴🟡Transformer 变体,但改动主要影响截距
📉 训练损失/算法🔴🔴🔴🟡交叉熵 → 最大似然,标准套路已稳定
📦 数据🟡🔴🔴🔴爬取→清洗→混合,真正的护城河
📊 评估🔴🔴🔴🔴Perplexity + MMLU + HELM,但方式不统一
⚙️ 系统🟡🔴🔴🔴GPU 集群 + 并行策略 + 推理优化
💡 Bitter Lesson(Richard Sutton, 2019):算力持续增长,唯一重要的是能利用算力扩展的方法。架构的小改动只会改变"截距"——多训练 10 小时就能追上。数据和系统才是真正的护城河。

🧠 二、预训练:让模型学会"说话"

2.1 语言建模的核心任务

自回归语言模型的本质:将整个句子的概率分布,分解为"已知前面所有词,预测下一个词"的条件概率乘积。

P(x1, x2, ..., xL) = ∏ P(xi | x1, ..., xi-1)
文本
"She likes"
Tokenize→ Token 序列
[15496, 1234]
Embed→ 向量表示
[0.23, -0.45,...]
Transformer→ 上下文表示 Linear+Softmax→ 概率分布
P(cat)=0.37

损失函数:交叉熵损失 = 最大化真实 Token 的对数似然。在训练时只需计算"真实 Token 的概率"并与 one-hot 标签对比——不需要采样。推理时才需要采样。

🔤 三、Tokenization:被低估的关键环节

为什么不能直接按"词"分?

为什么不能按"字符"分?

序列长度暴增 → Transformer 复杂度 O(n²) 代价太高。

BPE(Byte-Pair Encoding)算法

1

初始化

每个字符一个 Token

2

扫描语料

找出出现频率最高的 Token 对

3

合并

将这对合并为新 Token(如 t + oto

4

循环

重复直到达到目标词表大小(如 50K~250K)

实际案例:GPT Tokenizer 把 "tokenizer" 分成 ["token", "izer"]——因为 "token""izer" 都足够高频,而 "tokenizer" 不够高频所以不被合并。

隐藏痛点

📊 四、评估体系:如何知道模型在进步?

困惑度(Perplexity)

PPL = exp( (1/L) · Σ -log P(xi | x<i) )

学术基准

基准来源内容
MMLUBerkeley57 个学科(医学、物理、天文、法律…)多选题
HELMStanford多维度综合评估
Open LLM LeaderboardHuggingFace开源社区标准

⚠️ 评估陷阱

🗄️ 五、数据处理管线:从原始网页到训练语料

这是工业界最不透明、最耗人力、也是竞争壁垒最高的环节。从 Common Crawl 到最终训练数据,过滤比例约 100:1 ~ 1000:1
1

文本提取

HTML → 纯文本。难点:数学公式提取、正文识别(排除导航/页脚/广告)

2

过滤不良内容

黑名单 URL、NSFW 分类器、PII(个人身份信息)去除

3

去重(Deduplication)

完全重复、模板重复(论坛页眉页脚)、近重复段落(经典书籍被引用 10000 次)

4

启发式过滤

Token 分布异常?单词长度异常?只有 3 个词?超过 1000 万词?→ 过滤

5

模型过滤

巧妙技巧:用 Wikipedia 外部链接作为"高质量"标签,训练分类器区分

6

领域分类与加权

代码⬆️(提升推理)、书籍⬆️(高质量长文本)、娱乐⬇️

7

退火(Annealing)

训练末尾用极高质量数据(Wikipedia + 人工标注)以极低学习率过拟合

数据规模演变

时期代表数据集Token 量数据量
2018GPT-1 (BooksCorpus)~1B~5 GB
2020The Pile~800B~800 GB
2023RefinedWeb~5T~5 TB
2024Llama 315T~80 TB

未解决的问题

📈 六、Scaling Laws:用数学预测未来

在 log-log 尺度上,测试损失算力/参数量/数据量 呈线性关系。这意味着:可以从小模型的实验结果,外推大模型的性能

Chinchilla 最优(DeepMind, 2022)

20:1
训练最优
每 1 参数配 20 Token
~150:1
推理最优
考虑推理成本的折中
~40:1
Llama 3 405B
介于两者之间

实战价值

❌ 旧范式

在最终规模上做超参搜索
→ 30 天训练 1 个模型
→ 效果不好也没时间调整

✅ 新范式

① 3 天:训练多个小型模型
② 拟合 Scaling Law → 外推
③ 27 天:训练预测最优的最终模型

能回答的问题:该用 Transformer 还是 LSTM?该加更多 GPU 还是收集更多数据?模型深一点还是宽一点?

局限性

💰 七、成本估算:Llama 3 405B 案例

项目数值
参数量405B
训练 Token 数15.6T
总算力~3.8 × 10²⁵ FLOPs
GPU 数量16,000 × H100
训练时长~70 天
GPU 小时2,600 万 ~ 3,000 万
GPU 租金 ($2/h)~$5,200 万
人员成本 (50 人 × $500K)~$2,500 万
总估算~$7,500 万
碳排放~4,400 吨 CO₂(≈ 2,000 趟 JFK↔伦敦往返)
每一代模型,算力需求约 10 倍增长。Llama 3 刻意控制在拜登行政令的 10²⁶ FLOPs 审查阈值以下。

🎯 八、后训练:让模型变成"助手"

为什么需要后训练?

GPT-3(纯语言模型)vs ChatGPT(对齐后)

❌ GPT-3 输出

问:"向 6 岁小孩解释登月"
答:"向 6 岁小孩解释万有引力
向 6 岁小孩解释黑洞
…"
(因为互联网上常见的是"问题列表",不是 Q&A)

✅ ChatGPT 输出

问:"向 6 岁小孩解释登月"
答:"想象你在蹦床上跳……"
(真正的解释,像一个助手在回答)

互联网的文本分布 ≠ 你想要的助手行为分布。后训练的本质是用少量高质量数据"校准"模型的输出格式和价值观。

📝 九、SFT(监督微调)

原理

在人工标注的(指令,理想回答)数据上,用相同的语言建模损失继续训练。本质上和预训练是同一个任务——预测下一个 Token——只是数据换成了高质量的问答对。

关键发现:LIMA(Less Is More for Alignment)

SFT 数据量效果
2,000 条🟢 已经很好
32,000 条🟢 几乎没提升
💡 核心洞见:SFT 不教新知识,只教"格式"。预训练模型已经包含了所有知识——你只是在告诉它"请扮演回答问题的那个用户"。

Alpaca(Stanford, 2023):用 LLM 生成数据

175 条人工问答 → 用 text-davinci-003 扩写 → 52,000 条 LLM 生成的问答 → Fine-tune → Alpaca 7B
接近 text-davinci-003

这开启了蒸馏(Distillation)合成数据(Synthetic Data)的大门。

⚠️ SFT 的三大问题

  1. 受限于标注者能力:人类不擅长的任务(写长篇小说),SFT 也无法教会模型
  2. 可能是幻觉的来源:如果标注者的答案包含模型预训练中从未见过的"事实",模型学会的是"编造听起来合理的答案"而非"输出真实知识"
  3. 标注成本高:高质量的(指令,回答)对需要专家级标注者

🔄 十、RLHF(人类反馈强化学习)

为什么 RLHF ?

人类鉴别好坏的能力 > 人类创作最优答案的能力。RLHF 的核心洞察:让人类只做擅长的事(比较),让模型自己探索最优策略

三步流程

1

SFT(监督微调)

预训练模型 → 在人工问答对上微调,学会基本对话格式

2

训练奖励模型(Reward Model)

对每个指令生成 2 个回答,人类标注 A > B。训练分类器预测偏好 → 输出连续分数
使用 Bradley-Terry 模型:P(A>B) = σ(R(A) - R(B))

3

PPO 强化学习

用奖励模型分数作为 reward + KL 惩罚(防止偏离 SFT 太远)→ PPO 优化生成策略

PPO 的工程噩梦

理论上优雅,但实践中极其脆弱:需要同时加载 4 个模型(Policy / Reference / Reward / Value)、超参敏感、奖励模型可能被"过优化"(找到高奖励但不真实的输出)。

⚡ 十一、DPO(直接偏好优化)——更优雅的替代

Stanford, 2023。不需要显式训练奖励模型,直接用偏好数据做最大似然

核心思想

DPO ∝ -log σ( β · [ log(πθ(好回答)/πref(好回答)) - log(πθ(坏回答)/πref(坏回答)) ] )

直觉翻译:最大化"好回答"相对于"坏回答"的概率比(以原始模型为基准)。就是把 RLHF 的三步流程压缩成一步:直接用偏好数据做监督学习。

DPO vs PPO 对比

维度PPODPO
需要奖励模型?✅ 需要单独训练 RM❌ 不需要
训练方式强化学习(采样 + 梯度)监督学习(直接计算损失)
工程复杂度🔴 高(4 个模型,多阶段)🟢 低(标准训练循环)
稳定性🔴 RL 固有不稳定🟢 稳定收敛
理论基础Bradley-Terry + RL和 PPO 数学等价(一定假设下)
DPO 在业界已逐渐成为主流选择,尤其适合算力和工程资源有限的团队。

🧭 十二、完整训练故事线

🌐 Common Crawl(2500 亿网页,脏乱差)
  │
  ├─ 文本提取 → 过滤 → 去重 → 启发式 → 模型过滤 → 领域加权
  │
  ▼
📦 15T Tokens 高质量语料
  │
  ├─ BPE Tokenization(词表 50K~250K)
  │
  ▼
🏗️ 预训练(自回归语言建模 · 交叉熵损失)
  │  架构:Transformer Decoder-only
  │  规模:405B 参数,$7,500 万,70 天,16,000×H100
  │
  ▼
🤖 Base Model(LLaMA-base / GPT-3)
  │  能力:会续写文本,但不会"回答问题"
  │
  ├─ SFT(~2K-50K 条指令数据)
  │  → 学会对话格式
  │
  ├─ 偏好数据收集(人类标注 A > B)
  │
  ├─ DPO(直接偏好优化)
  │  → 对齐人类价值观和偏好
  │
  ▼
✨ Aligned Model(ChatGPT / LLaMA-chat)
    能力:遵循指令、拒绝有害请求、减少幻觉

仍在快速演变的领域

推荐阅读

LLM 训练预训练后训练Tokenization Scaling LawsSFTRLHFDPO 数据处理BPEChinchilla