大模型核心原理 / 预训练原理与工程实践
CHAPTER 02 · TOPIC 04

预训练原理与工程实践

预训练(Pre-training)是大模型能力的根基。通过在海量无标注文本上进行自监督学习,模型习得了语言的语法、语义、逻辑推理和世界知识。本章深入剖析预训练的目标函数、数据工程、训练策略和分布式训练技术。

一句话理解

预训练(Pre-training)是大模型能力的根基。通过在海量无标注文本上进行自监督学习,模型习得了语言的语法、语义、逻辑推理和世界知识。本章深入剖析预训练的目标函数、数据工程、训练策略和分布式训练技术。

阅读前置

建议先阅读第 01 章

本文关注

预训练目标、训练数据、训练策略

所在知识层

技术地基 · 大模型核心原理

文章导航
主教学视觉预训练原理与工程实践 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

预训练(Pre-training)是大模型能力的根基。通过在海量无标注文本上进行自监督学习,模型习得了语言的语法、语义、逻辑推理和世界知识。本章深入剖析预训练的目标函数、数据工程、训练策略和分布式训练技术。


1. 预训练目标

1.1 自监督学习的核心思想

预训练的精妙之处在于——不需要人工标注的数据。模型利用文本本身的结构作为监督信号:

语义 SVG 重绘预训练原理与工程实践

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文有监督学习:输入系统核心模型预测与人工标注的标签比较工具、结果与反馈更新权重自监督学习:输入
查看原文结构
有监督学习:输入 → 模型 → 预测 → 与人工标注的标签比较 → 更新权重
自监督学习:输入 → 模型 → 预测 → 与文本自身的后续内容比较 → 更新权重

1.2 因果语言建模(Causal Language Modeling, CLM)

纯解码器 Transformer(GPT 类)的训练目标:

TEXT
给定前面的 token 序列,预测下一个 token

输入: "The cat sat on the"
目标: 预测下一个 token 是 "mat"(概率分布中 "mat" 的概率应尽可能高)

损失函数:交叉熵损失
Loss = -Σ log P(正确token | 上下文)

在实际训练中,对序列中的每个位置同时计算损失:
输入:  [The, cat, sat, on, the, mat]
目标:  [cat, sat, on, the, mat, <eos>]

每个位置都用前面所有的 token 来预测下一个
(通过因果掩码确保只能看到前面的 token)

1.3 掩码语言建模(Masked Language Modeling, MLM)

编码器 Transformer(BERT 类)的训练目标:

TEXT
随机遮盖输入中的某些 token,让模型预测被遮盖的 token

输入: "The [MASK] sat on the mat"
目标: 预测 [MASK] 是 "cat"

遮盖策略(BERT 原始方案):
- 15% 的 token 被选中遮盖
- 其中 80% 替换为 [MASK]
- 10% 替换为随机 token
- 10% 保持不变

1.4 CLM vs MLM 对比

维度CLM(GPT 类)MLM(BERT 类)
注意力方向单向(只能看前面)双向(可以看前后)
训练效率每个 token 产生一次损失只有 15% 的 token 产生损失
生成能力天然支持自回归生成不直接支持生成
理解能力受限于单向上下文双向上下文,理解更强
扩展性Scaling Laws 验证充分大规模效果不如 CLM
当前地位LLM 主流仅用于编码器模型

2. 训练数据

2.1 数据来源

数据源说明占比(典型)
Common Crawl互联网网页爬取,最大的数据源60-70%
Wikipedia高质量百科知识5-10%
Books长文本、文学作品5-10%
代码仓库GitHub 等开源代码5-10%
学术论文arXiv、Semantic Scholar2-5%
社交媒体Reddit、论坛等2-5%
专业数据法律、医学、金融等按需

2.2 数据清洗流程

原始网页数据包含大量噪声,需要严格的清洗流程:

语义 SVG 重绘预训练原理与工程实践

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

原始网页HTML 解析去除广告/导航语言检测去重质量过滤
查看原文结构
原始网页 → HTML 解析 → 去除广告/导航 → 语言检测 → 去重 → 质量过滤 → 敏感内容过滤 → 清洗后文本

2.3 数据规模对比

模型训练数据量说明
GPT-3 (175B)300B tokensCommon Crawl + Wikipedia + Books
Chinchilla (70B)1.4T tokensChinchilla 最优数据量
LLaMA 2 (70B)2T tokens增加 40% 数据
LLaMA 3 (405B)15T+ tokens7x 于 LLaMA 2
GPT-4未公开估计 > 10T tokens

2.4 数据质量 vs 数据数量

Phi 系列的启示(Microsoft, 2023)

  • Phi-1.5(1.3B 参数)仅用 20B tokens 训练
  • 但数据全部是"教科书质量"的合成数据
  • 在数学和推理任务上超过了用 10x 数据训练的更大模型
  • 结论:数据质量可以部分弥补模型规模的不足

**LLaMA 3 的策略:**

  • 15T tokens 的训练数据
  • 大量使用数据分类器过滤低质量内容
  • 合成数据(Synthetic Data)作为补充

3. 训练策略

3.1 学习率调度

大模型训练通常使用带预热的余弦退火学习率:

语义 SVG 重绘预训练原理与工程实践

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

学习率╱╲╱ ╲ ╲╱ warmup ╲ cosine d…╱ ╲╱ ╲
查看原文结构
学习率
  ↑
  │     ╱╲
  │    ╱  ╲────────────────╲
  │   ╱    warmup          ╲ cosine decay
  │  ╱                      ╲
  │ ╱                        ╲_____
  └──────────────────────────────── 训练步数

3.2 混合精度训练

使用 BF16(BFloat16)进行训练:

精度位宽指数位尾数位数值范围精度
FP3232823±3.4×10^38
FP1616510±65504
BF161687±3.4×10^38
  • BF16 的数值范围与 FP32 相同,不容易溢出
  • 但精度低于 FP16,需要更多训练步数来弥补
  • 是当前大模型训练的标准精度

3.3 Batch Size 与梯度累积

TEXT
有效 Batch Size = 每 GPU 的 batch_size × GPU 数量 × 梯度累积步数

以 LLaMA 3 405B 为例:
  每 GPU batch_size = 2
  GPU 数量 = 16,384
  梯度累积步数 = 1
  有效 Batch Size = 32,768(约 64M tokens per step)

3.4 优化器

AdamW 是大模型训练的标准优化器:

公式视图预训练原理与工程实践 · 关系式

把公式、变量和含义拆开呈现,便于对照阅读。

AdamW = Adam + 权重衰减(Weight Decay)
m_t = β₁m_{t-1} + (1-β₁)g_t一阶动量
v_t = β₂v_{t-1} + (1-β₂)g_t²二阶动量
θ_t = θ_{t-1} - η(m_t/√v_t + λθ_{t-1})参数更新 + 权重衰减
典型超参数:
β₁ = 0.9, β₂ = 0.95, λ = 0.1
学习率 η: 根据模型规模调整(通常 1e-4 到 3e-4)

4. 分布式训练

大模型训练需要数千甚至数万张 GPU,分布式训练是核心工程挑战。

4.1 四种并行策略

语义 SVG 重绘预训练原理与工程实践 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

