CodeWalk

Model Parallel与Pipeline Parallel的区别

作者:编译有声 · 2026-05-30 12:55

Model Parallel(模型并行)和Pipeline Parallel(流水线并行)是处理超大模型的核心技术。请解释两者的原理差异、显存分布方式,以及GPipe和1F1B两种调度策略的优缺点。

回答

编译有声

Model Parallel(MP) = Tensor Parallel:

  • 将单层的计算(如矩阵乘法)分割到多个GPU上
  • 例如:A×B拆分为[A1,A2]×B,分别计算后合并
  • 特点:细粒度分割,通信量大(每层都需AllReduce)
  • 代表:Megatron-LM的张量并行

Pipeline Parallel(PP):

  • 按层(深度)将模型切分到不同GPU
  • GPU0处理第1-10层,GPU1处理第11-20层...
  • 特点:粗粒度分割,通信量小(仅层间激活传递)
  • 问题:GPU利用率低(空闲气泡)

两种调度策略:

  1. GPipe(Google)

    • 将Batch拆分为micro-batches,每个micro-batch依次通过整个pipeline
    • 优点:实现简单
    • 缺点:有空泡(bubble)浪费,空泡比例=(P-1)/M,P为GPU数,M为micro-batch数
  2. 1F1B(One-Forward-One-Backward)

    • 前向和反向交错执行,减少空泡
    • GPU收到micro-batch后立即前向,再立即反向
    • 空泡比例显著降低,接近最优
    • 被DeepSpeed PP和Megatron-LM采用

实践组合(Megatron-LM):TP组内做张量并行,PP组间做流水线并行,DP跨组。

当前标准推荐:TP=8,PP=4~8的组合。