Skip to content

26. Parallel Strategy Decision Framework | Parallel Strategy Decision Framework

难度: Hard | 标签: DP, TP, PP, EP, 并行策略 | 目标人群: 需要在多卡训练中做策略判断的学习者

这一页的目标不是重复介绍 DP / TP / PP / EP 的定义,而是回答更实用的问题:给定模型和硬件,应该怎么选并行策略,先选什么,再补什么。

前置阅读建议先看 1C-01 通信拓扑与互连技术1C-02 ZeRO 优化器深度,先建立 NVLink / PCIe / IB 和显存切分的基础直觉,再看这页会更顺。

Q1:什么时候优先考虑 DP、TP、PP、EP?

点击展开查看解析

可以先记一个很实用的经验顺序:

  • DP(数据并行):模型单卡能放下或接近能放下时,通常是最自然的起点
  • TP(张量并行):单卡放得下但算子过重、激活/参数很大、且机内互连较强时很有用
  • PP(流水线并行):模型层数多、单卡显存更紧时,常用来切层
  • EP(专家并行):MoE 模型里最常见,专家本身可以分散到不同设备

更直白一点:

  • 想先把训练跑起来,先看 DP
  • 想把单层算得更快,先看 TP
  • 想把大模型拆开装下,先看 PP
  • 想把 MoE 扩展到多卡,先看 EP

现实中它们通常不是单独使用,而是组合使用。

一个更直观的对比表可以帮助你快速选型:

策略通信频率单次通信量通信模式适合互连
DP每 iteration~2 × PAll-Reduce任意,可 overlap
TP每层每 micro-batch~2 × b × s × dAll-ReduceNVLink 更合适
PP每 micro-batch 边界~2 × b × s × dP2PPCIe / IB 可容忍
EP每层~b × s × d × (E / 设备数)All-to-AllNVLink 或高速网络

其中:

  • P 是参数量
  • b 是 batch size
  • s 是 sequence length
  • d 是 hidden size
  • E 是专家数

粗略判断时可以把它理解为:

  • DP 的通信最“全局”,但频率最低
  • TP 的通信最“频繁”,但单次量通常不大
  • PP 的通信发生在层边界,频率较低
  • EP 的通信最依赖路由和设备切分

Q2:通信成本应该怎么判断?

点击展开查看解析

并行策略最核心的不是“名字”,而是通信模式:

  • DP:通常是梯度同步,通信对象偏全局
  • TP:通常是层内通信,频繁但粒度更小
  • PP:通常是阶段边界通信,频率相对低
  • EP:通常涉及 token 到 expert 的分发和回收,通信模式更复杂

做判断时可以先问三个问题:

  • 通信频率高不高
  • 单次通信量大不大
  • 互连带宽够不够

如果一个策略要求很高频的跨节点通信,通常就要非常谨慎;如果通信发生在机内高速互连上,容忍度会高很多。

如果你要进一步量化,可以先记住几个常见带宽锚点:

  • PCIe 4.0 x16:约 64 GB/s 双向
  • PCIe 5.0 x16:约 128 GB/s 双向
  • NVLink 3 / 4:大约 600-900 GB/s 级别
  • InfiniBand NDR:约 50 GB/s 量级

所以,判断并行策略时,往往先看“通信是不是必须跨机”,而不是先看“策略名字是不是高级”。

Q3:一个简单的决策框架是什么?

点击展开查看解析

可以用下面的顺序判断:

  1. 先看单卡能否装下

    • 能装下:优先从 DP / 小规模 TP 开始
    • 装不下:继续看 PP / ZeRO / 更细分片
  2. 再看互连是否足够强

    • NVLink 强:更适合 TP 和一些更紧密的层内协同
    • 只有 PCIe / 弱互连:尽量减少高频跨卡通信
  3. 最后看模型结构

    • Dense 模型:DP / TP / PP 的组合更常见
    • MoE 模型:EP 常常要一起考虑

它不是一个全局最优算法,更像一个足够实用的判断框架,能帮助你先排除明显不合适的方案。

如果要把“能不能装下”说得更实用一点,可以记成:

  • 模型参数、梯度、优化器状态大致按 16 bytes / 参数 估算
  • 再加上激活值和临时 workspace
  • 如果显存使用已经接近满载,通常要预留 20%-30% 余量
  • 如果单卡使用率长期超过 80%-90%,就应该认真考虑 ZeRO、TP 或 PP

现实里常见的组合策略也很重要,例如:

  • TP=4 + PP=2 + DP=1
  • TP=2 + PP=2 + DP=2

一般来说:

  • TP 最依赖强互连,通常优先放机内
  • PP 可以跨机,但要注意流水线气泡
  • DP 最容易扩展,常常放在最外层

Q4:这页最容易犯的错是什么?

点击展开查看解析
  • “并行维度越多越好”
    不对。并行维度越多,调度和通信也越复杂。

  • “只要切得更细,就一定更省显存”
    不对。切分能省显存,但也会带来额外同步和管理成本。

  • “DP 是最简单的,所以一定最优”
    不对。模型大到单卡放不下时,DP 根本不够。

  • “TP 一定要跨机”
    不对。TP 更适合放在机内强互连上。

小结

这个框架最重要的不是背定义,而是形成一套判断顺序:

先看能不能放下,再看互连够不够,再看模型结构适合什么并行。

关联阅读

这一页和 1C 的通信章节是直接联动的,建议一起看:

  • 1C-01 通信拓扑与互连技术
  • 1C-02 ZeRO 优化器深度
  • 1C-04 通信调度优化

配合练习

这一页建议和后面的练习一起看。这页的练习可以围绕下面三步展开:

  • 先写一个通信量计算器,输入模型规模和 batch / seq / hidden size,估算 DP / TP / PP / EP 的通信量
  • 再做一个简单的并行度搜索,给定 8 卡或 16 卡,找出更合理的组合
  • 最后用模拟调度器看看不同策略下通信和计算是否容易 overlap

如果要补 Notebook,优先把这三步做成可运行练习,会比先讲更复杂的分布式细节更有帮助。

Notebook 口径

这一页当前保留正文草稿和练习建议,不单独挂独立 Notebook。后续如果补练习,会按 Chapter 1 公开 Notebook 的统一模板来做。

Released under the MIT License.