系统工程
分布式训练
从数据并行到多维混合并行,理解大模型训练的核心并行策略
概述
当模型大到单张 GPU 放不下时,我们需要把计算、内存和通信分摊到多块 GPU 上。这个系列从最简单的数据并行开始,逐步引入 ZeRO、FSDP、张量并行、流水线并行,最终理解它们如何组合成多维混合并行。
本系列假设你已掌握基本的 PyTorch 训练流程。对 GPU 硬件和内存层级感兴趣的读者,建议先学习 GPU 编程基础。
章节内容
通信量口径说明:本系列统一以每个训练步、每个 rank 发送 + 接收的数据量为口径,以参数量 为单位。默认分析假设前向传播时缓存了完整参数供反向使用()。若实现上反向传播需要重新聚合参数(如不缓存),通信量会增加到 。各章节中会标注具体场景。
数据并行
理解通信原语和 DDP 的梯度同步机制
ZeRO 优化器
渐进式去冗余,从优化器状态到参数的三级分片
全分片数据并行
理解 FSDP 的 Intra-Tensor 分片与 All-Gather/Reduce-Scatter 通信模式
张量并行
Column Parallel 和 Row Parallel 的对称设计
流水线并行
GPipe 和 1F1B 调度策略的原理与气泡分析
多维混合并行
ParallelContext 坐标系统与 TP+DP+PP 的工业级组合
为什么需要学这些?
| 你想做的事 | 需要的知识 |
|---|---|
| 训练 7B+ 参数的大模型 | DDP、ZeRO、FSDP |
| 理解 PyTorch FSDP 的工作原理 | ZeRO-3 vs FSDP 的分片差异 |
| 单层参数太大放不下单卡 | 张量并行(Column/Row Parallel) |
| 减少流水线气泡提升 GPU 利用率 | GPipe、1F1B 调度策略 |
| 理解 Megatron-LM 的并行策略 | 多维混合并行、ParallelContext |
CookLLM文档