LLM Parallelism StrategiesVerified
大语言模型的训练和推理无法在单个 GPU 上完成。不同的并行策略(Parallelism Strategy) 从不同维度切分模型和数据,使计算可以分布到数百甚至数千张 GPU 上。
四个维度
大模型并行主要沿四个维度展开,每个维度切分不同的东西:
| 维度 | 切分对象 | 通信方式 | 通信特征 | 典型部署位置 |
|---|---|---|---|---|
| DP | 数据 batch | gradient all-reduce | 同步梯度,可和优化器分片结合 | 跨节点 |
| TP | 层内权重矩阵 | activation all-reduce | 每层前后向都发生,频率高、延迟敏感 | 节点内 NVLink |
| PP | 层间(不同层分到不同 stage) | 点对点传递激活值 | 只在 stage 边界传输,单次较小但会引入气泡 | 相邻节点 |
| EP | MoE 专家 | All-to-All dispatch/combine | token 路由/回收,依赖 overlap 降低开销 | 跨节点 RDMA |
数据并行(Data Parallelism, DP)
最基础的策略:复制模型,分发数据,同步梯度。ZeRO/FSDP 通过参数分片消除冗余存储,使 DP 可以扩展到更大的模型。DP 的核心理念是”切分为了存储”。
张量并行(Tensor Parallelism, TP)
将单层内的线性变换按行或列切分到多个 GPU 上。TP 的理念是”切分为了计算”——计算直接在分片上进行,通过精巧的列并行-行并行交替减少通信次数。TP 的通信发生在几乎每一层的前向与反向之中,核心是 all-reduce 聚合部分结果,因此频率高、对延迟敏感,通常限制在单机 NVLink 域内。TP 还会把单层 GEMM 切细;并行度过高时会出现很多小矩阵乘法,降低 GPU 利用率。
流水线并行(Pipeline Parallelism, PP)
将模型的层分成多个 stage,不同 stage 部署在不同 GPU 上。通过将 mini-batch 拆成 micro-batch 形成流水线重叠。PP 的通信只发生在相邻 stage 的切分点上,本质是激活值和梯度的点对点传输;单次传输通常小于 TP 的 all-reduce,但会随着 micro-batch 流水线反复发生。PP 因而更容易跨节点部署,不过主要代价从通信转向流水线气泡和调度复杂度。
TP 与 PP 的链路分工
Megatron 一类训练系统里,一个常见经验是:TP 尽量放在单机内,PP 负责跨节点扩展。背后的原因不是”PP 更高级”,而是两者的通信模式完全不同。
- TP 更吃带宽和时延:层内矩阵乘法被分到多个 GPU 上,几乎每层前向和反向都要做 all-reduce。只要链路慢一个数量级,通信就会立刻成为瓶颈。
- PP 更像流水线传送带:只在 stage 边界上传递激活值或梯度,通常由相邻 rank 做 P2P 收发。单次消息更小,虽然也很频繁,但更适合放到 Infiniband / RDMA 这类跨节点链路上。
- TP 并行度不能无限增大:切得过细后,会产生很多小 GEMM,GPU Tensor Core 难以跑满,因此 TP 的上限既受通信约束,也受计算粒度约束。
- PP 的主要副作用不是小 GEMM,而是气泡:stage 越多、micro-batch 越少,空转时间越明显,因此 PP 的核心优化点是调度,而不是像 TP 那样优先压缩 all-reduce 延迟。
专家并行(Expert Parallelism, EP)
专为 MoE 模型设计:不同专家放在不同 GPU 上,通过 All-to-All 通信路由 token。EP 保持专家矩阵的完整性(避免 TP 的瘦矩阵问题),在细粒度 MoE 架构下计算效率远优于 TP。DeepEP 通过 RDMA 直驱和 Stream-K 重叠隐藏了跨节点通信延迟。
3D 并行 + EP:如何组合
经典的 3D 并行 把 DP、TP、PP 组合起来。对于 MoE 模型,再加上 EP 构成 4D 并行。
一个典型的大规模集群部署(以 Megatron 为例):
┌───────────── DP(跨节点组复制) ─────────────┐
│ │
┌───┴────────── PP(跨节点链式) ───────────┐ ...
│ │
├─ Stage 0 ─┐ ├─ Stage 1 ─┐ ├─ Stage 2 ─┐
│ TP 0..7 │ │ TP 0..7 │ │ TP 0..7 │
│ (NVLink) │ │ (NVLink) │ │ (NVLink) │
└───────────┘ └───────────┘ └───────────┘
- 节点内(8 GPU NVLink):TP 切分每一层的权重
- 相邻节点之间:PP 切分不同层,形成 stage 链
- 跨节点组:DP 复制整个 pipeline,做数据并行
- MoE 层:EP 在 stage 内把专家分到不同 rank
通信带宽的层次匹配
并行策略的选择本质上是把通信密集的操作放在高带宽链路上:
| 链路 | 带宽 | 适合的并行 |
|---|---|---|
| NVLink(节点内) | ~900 GB/s | TP(高频 all-reduce) |
| RDMA / Infiniband(节点间) | 50-100 GB/s | PP(stage 边界 P2P)、EP(All-to-All + overlap) |
| — | — | DP(梯度同步,可异步、可压缩) |
这也是实践中最常见的拓扑:节点内用 TP,节点间用 PP,跨 pipeline 复制再叠加 DP。
推理场景的区别
训练场景的并行选择以平衡计算和通信为核心。推理场景则有不同侧重:
- TP 仍然是推理最常用的策略(减少单卡显存占用、降低延迟)
- PP 在推理中使用较少(流水线气泡在 batch size 小时很严重)
- DP Attention:sglang 针对 MLA 模型(如 DeepSeek)的推理优化——注意力层用 DP(避免 KV Cache 在 TP 下被复制),MoE/MLP 层用 TP,中间通过 all-gather/slice 衔接
一个选择直觉
相关页面
- 各并行策略的详细说明:data-parallelism、tensor-parallelism、pipeline-parallelism、expert-parallelism
- Megatron 16 卡三维并行的 rank / group 例子见 megatron-3d-parallel-rank-layout
- Megatron 在 RL 系统中的应用见 阅读导览 第四章
- 推理侧的实体见 sglang
Comments