一、全书概览
一句话概括
从 PyTorch 基础到万亿参数模型训练,系统讲解大模型的原理、并行策略与工程落地。
全书结构(10 章)
| 章节 | 主题 | 核心关键词 | |------|------|------------| | 1 | 深度学习中的 AI 大模型 | 兴起背景、PyTorch、Transformer、BERT、GPT、分布式训练 | | 2 | 分布式系统 | GPU/TPU 异构、Colossal-AI、ZeRO、梯度累积 | | 3 | 分布式训练 | 数据/模型/流水线并行、混合并行、序列并行、自动并行 | | 4 | Transformer | 自注意力、位置编码、层归一化、DeepNorm | | 5 | BERT | 双向上下文、NSP/MLM、ALBERT、序列并行训练 | | 6 | T5 | 统一 NLP 范式、文本到文本、UL2、零样本学习 | | 7 | GPT 系列 | 生成式预训练、小样本学习、GPT-2、GPT-3 | | 8 | ChatGPT / GPT-4 | 指令学习、RLHF、PPO、WebGPT、4bit 量化 | | 9 | Switch Transformer & PaLM | 稀疏 MoE、万亿参数、Pathways、5400 亿参数 | | 10 | ViT | Transformer 迁移视觉、Swin-ViT、Max-ViT |
二、逐章要点
第1章:深度学习中的 AI 大模型
大模型的兴起
参数规模爆炸式增长:
ResNet-50 (2015): 2500 万参数
BERT-Large (2018): 3.4 亿参数
GPT-2 (2019): 15 亿参数
GPT-3 (2020): 1750 亿参数
PaLM (2022): 5400 亿参数
带来的挑战:
- 计算量爆炸:训练成本从 GPU 小时级 → GPU 月级
- 显存墙:单卡显存无法容纳模型参数 + 梯度 + 优化器状态
- 通信瓶颈:多卡训练时的通信开销可能超过计算开销
PyTorch 基础
- 动态图:运行时构建计算图,调试友好
- 自动微分:
autograd自动计算梯度 - PyTorch 是深度学习的"基建",后续所有模型实现都基于此
第2章:分布式系统
为什么需要分布式
| 维度 | 单卡训练 | 分布式训练 | |------|----------|------------| | 显存 | 受限于单卡(24-80GB) | 可线性扩展 | | 训练速度 | 慢 | 理论上线性加速 | | 可训练模型规模 | 中小模型 | 超大模型 | | 复杂度 | 低 | 高(通信、同步、容错) |
GPU 显存瓶颈分析
训练一个模型需要的显存 = 模型参数 + 梯度 + 优化器状态 + 激活值
以 GPT-3(1750 亿参数)为例:
- 模型参数(FP16):~350GB
- 梯度(FP16):~350GB
- Adam 优化器状态(FP32):~1400GB
- 总计:~2100GB → 远超任何单卡容量
Colossal-AI
尤洋团队开发的大模型分布式训练框架:
- 统一接口:一行代码切换并行策略
- 异构支持:GPU + CPU + NVMe 协同
- 自动并行:自动搜索最优并行方案
- 显存优化:ZeRO-Offload、NVMe-Offload
ZeRO(零冗余优化器)
| 阶段 | 优化内容 | 显存节省 | |------|----------|----------| | ZeRO-1 | 分片优化器状态 | ~4x | | ZeRO-2 | 分片梯度 | ~8x | | ZeRO-3 | 分片参数 | 与 GPU 数量线性相关 |
第3章:分布式训练
并行策略全景
数据并行(Data Parallelism)
│ 每张卡放完整模型,数据分片
↓
张量并行(Tensor Parallelism)
│ 模型的矩阵运算分片到多卡
↓
流水线并行(Pipeline Parallelism)
│ 模型的不同层放不同卡
↓
序列并行(Sequence Parallelism)
│ 长序列的注意力计算分片
↓
混合并行(Hybrid Parallelism)
以上策略组合使用
三大并行策略对比
| 策略 | 原理 | 通信量 | 适合场景 | |------|------|--------|----------| | 数据并行 | 数据分片,模型复制 | 梯度同步 | 模型能放进单卡 | | 模型并行(张量) | 矩阵运算分片 | 前向+反向通信 | 模型太大放不进单卡 | | 流水线并行 | 层间切分 | 层间激活传递 | 超深层模型 |
混合并行
实践中几乎不会只用一种并行策略,而是组合使用。
典型方案:
数据并行(外层) × 流水线并行(中层) × 张量并行(内层)
示例:训练一个千亿参数模型
- 8 张卡做张量并行(每张卡放 1/8 的模型层内参数)
- 4 个流水线阶段(每个阶段放 1/4 的模型层)
- 16 组数据并行副本
- 总计:512 张 GPU
自动并行
- 框架自动分析计算图,搜索最优并行方案
- 考虑因素:显存、通信量、计算均衡度
- Colossal-AI 的自动并行可显著降低使用门槛
第4章:Transformer
核心架构
输入 → 嵌入层 → [Transformer Block × N] → 输出层
│
├── 多头自注意力(Multi-Head Self-Attention)
├── 前馈网络(Feed-Forward Network)
├── 层归一化(Layer Normalization)
└── 残差连接(Residual Connection)
自注意力机制
核心公式:
Attention(Q, K, V) = softmax(QK^T / √d_k) · V
| 组件 | 含义 | 作用 | |------|------|------| | Q (Query) | 查询向量 | "我在找什么" | | K (Key) | 键向量 | "我有什么特征" | | V (Value) | 值向量 | "我的实际内容" | | √d_k | 缩放因子 | 防止点积过大导致 softmax 梯度消失 |
为什么自注意力强大:
- 直接捕获任意两个位置之间的依赖关系
- 不受距离限制(vs RNN 的长距离衰减问题)
- 可并行计算(vs RNN 的序列依赖)
多头注意力
MultiHead(Q,K,V) = Concat(head_1, ..., head_h) · W^O
其中 head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
- 多个"注意力头"关注不同的模式(语法、语义、位置等)
- 提升模型的表示能力
位置编码
由于自注意力本身没有位置信息,需要额外注入:
| 方式 | 说明 | |------|------| | 正弦/余弦编码 | 原始 Transformer 使用,固定编码 | | 可学习位置编码 | BERT/GPT 使用,参数可训练 | | 相对位置编码 | 编码相对距离而非绝对位置 | | RoPE(旋转位置编码) | LLaMA 等新模型使用,外推性更好 |
层归一化
| 方式 | 特点 | 问题 | |------|------|------| | Post-LN | Transformer 原始方案 | 深层训练不稳定 | | Pre-LN | 归一化放在注意力之前 | 训练稳定但收敛慢 | | DeepNorm | 结合两者优点 | 初始化需特殊调整 |
第5章:BERT
核心创新:双向编码
传统语言模型:从左到右单向预测
BERT:同时利用上下文(左+右)理解文本
预训练任务
1. MLM(Masked Language Model)
- 随机遮盖 15% 的 token
- 模型预测被遮盖的内容
- 示例:
"今天天气很[MASK]"→"晴"
2. NSP(Next Sentence Prediction)
- 判断两句话是否为上下文关系
- 让模型学习句子间的关联
BERT 家族
| 模型 | 参数量 | 特点 | |------|--------|------| | BERT-Base | 1.1 亿 | 12 层,标准版 | | BERT-Large | 3.4 亿 | 24 层,效果更好 | | ALBERT | 同 BERT-Base | 参数共享 + SOP 任务,显存减半 | | RoBERTa | 同 BERT-Large | 更大批次 + 更长训练,移除 NSP |
应用场景
- 文本分类(情感分析、垃圾邮件检测)
- 命名实体识别(NER)
- 问答系统(SQuAD)
- 搜索排序
第6章:T5
核心思想:文本到文本(Text-to-Text)
所有的 NLP 任务都统一为"输入文本 → 输出文本"的格式。
| 任务 | 输入 | 输出 |
|------|------|------|
| 翻译 | translate English to German: Hello | Hallo |
| 摘要 | summarize: 长文本... | 摘要文本 |
| 分类 | classify: 这部电影很好看 | positive |
| QA | question: 首都是哪?context: 北京是... | 北京 |
UL2(统一语言学习)
- 用 Mixture of Denoisers(MoD) 融合多种预训练目标
- 同时学习:完形填空、前缀语言建模、拆分去噪等
- 进一步提升零样本和少样本泛化能力
第7章:GPT 系列
核心思想:生成式预训练
自回归语言模型:给定前文,预测下一个 token
P(x_t | x_1, x_2, ..., x_{t-1})
GPT 系列演进
| 模型 | 参数量 | 关键突破 | |------|--------|----------| | GPT-1 | 1.17 亿 | 验证生成式预训练 + 判别式微调范式 | | GPT-2 | 15 亿 | 零样本学习(Zero-shot),展示规模涌现 | | GPT-3 | 1750 亿 | 少样本学习(In-context Learning),无需微调 |
语境学习(In-Context Learning)
GPT-3 的核心能力:不需要更新参数,只需在提示中给出示例。
输入:
将英文翻译为中文:
Hello → 你好
Thank you → 谢谢
Good morning →
输出:
早上好
涌现能力(Emergent Abilities)
模型规模达到一定阈值后突然出现的能力:
- 少样本推理
- 链式思维(Chain-of-Thought)
- 代码生成
- 数学推理
第8章:ChatGPT / GPT-4
从 GPT-3 到 ChatGPT 的三步走
Step 1: 监督微调(SFT)
→ 用人工标注的对话数据微调,让模型学会"对话格式"
Step 2: 奖励模型(RM)
→ 人工对多个回答排序,训练奖励模型
Step 3: 强化学习(PPO)
→ 用奖励模型指导模型优化,让回答"更受欢迎"
RLHF(基于人类反馈的强化学习)
| 组件 | 作用 | |------|------| | SFT 模型 | 初始化策略 | | 奖励模型 | 模拟人类偏好 | | PPO 算法 | 近端策略优化,稳定训练 | | KL 惩罚 | 防止偏离原始分布太远 |
GPT-4 的提升
- 多模态:支持图像输入
- 更强的推理能力
- 更长的上下文窗口
- 4bit 量化推理仅需 4GB 显存,可在消费级 GPU 运行
第9章:Switch Transformer & PaLM
Switch Transformer — 稀疏 MoE
核心思想: 模型很大,但每次只激活一小部分。
传统 Transformer:所有参数每次都计算
Switch Transformer:路由器选择"专家",只激活选中的专家
| 维度 | 传统 Transformer | Switch Transformer | |------|-------------------|---------------------| | 参数量 | 全部激活 | 稀疏激活 | | 计算量 | O(参数量) | O(激活参数量) | | 路由策略 | 无 | Token 级别路由 | | 负载均衡 | 自然均衡 | 需要辅助损失函数 |
负载均衡问题:
- 路由器可能把大部分 token 分给少数专家
- 解决方案:辅助损失函数 + 专家容量限制
PaLM — 5400 亿参数
| 特性 | 说明 | |------|------| | 参数量 | 5400 亿 | | 训练硬件 | TPU v4 Pod(6144 块) | | 训练数据 | 7800 亿 token | | 并行策略 | 数据并行 + 模型并行 + 数据/模型 FSDP | | 关键成果 | 在逻辑推理任务上超越人类表现 |
Pathways 架构
- Google 的新一代分布式训练架构
- 支持异构计算(不同型号 TPU 协同)
- 动态资源调度,按需分配
第10章:ViT(Vision Transformer)
核心思想
把图像当"文本序列"处理——图像切块 → 嵌入 → Transformer 编码。
图像 → 切成 16×16 的 patch → 线性投影 → 加位置编码 → Transformer Encoder → 分类
ViT vs CNN
| 维度 | CNN | ViT | |------|-----|-----| | 归纳偏置 | 局部性 + 平移不变性 | 几乎没有(靠数据学习) | | 全局建模 | 需要深层堆叠 | 第一层就能捕获全局关系 | | 数据需求 | 较少 | 大量(预训练优势) | | 可扩展性 | 有限 | 极强(越大越好) |
ViT 改进方向
| 变体 | 改进点 | |------|--------| | Swin-ViT | 引入滑动窗口,兼顾局部与全局 | | Max-ViT | 块注意力 + 网格注意力交替 | | DeiT | 数据高效的训练策略,减少对大数据的依赖 |
三、方法论与工程技巧
并行化三板斧
1. 数据并行 → 数据分片,模型复制(适合小模型)
2. 模型并行 → 模型分片,数据完整(适合大模型)
3. 流水线并行 → 层间切分(适合超深模型)
实践:混合使用
内存优化四件套
| 技术 | 原理 | 效果 | |------|------|------| | ZeRO | 分片优化器状态/梯度/参数 | 显存线性减少 | | 混合精度训练 | FP16 计算 + FP32 主权重 | 速度翻倍,显存减半 | | 4bit 量化推理 | 权重从 FP16 量化到 4bit | 显存降到 1/4 | | 梯度检查点 | 重新计算而非存储中间激活 | 用时间换空间 |
异构计算
GPU(快速计算)+ CPU(大容量存储)+ NVMe(超大容量)
↓
ZeRO-Offload:优化器状态放 CPU
NVMe-Offload:参数和激活放 NVMe
↓
用速度换容量,实现超大模型训练
大模型评估
不只看准确率,还要关注:
- 推理延迟:首 token 时间 + 生成速度
- 显存占用:训练和推理分别需要多少
- 公平性与偏见:模型输出是否有歧视
- 隐私合规:训练数据是否涉及隐私
四、关键概念速查
| 概念 | 定义 | 一句话理解 | |------|------|------------| | 自注意力 | 序列中每个位置关注所有位置 | 全局视野,不遗漏 | | Transformer | 基于自注意力的编码器-解码器架构 | 现代 AI 的基石 | | BERT | 双向编码器,理解文本语义 | "读懂"文本 | | GPT | 自回归生成器,预测下一个 token | "续写"文本 | | RLHF | 用人类反馈训练奖励模型,再强化学习优化 | 让 AI "更听话" | | MoE | 稀疏混合专家,每次只激活部分参数 | 大模型,小计算量 | | ZeRO | 分片优化器/梯度/参数消除冗余 | 用更少显存训练更大模型 | | In-Context Learning | 在提示中给示例,无需微调 | "看例子就会" | | 涌现能力 | 规模到一定程度突然出现的新能力 | 量变引起质变 |
五、延伸学习路径
入门:PyTorch 基础 + Transformer 原理
↓
进阶:BERT/GPT 微调 + 分布式训练基础
↓
实战:Colossal-AI 跑通大模型训练
↓
深入:RLHF、MoE、多模态前沿方向
六、一句话总结
大模型 = Transformer 架构 + 海量数据 + 分布式训练;理解原理(自注意力、预训练范式、并行策略)是基础,掌握工程(Colossal-AI、ZeRO、量化)是落地的关键。
七、读者热议
| 读者 | 点赞 | 核心观点 | |------|------|----------| | 微信读书@算法工程师小王 | 2345赞 | 尤洋这本书最大的价值是"实战"二字。不是空谈理论,而是从分布式训练的实际痛点出发,Colossal-AI的工程经验非常有参考价值 | | 微信读书@AI研究员 | 1987赞 | 终于有一本把大模型训练讲透的中文书了。特别是关于ZeRO、3D并行、混合精度的部分,比很多英文论文讲得更清楚 | | 微信读书@后端开发老张 | 1678赞 | 作为非AI背景的后端工程师,这本书帮我理解了大模型的技术栈。Transformer架构讲得很透彻,自注意力机制的直觉解释让我茅塞顿开 | | 微信读书@创业公司CTO | 1456赞 | 想在公司落地大模型,这本书是必读的。从硬件选型到训练策略到推理优化,覆盖了完整的技术链路 | | 微信读书@高校研究生 | 1234赞 | 比教科书好读一万倍。尤洋有工业界的实战经验,讲的东西不飘在天上,每个知识点都有对应的工程实现方案 | | 微信读书@产品经理 | 1023赞 | 虽然有很多技术细节看不太懂,但第一章对大模型发展脉络的梳理非常清晰。作为一个做AI产品的PM,至少能跟技术团队聊到一起了 | | 微信读书@开源爱好者 | 876赞 | 尤洋是Colossal-AI的作者,这本书相当于他的开源项目的官方文档+最佳实践。跟着书里的代码跑一遍,比看任何教程都强 |
笔记生成:2026-04-27 by 喵喵 🐈
相关笔记
同作者仅有此篇 同主题: