λLLM Wiki

LLM Parallelism StrategiesVerified

大语言模型的训练和推理无法在单个 GPU 上完成。不同的并行策略(Parallelism Strategy) 从不同维度切分模型和数据,使计算可以分布到数百甚至数千张 GPU 上。

四个维度

大模型并行主要沿四个维度展开,每个维度切分不同的东西:

维度切分对象通信方式通信特征典型部署位置
DP数据 batchgradient all-reduce同步梯度,可和优化器分片结合跨节点
TP层内权重矩阵activation all-reduce每层前后向都发生,频率高、延迟敏感节点内 NVLink
PP层间(不同层分到不同 stage)点对点传递激活值只在 stage 边界传输,单次较小但会引入气泡相邻节点
EPMoE 专家All-to-All dispatch/combinetoken 路由/回收,依赖 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/sTP(高频 all-reduce)
RDMA / Infiniband(节点间)50-100 GB/sPP(stage 边界 P2P)、EP(All-to-All + overlap)
DP(梯度同步,可异步、可压缩)

这也是实践中最常见的拓扑:节点内用 TP,节点间用 PP,跨 pipeline 复制再叠加 DP

推理场景的区别

训练场景的并行选择以平衡计算和通信为核心。推理场景则有不同侧重:

  • TP 仍然是推理最常用的策略(减少单卡显存占用、降低延迟)
  • PP 在推理中使用较少(流水线气泡在 batch size 小时很严重)
  • DP Attentionsglang 针对 MLA 模型(如 DeepSeek)的推理优化——注意力层用 DP(避免 KV Cache 在 TP 下被复制),MoE/MLP 层用 TP,中间通过 all-gather/slice 衔接

一个选择直觉

  • 模型放不进单卡 → 先用 TP(节点内)
  • 单节点放不下 → 加 PP(跨节点切层)
  • 需要更多并行度 → 加 DP(复制 + 数据切分)
  • MoE 模型的专家太多 → 用 EP 替代 TP 切专家

相关页面

Comments