CANN-昇腾NPU分布式训练-8卡到64卡怎么线性扩展

发布时间:2026/5/22 18:33:54

CANN-昇腾NPU分布式训练-8卡到64卡怎么线性扩展 8 卡训练 Llama2-7B 的吞吐约 1800 tokens/s/p。64 卡应该是 8 卡的 8 倍吗实际上只能到 6-7 倍。缺失的 1-2 倍被通信开销吃了。这篇分析昇腾NPU上分布式训练的扩展效率。扩展效率定义扩展效率 实际加速比 / 理论加速比 8 卡 → 64 卡 理论加速比 8× 实际加速比 6.5× 扩展效率 6.5 / 8 81%80% 以上的扩展效率算优秀。低于 70% 需要排查通信瓶颈。通信瓶颈分析8 卡 TP 的通信每层 2 次 All-Reduce32 层 64 次。单机 HCCS 带宽 200GB/s单次 All-Reduce 约 0.05ms64 次 3.2ms。总步长约 50ms通信占 6.4%。64 卡8 机 × 8 卡的通信除了机内 All-Reduce还有跨机 All-Reduce。跨机走 RoCE 100GbE单次 All-Reduce 约 1.8ms。32 层 64 次总通信 115ms。配置计算时间通信时间通信占比扩展效率8 卡单机47ms3.2ms6.4%100%16 卡2 机24ms12ms33%82%32 卡4 机12ms35ms74%65%64 卡8 机6ms115ms95%42%64 卡的通信占比 95%计算只占 5%。扩展效率只有 42%——每加一张卡多出的算力都被通信抵消了。优化策略策略 1DP TP 混合不要把 64 卡全用来做 TP。4 卡做 TP单机内16 组 DP跨机每组4 卡 TPHCCS 通信0.05ms/All-Reduce 跨组DP只需要梯度 All-Reduce每步 1 次不在每层 每步通信 TP 通信64 次 × 0.05ms 3.2ms机内 DP 通信1 次 × 1.8ms 1.8ms跨机 总通信5ms64 卡扩展效率提升到 85%。策略 2通信计算重叠MC2 的通算融合让 All-Reduce 跟计算重叠。每组 TP 的 64 次 All-Reduce 跟 forward/backward 的计算并行通信时间从 3.2ms 降到接近 0。策略 3梯度压缩跨机 DP 的梯度 All-Reduce 可以用 8bit 压缩fromtorch_npu.npuimportcompress_allreduce# 代替标准的 DDP All-Reducecompress_allreduce(model.parameters(),compression8bit)8bit 压缩把通信量减半精度损失约 0.1-0.3%。在 RoCE 带宽受限时效果显著。实测扩展效率Atlas 800I A2Llama2-7Bbf16配置吞吐 (tokens/s)加速比扩展效率8 卡 TP1,8001×100%16 卡 (4TP4DP)3,5001.94×97%32 卡 (4TP8DP)6,6003.67×92%64 卡 (4TP16DP)12,4006.89×86%DPTP 混合的扩展效率远好于纯 TP。64 卡时 86% vs 42%。超大集群的建议1000 卡的训练集群TP4 或 8单机内HCCS 通信DP 按需扩展跨机RoCE 通信 梯度压缩PP 不推荐昇腾NPU的 HCCS 带宽高不需要用 PP 避免通信梯度累积减少 DP 通信频率分布式训练的扩展效率取决于通信策略。纯 TP 的扩展性差DPTP 混合是昇腾NPU上的最优解。通信计算重叠和梯度压缩是锦上添花。仓库在这里https://atomgit.com/cann/hccl

相关新闻