模型并行-Gpipe算法

1.原理

  与CPU的流水线的方法相同,Gpipe将模型分成多个块,每个块含有原模型的数个层。将每个块放在不同的GPU上,实现模型的流水线执行。

图1
只对模型进行切分实际上并没有达到并行的效果,因为是按照模型的层进行切分,不同层之间的前向传播和反向传播存在同步关系,所以无法并行执行。
图2
所以在模型切分的基础上,再对数据进行切分,使得每个GPU在处理完一批切分的数据后,可以立刻处理下一批数据,而不会闲置。就实现了并行的效果。
图2
Gpipe的开销为$O(\frac{K - 1}{M + K - 1})$,K是切分模型的块数,M是切分数据的块数,当$M >= 4K$时,开销可忽略不计

2.缺点

  由于使用了流水线,在流水线中,执行时间最长的块将成为整个系统的瓶颈。卷积网络训练过程中,设计到矩阵的维度变换,无法实现良好的切分平衡不同GPU之间的负载,而在transformer中表现较好。只能支持串行结构的神经网络。只能同步进行更新操作。

posted @ 2024-12-09 13:32  博客员626  阅读(3)  评论(0编辑  收藏  举报