TP vs PP
2026/8/4 6:19:40 网站建设 项目流程

在 GPU 大模型(LLM)分布式训练与推理中,单个模型的参数量和中间激活值(Activation)往往远超单张显卡的显存容量(如 H100 的 80GB)。为了将百亿、千亿甚至万亿参数的模型放进集群,张量并行(Tensor Parallelism, TP)流水线并行(Pipeline Parallelism, PP)是最核心的两种模型并行(Model Parallelism)方案。


一图看懂两者的拆分维度

两者最本质的区别在于切分模型的维度不同

  • TP(张量并行)横着切(层内拆分)。将模型中单个 Transformer 算子/矩阵乘法拆分到多卡上共同计算。
  • PP(流水线并行)竖着切(层间拆分)。按网络层(Layers)将模型切分为多个阶段(Stages),不同卡负责不同的层。
[ Original Model ] ┌──────────────────┐ │ Layer 3 (Layers) │ ───────┐ ├──────────────────┤ │ │ Layer 2 (Layers) │ ├─ PP:按层切分到不同节点/卡 ├──────────────────┤ │ │ Layer 1 (Layers) │ ───────┘ └──────────────────┘ ▲ ▲ ▲ ▲ │ │ │ │ └─── TP ───┘ (TP:在同一层内部,按矩阵维度拆分到多卡)

1. 张量并行(Tensor Parallelism, TP)

核心原理

TP 作用于 Transformer 内部的矩阵乘法(如 Self-Attention 的QKVQKVQKV投影以及 MLP 层)。以 Megatron-LM 的设计为例:

  1. Column Parallel MLP(列并行)
  • 输入XXX复制发往所有卡。
  • 权重矩阵WWW切分到NNN张卡(W=[W1∣W2]W = [W_1 \vert{} W_2]W=[W1W2])。
  • 每张卡计算Yi=X⋅WiY_i = X \cdot W_iYi=XWi,最后将结果拼接。
  1. Row Parallel MLP(行并行)
  • 输入XXX本身在每张卡上已经是切分好的(X=[X1∣X2]X = [X_1 \vert{} X_2]X=[X1X2])。
  • 权重矩阵WWW切分(W=[W1W2]W = \begin{bmatrix} W_1 \\ W_2 \end{bmatrix}W=[W1W2])。
  • 每张卡计算Yi=Xi⋅WiY_i = X_i \cdot W_iYi=XiWi,最后通过All-Reduce将各卡结果相加得到最终输出YYY

典型组合:MLP 层通常采用“列并行 + 行并行”的组合,这样整个 MLP 块只需要在末尾进行一次 All-Reduce即可完成同步。

特点与开销

  • 通信频率极高:每一个 Transformer Layer 的前向和反向传播都需要进行多次跨卡通信(All-Reduce / All-Gather)。
  • 硬件要求极高:由于通信频繁,TP通常限制在单个节点(Node)内部的 NVLink / NVSwitch 高带宽互联网络下使用。越界到跨节点 PCIe/以太网,通信会迅速成为严重瓶颈。
  • 气泡(Bubble):几乎无计算气泡,显存与计算负载极其均匀。

2. 流水线并行(Pipeline Parallelism, PP)

核心原理

当模型层数极多(例如 80 层 Transformer),单个节点的卡数不足以承载 TP 时,就需要用到 PP:

  1. 分块:把 80 层模型平均切分成 4 个 Stage(每个 Stage 20 层),放置在 4 台机器上。
  2. 传递:Stage 1 计算完第 1~20 层后,将输出激活值(Activation)通过网络发送给 Stage 2;Stage 2 接着算 21~40 层,以此类推。

流水线气泡(Bubble)与调度算法

如果直接串行执行(100% 顺序等待),同一时刻只有一台机器在工作,GPU 利用率极低。为了解决这个问题,PP 引入了Micro-batch(微批次)调度策略:

把一个 Large Batch 拆分成多个 Micro-batches,让不同 Stage 形成流水线并发:

  • 1F1B(One Forward, One Backward):在流水线建立(Warmup)阶段后,每完成一次前向计算(1 Forward),紧接着做一次反向计算(1 Backward)。这种调度能严格控制中间激活值的显存占用,是目前最常用的 PP 算法。

特点与开销

  • 通信量小:节点间只需要传递 Stage 边界处的激活值张量(P2P 点对点通信),通信数据量远小于 TP 的 All-Reduce。
  • 适合跨节点扩展:因为 P2P 通信量小,PP 非常适合用于跨节点(Inter-node)的集群扩展(通过 InfiniBand 或 RoCE 互联)。
  • 存在流水线气泡(Pipeline Bubble):在流水线刚开始和结束阶段,部分 Stage 会处于等待状态(闲置)。Micro-batch 拆得越细,气泡占比越小,但显存开销和调度复杂度会增加。

TP 与 PP 对比总结

比较维度张量并行(Tensor Parallelism, TP)流水线并行(Pipeline Parallelism, PP)
拆分粒度算子/矩阵层级(单个 Layer 内部)网络层级(多个 Sequential Layers)
通信模式集合通信(All-Reduce / All-Gather)点对点通信(P2P Activation Forwarding)
通信频次与带宽要求极高(每层都需通信,需 NVLink)较低(仅 Stage 边界通信,可走 RDMA)
物理物理物理部署建议单节点内部(Intra-node, 4/8 卡)跨节点之间(Inter-node)
负载均衡与气泡负载高度均衡,无流水线气泡存在流水线气泡(依靠 1F1B 等算法优化)
主要显存节省点均匀切分权重(Weights)与梯度按层切分权重与激活值

生产环境中的典型组合(3D Parallelism)

在实际的大模型训练(如 Megatron-DeepSpeed)中,TP 和 PP 通常不会孤立使用,而是与数据并行(DP / Zero-DP)结合构成3D 并行系统:

Total GPUs=TP Size×PP Size×DP Size\text{Total GPUs} = \text{TP Size} \times \text{PP Size} \times \text{DP Size}Total GPUs=TP Size×PP Size×DP Size

  • 节点内(Intra-node):采用TP(8 卡 NVLink 充分发挥高带宽优势)。
  • 跨节点(Inter-node):采用PP(降低跨机网卡的通信瓶颈)。
  • 集群规模扩展:外层采用DP / ZeRO(扩展样本吞吐量)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询