训练与微调分布式训练模型并行速答 · 约 6 分钟更新 2026-09-28

3D 并行(数据+张量+流水线)在实践里怎么组合?

一句话结论

实践中的组合原则是张量并行放节点内吃满NVLink带宽,流水线并行跨节点切分模型层数,数据并行放最外层扩展剩余算力。微调场景通常用ZeRO系列就够了,很少去拼装真3D并行。

先这样答

3D并行的组合策略主要围绕通信开销与显存占用来设计。标准的分配方式是:张量并行负责切分单层内部的大矩阵计算,对通信带宽非常敏感,需要放在单机节点内;流水线并行按层切分模型的深度,对跨节点通信相对友好,适合放在节点之间;数据并行用于扩充批次吞吐,放在最外层扩展到全部剩余的计算卡上。

具体的配置经验通常严格遵循硬件的网络拓扑结构。张量并行的并行度一般等于单机节点内的GPU数量,这样能充分利用NVLink的高带宽处理层内频繁的通信开销。当模型规模超出单机显存时引入流水线并行,将模型的不同层分配到不同的机器节点上。这种方式的通信量仅限于层间激活值的传递,对跨节点网络带宽要求较低。在确定了张量并行和流水线并行的规模,刚好能把完整的模型及训练状态装下后,剩下的集群算力全部用来做数据并行,以扩展整体的训练吞吐。

在实际交流中可以补充说明场景差异。如果是从头预训练大模型,才会用到完整的3D并行架构。在常见的微调场景下,多数情况直接使用ZeRO-2或ZeRO-3即可,很少需要去配置真正的3D并行。ZeRO-3本质上是数据并行的显存优化,并非模型并行,但在实际效果上替代了部分模型并行的显存切分需求,降低了工程部署的复杂度。

面试官会怎么追问

  • 「为什么张量并行不能跨节点配置?」 张量并行在计算每层的前向和反向传播时,需要进行多次通信来拼接局部矩阵的计算结果。这种通信的数据量大且发生频率很高,如果跨机器节点配置,节点间的网络带宽会成为计算瓶颈,导致GPU处于等待状态,因此必须将其限制在拥有高速互联的节点内。
  • 「ZeRO-3和模型并行有什么本质区别?」 ZeRO-3属于数据并行的显存优化技术,它切分的是优化器状态、梯度和模型参数,但在实际前向和反向计算时会通过通信重组完整的参数。张量并行是真正的模型并行,切分的是模型结构中的矩阵乘法,单卡只负责局部计算,两者底层逻辑完全不同。
  • 「如果显存足够装下模型,还需要用流水线并行吗?」 不需要。流水线并行主要是为了解决单节点显存装不下整个模型的问题。它在执行过程中会引入气泡等待时间,导致硬件利用率下降。如果显存足够,应该优先使用张量并行和数据并行,把剩余算力全部投入到数据并行中去提升吞吐量。

回答的坑

脱离硬件拓扑空谈并行度组合,没有指出张量并行度与单节点GPU数量绑定的实践经验,应明确通信带宽对并行策略的决定性影响。

混淆ZeRO与模型并行的概念,错误地将ZeRO-3描述为3D并行中的一种模型切分方式,应准确指出它是数据并行方向上的显存优化。

—— 本题完 ——