Virtual pipeline并行算法

基本原理

Virtual Pipeline算法层面等价于增加microbatch数量,减小bubble占比,提升吞吐性能;当前昇腾HCCL 在实现 torch.dist.isend()和torch.dist.irecv()时存在假异步的问题,即收发device需要握手,导致Virtual pipeline实现会出现p2p通信超时问题,执行卡死。

通过调整pipeline parallel rank为奇数的device收发顺序,确保握手成功,且由于VP存在warmup、1F1B、cooldown阶段,需分别分析P2P握手逻辑,控制流较为复杂,通过优化实现,在只需在p2p通信文件中增加少量代码即可。

图1 VP并行算法示意
图2 VP并行优化实现

使用场景

PP并行场景,使用约束PP>=4,LayerNum/PP/VP为整数,当前32卡Atlas 训练系列产品GPT3-30B上VP性能收益4.7%;8卡Atlas 训练系列产品LLaMA-7B上VP性能提升5.5%~12.5%,Atlas A2 训练系列产品上性能提升2.3%~6.4%,PP越大性能收益越高。

操作步骤

使用AscendSpeed,在PP并行的基础上添加--num-layers-per-virtual-pipeline-stage标志来决定每个虚拟stage的层数。