S18:DP、FSDP、TP、PP 的场景选择矩阵
并行策略选择是在模型能否放下、计算强度、通信拓扑、batch/context、故障恢复和实现复杂度之间寻找可接受组合,而非寻找普遍最优算法。
内容类型:预习教材(不代表已完成)
日期:2026-12-10
阶段:P2 · AI Systems Engineering 90
总路线:Day 108 / 360
周次 / 节奏:W3 · 周四案例与连接
状态:教材已备;学习未完成
主题:parallelism selection、topology、trade-off
一句话定义
并行策略选择是在模型能否放下、计算强度、通信拓扑、batch/context、故障恢复和实现复杂度之间寻找可接受组合,而非寻找普遍最优算法。
学习目标
- 能为 DP/FSDP/TP/PP 建立“解决的瓶颈—主要通信—适用条件—代价”矩阵。
- 能根据模型容量、单卡内存、互联和 batch 特征做初步排除。
- 能理解混合并行的层次与拓扑亲和性。
- 能识别 straggler、pipeline bubble 和小 batch 效率问题。
核心知识
如果模型与 optimizer 状态能放入单卡,DP 最简单,利用更多 batch 提高吞吐,但每卡完整复制状态。模型状态放不下时,FSDP/ZeRO 分片并在需要时 gather,代价是更频繁通信与实现细节。单层矩阵本身放不下或希望扩大层内计算时可用 TP,但它通常需要高速互联。PP 按层切分,跨 stage 传 activation/gradient,可跨较慢互联,但会出现 bubble、stage 不平衡和调度复杂性。
选择还受 global batch 限制。DP degree 太大会迫使 global batch 增大或每 rank micro-batch 过小,影响优化与 kernel 效率。长 context 增大 activation 和 attention 计算,可能需要 sequence/context parallel 或 checkpointing,而不是一味增加 DP。MoE 则还要考虑 expert parallel 与 token 路由负载。
混合并行常把高速节点内用于 TP,把节点间用于 DP/PP,但不是固定规则。拓扑映射错误会让高频通信跨慢链路。运维层面还要考虑 checkpoint 格式、elasticity、作业启动和调试难度。
机制与推导
定义 M_model 为完整训练状态,C_device 为可用设备内存。若 M_model > C_device,纯 DP 被容量直接排除。FSDP 理想状态约 M_model/P,但需加 activation 和 gather peak。TP 的通信量与层内张量大小和每层 collective 频率相关;PP 传输 activation,流水线利用率近似受 micro-batch m 与 stage p 影响,朴素流水的 bubble 比例可粗看作 (p-1)/(m+p-1)。
扩展效率:
[ E(P)=\frac{throughput(P)}{P\cdot throughput(1)} ]
它下降并不自动说明策略错误;可能是通信、负载不均、输入瓶颈或 batch 限制。需要分解 step timeline。
最小练习或观察步骤
- 构造三个纸面案例:模型可单卡、状态超单卡、单层超单卡。
- 为每个案例填写 DP/FSDP/TP/PP 的可行/不优先/需更多信息。
- 增加“节点内快、节点间慢”的拓扑条件,重新选择并解释变化。
- 对 PP 计算两个 micro-batch 数下的粗略 bubble 比例。
- 写出至少三个必须通过测量而非公式确认的因素。
常见误区与边界
- 按模型参数量直接指定并行策略,忽略 optimizer、activation 与 context。
- 认为 TP degree 越大越好,忽略每层高频通信和小矩阵效率。
- PP 只看容量,不看 stage 平衡与 micro-batch bubble。
- 用理论线性扩展承诺生产吞吐。
- 混合并行堆叠越多越先进;复杂度本身是成本。
系统场景连接
平台团队需要把训练需求翻译为调度约束:设备数量、同机亲和、互联、checkpoint 存储和可接受恢复时间。选择矩阵也能帮助判断外部训练供应商的报价是否对应真实瓶颈。对于多数企业微调,小模型+PEFT 可能比复杂多维并行更合适;理解复杂策略的价值也包括知道何时不用。
自检问题
- 哪个条件会直接排除纯 DP?
- 为什么 TP 往往更依赖高速节点内互联?
- Global batch 限制如何反过来约束 DP degree?
- PP 的 bubble 与哪些变量相关?
专业课程对齐
- 阅读 CMU Deep Learning Systems 的 distributed training 与 execution 课程内容,重点将计算图切分映射为 DP/TP/PP 数据运动。
- 阅读 PyTorch FSDP 官方文档 的 sharding strategies、device mesh 与限制,提取“何时 gather、何时 shard”的时序。
- 阅读 MIT 6.5840 的分布式故障和复制主线,把训练 worker、协调和恢复看成有失败的系统,不只看正常吞吐。
深入学习提示
先用硬约束排除,再用成本比较:模型/状态是否放得下,batch 是否允许,互联是否匹配,才讨论效率。为每个策略画一条 step 时序,标出 compute、communication、wait。遇到“X 比 Y 快”的材料时,主动补问模型、硬件拓扑、batch、精度和规模;缺少这些条件的结论不能直接迁移。
学后填写区
- 三个案例的选择矩阵:
- 拓扑变化后的选择:
- 一个 bubble 计算:
- 最重要的未测因素:
- 我认为当前不必深入的策略: