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 × P | All-Reduce | 任意,可 overlap |
| TP | 每层每 micro-batch | ~2 × b × s × d | All-Reduce | NVLink 更合适 |
| PP | 每 micro-batch 边界 | ~2 × b × s × d | P2P | PCIe / IB 可容忍 |
| EP | 每层 | ~b × s × d × (E / 设备数) | All-to-All | NVLink 或高速网络 |
其中:
P是参数量b是 batch sizes是 sequence lengthd是 hidden sizeE是专家数
粗略判断时可以把它理解为:
- 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:一个简单的决策框架是什么?
点击展开查看解析
可以用下面的顺序判断:
先看单卡能否装下
- 能装下:优先从 DP / 小规模 TP 开始
- 装不下:继续看 PP / ZeRO / 更细分片
再看互连是否足够强
- NVLink 强:更适合 TP 和一些更紧密的层内协同
- 只有 PCIe / 弱互连:尽量减少高频跨卡通信
最后看模型结构
- Dense 模型:DP / TP / PP 的组合更常见
- MoE 模型:EP 常常要一起考虑
它不是一个全局最优算法,更像一个足够实用的判断框架,能帮助你先排除明显不合适的方案。
如果要把“能不能装下”说得更实用一点,可以记成:
- 模型参数、梯度、优化器状态大致按
16 bytes / 参数估算 - 再加上激活值和临时 workspace
- 如果显存使用已经接近满载,通常要预留
20%-30%余量 - 如果单卡使用率长期超过
80%-90%,就应该认真考虑 ZeRO、TP 或 PP
现实里常见的组合策略也很重要,例如:
TP=4 + PP=2 + DP=1TP=2 + PP=2 + DP=2
一般来说:
- TP 最依赖强互连,通常优先放机内
- PP 可以跨机,但要注意流水线气泡
- DP 最容易扩展,常常放在最外层
Q4:这页最容易犯的错是什么?
点击展开查看解析
“并行维度越多越好”
不对。并行维度越多,调度和通信也越复杂。“只要切得更细,就一定更省显存”
不对。切分能省显存,但也会带来额外同步和管理成本。“DP 是最简单的,所以一定最优”
不对。模型大到单卡放不下时,DP 根本不够。“TP 一定要跨机”
不对。TP 更适合放在机内强互连上。
小结
这个框架最重要的不是背定义,而是形成一套判断顺序:
先看能不能放下,再看互连够不够,再看模型结构适合什么并行。
关联阅读
这一页和 1C 的通信章节是直接联动的,建议一起看:
1C-01通信拓扑与互连技术1C-02ZeRO 优化器深度1C-04通信调度优化
配合练习
这一页建议和后面的练习一起看。这页的练习可以围绕下面三步展开:
- 先写一个通信量计算器,输入模型规模和 batch / seq / hidden size,估算 DP / TP / PP / EP 的通信量
- 再做一个简单的并行度搜索,给定 8 卡或 16 卡,找出更合理的组合
- 最后用模拟调度器看看不同策略下通信和计算是否容易 overlap
如果要补 Notebook,优先把这三步做成可运行练习,会比先讲更复杂的分布式细节更有帮助。
Notebook 口径
这一页当前保留正文草稿和练习建议,不单独挂独立 Notebook。后续如果补练习,会按 Chapter 1 公开 Notebook 的统一模板来做。
