Skip to content

通信与并行正文

这页只做并行问题的判断框架:不重复 intro 的路线入口,也不写 walkthrough 的连续故事。

使用顺序

先判断单卡边界和切分对象,再区分同步、状态驻留、层/算子切分与动态路由,最后用 profiling 和 benchmark 检查通信代价。不要从并行方法名反推系统一定会加速。

判断表

先分清问题在通信原语、状态分摊、层切分、算子切分还是 benchmark 验证,再判断收益是不是被同步等待和调度代价吞掉了。

现象优先判断先看哪条线常见动作
卡数加了,但速度没有明显变好communication bound01, 02看 AllReduce、同步等待、拓扑
显存回来了,但训练节奏更差state sharding trade-off03比较 DDP、FSDP、ZeRO 的状态代价
Pipeline 跑起来了,但气泡很大pipeline scheduling mismatch04调 micro-batch、阶段划分和时序
Tensor Parallel 能跑,但通信代价太高tensor split overhead04看切分粒度和通信频率
benchmark 好看,但真实收益不稳validation gap06回到 workload 和热点验证
检查项主要回答什么常见误判
AllReduce / 拓扑通信是不是主要瓶颈多卡天然就线性加速
状态分摊显存是不是靠切状态换回来的显存下降就等于整体更优
pipeline 气泡时间是不是浪费在流水线空转上只看吞吐,不看阶段利用率
tensor split切分是不是把通信频率抬太高会切分就等于值得切分
benchmark并行收益是否真的成立只看单次数字,不看 workload 一致性

本节要点

这页的职责不是列并行方法名,而是把并行选型里最常见的判断点压成一张表。路线入口留给 intro,连续故事留给 walkthrough

最小决策模板

记录 单卡瓶颈 -> 切分对象 -> 通信模式 -> 等待/负载不均 -> 单卡与多卡对照 -> 决策。至少同时保留显存、吞吐/延迟、通信占比和扩展效率。

Released under the MIT License.