数据并行(Data Paralleli…每个 GPU 持有完整模型副本不同的 GPU 处理不同的数据梯度在所有 GPU 间同步适合模型能放进单 GPU 显存的情况
查看原文结构
数据并行(Data Parallelism, DP):
  每个 GPU 持有完整模型副本
  不同的 GPU 处理不同的数据
  梯度在所有 GPU 间同步
  → 适合模型能放进单 GPU 显存的情况
语义 SVG 重绘预训练原理与工程实践 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文模型并行 / 张量并行(Tensor Parall…系统核心将模型的每一层拆分到多个 GPU例如:注意力头的不同头在不同 GPU 上计算适合单层太大无法放进单 GPU 的情况工具、结果与反馈
查看原文结构
模型并行 / 张量并行(Tensor Parallelism, TP):
  将模型的每一层拆分到多个 GPU
  例如:注意力头的不同头在不同 GPU 上计算
  → 适合单层太大无法放进单 GPU 的情况
语义 SVG 重绘预训练原理与工程实践 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文流水线并行(Pipeline Parallelis…系统核心将模型的不同层分配到不同 GPUGPU 1: 层 1-20GPU 2: 层 21-40工具、结果与反馈GPU 3: 层 41-60通过微批次(micro-batch)减少流水线气泡
查看原文结构
流水线并行(Pipeline Parallelism, PP):
  将模型的不同层分配到不同 GPU
  GPU 1: 层 1-20
  GPU 2: 层 21-40
  GPU 3: 层 41-60
  → 通过微批次(micro-batch)减少流水线气泡
语义 SVG 重绘预训练原理与工程实践 · 结构 4

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

零冗余优化器(ZeRO):将优化器状态、梯度、参数分布到多个 G…ZeRO-1: 分布优化器状态ZeRO-2: 分布优化器状态 + 梯…ZeRO-3: 分布优化器状态 + 梯…DeepSpeed 的核心技术
查看原文结构
零冗余优化器(ZeRO):
  将优化器状态、梯度、参数分布到多个 GPU
  ZeRO-1: 分布优化器状态
  ZeRO-2: 分布优化器状态 + 梯度
  ZeRO-3: 分布优化器状态 + 梯度 + 参数
  → DeepSpeed 的核心技术

4.2 3D 并行

实际的大模型训练通常同时使用多种并行策略:

TEXT
3D 并行 = 数据并行 × 张量并行 × 流水线并行

以 LLaMA 3 405B 训练为例(16,384 张 H100 GPU):

张量并行:8-way(一个 8-GPU 节点内的张量并行)
流水线并行:4-way(4 个节点间的流水线)
数据并行:512-way(512 组之间的数据并行)

总 GPU = 8 × 4 × 512 = 16,384

4.3 训练基础设施

模型GPU 数量GPU 类型训练时间估计成本
GPT-3 (175B)~1,000V100~1 个月$500 万
LLaMA 2 (70B)~2,000A100~6 个月$2,600 万
LLaMA 3 (405B)~16,000H100~3 个月$1 亿+
GPT-4未公开未公开未公开$1 亿+

4.4 训练稳定性

大规模训练中的常见故障:

  • GPU 故障:万卡集群中 GPU 故障是常态(每天约 1-2 次)
  • 梯度爆炸/消失:通过梯度裁剪(gradient clipping)和 RMSNorm 缓解
  • Loss Spike:损失突然飙升,通常通过降低学习率或跳过该批次恢复
  • Checkpoint 策略:定期保存模型状态,故障时从最近的 checkpoint 恢复

5. 训练完成后的模型状态

预训练完成后,模型具备的能力:

语义 SVG 重绘预训练原理与工程实践

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

这就是为什么需要对齐(Alignmen…详见下一章:对齐技术
查看原文结构
→ 这就是为什么需要对齐(Alignment)
→ 详见下一章:对齐技术

6. 本章小结

环节关键要点
训练目标CLM(预测下一个 token)是主流
数据互联网规模文本,清洗是关键挑战
数据规模从 300B tokens (GPT-3) 到 15T+ (LLaMA 3)
训练策略混合精度 BF16 + AdamW + 余弦学习率
分布式训练3D 并行(数据 + 张量 + 流水线)
训练成本从数百万到数亿美元

相关章节


延伸阅读

  • Radford, A. et al. (2019). "Language Models are Unsupervised Multitask Learners". OpenAI
  • Touvron, H. et al. (2023). "LLaMA 2: Open Foundation and Fine-Tuned Chat Models". arXiv:2307.09288
  • Gunasekar, S. et al. (2023). "Textbooks Are All You Need". arXiv:2306.11644
  • Rajbhandari, S. et al. (2020). "ZeRO: Memory Optimizations Toward Training Trillion Parameter Models". SC