分布式训练
第11章:3D 并行与混合并行策略
把所有并行维度拼起来——TP×PP×DP×EP×CP 的拓扑设计、通信域映射、rank 编排,以及如何为给定集群选出最优组合
3D并行 混合并行 拓扑设计 通信域 Megatron-LM
📖 本章概述
前面各章把每种并行策略单独讲透了。但真实的大模型训练从不是”只用一种”——千卡级训练通常是 TP + PP + DP 的 3D 并行,加上 MoE 后变成 4D,再加长序列就是 5D。本章是并行策略的”总装车间”:讲清多个维度如何正交组合、通信域如何映射到物理硬件、rank 如何编排,最终能为一个给定集群设计出最优并行配置。
📑 章节结构
1. 为什么需要混合并行
- 单一策略的天花板:DP 不省参数、TP 出不了机、PP 有 Bubble
- 维度正交性:不同并行切的是不同东西,可以叠加
world_size = TP × PP × DP(× EP × CP)的约束
2. 通信域划分原则(本章重点)
- 按通信频率/带宽需求排序映射到硬件:
- TP:每层都通信、对延迟最敏感 → 机内 NVLink(8 卡内)
- CP/SP:Attention 内通信 → 通常与 TP 同域或机内
- PP:每个 micro-batch 边界传激活 → 可跨机 InfiniBand
- DP:每步一次梯度同步 → 跨节点,带宽要求最低
- 通信量从大到小:TP > CP > PP > DP,硬件带宽从高到低对应分配
3. rank 编排与通信组构建
- rank 到 (tp_rank, pp_rank, dp_rank) 的多维坐标映射
- 维度排列顺序的影响(哪个维度”贴近”物理相邻 GPU)
- Megatron-LM
initialize_model_parallel()的分组逻辑剖析 - 各通信组的 NCCL communicator 创建
4. 拓扑设计实战
- 实例:64 卡集群(8 节点 × 8 GPU)
- 方案 A:TP=8, PP=4, DP=2
- 方案 B:TP=4, PP=8, DP=2
- 如何取舍:看模型层数、单层大小、网络带宽
- 实例:千卡集群训练百亿/千亿模型的配置思路
- 加入 EP/CP 后的多维编排
5. 显存与吞吐的联合估算
- 给定 (TP, PP, DP) 组合,估算每卡显存占用
- 估算端到端吞吐:计算时间 + 各维度通信时间 + PP Bubble
- 调参方法论:先满足”装得下”,再优化”跑得快”
6. 动手实验
- 为给定模型 + 集群手算 3 套并行方案的显存与通信量,选出最优
- 阅读 Megatron-LM 的
parallel_state.py,画出 rank 分组图
🎯 本章学习目标
- 能解释多个并行维度为什么可以正交组合,写出 world_size 约束
- 能按通信频率把 TP/CP/PP/DP 正确映射到 NVLink/IB/以太网
- 能读懂 Megatron 的 rank 编排逻辑并画出通信组分组图
- 能为给定模型规模和集群拓扑设计并对比多套 3D/多维并行方案