Pipeline并行:GPipe,1F1B, Interleaved-1F1B, Looped-BFP

Megatron论文里写的好

总体目标:增大吞吐(减少气泡),减少显存(中间缓存的activation尽可能少),保持和原始计算的结果等价;

GPipe:

画出了backward时长大约是forward的2倍;

最后才更新weight,是为了保持和原始计算的等价,weight不能变;

缺点:forward激活保留的太多,占显存;或者activation checkpointing导致的重新计算太多,浪费GPU算力。

1F1B(PipeDream):

最多缓存一部分micro-batch的激活,优先处理backward,目的是释放activation的显存

整体时长,和GPipe一样,但降低了activation缓存所需的显存量;

Interleaved 1F1B:

1F1B等,是每个GPU负责连续的几个layers,例如:GPU1:[1,2,3,4], GPU2:[5,6,7,8], GPU3:[9,10,11,12], GPU4:[13,14,15,16]...

本方法,每个GPU负责多个小段的连续layers,例如: GPU1: [1,2,9,10], GPU2:[3,4,11,12],GPU3:[5,6,13,14],GPU4:[7,8,15,16]

上图第二个图,能看到,延迟可以缩短;

代价:通信量增大(2个连续小段,等于通信量翻倍)

Breadth-First Pipeline并行论文

痛点:Data并行,随着GPU增大,batch-size也增大;但是,之前的研究表明,batch-size太大,会导致训练收敛变慢(达到相同train-loss所需的samples变多);因此,pipeline并行是既增大GPU又不增大batch-size的方案;

分析:因为和Zero-3一起使用,所以才有了耗时较长的Reduce操作;

对一张GPU卡来说,训练完几层(同一个stage)的所有micro-batches,再训练其他几层;可以很好的和Zero-3结合使用,模型参数随用随off-load至GPU和all-gather凑齐;

在Interleaved-1F1B的基础上,优先把所有micro-batches的forward都计算完毕,再计算backward;每次计算完1个stage的layers的backward,就立马reduce(应该是reduce-scatter) gradients,通过最大程度的重叠通信和backward计算,实现了耗时缩短; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值