模型並行-Gpipe演算法

博客员626發表於2024-12-09

1.原理

  與CPU的流水線的方法相同,Gpipe將模型分成多個塊,每個塊含有原模型的數個層。將每個塊放在不同的GPU上,實現模型的流水線執行。

圖1
只對模型進行切分實際上並沒有達到並行的效果,因為是按照模型的層進行切分,不同層之間的前向傳播和反向傳播存在同步關係,所以無法並行執行。
圖2
所以在模型切分的基礎上,再對資料進行切分,使得每個GPU在處理完一批切分的資料後,可以立刻處理下一批資料,而不會閒置。就實現了並行的效果。
圖2
Gpipe的開銷為$O(\frac{K - 1}{M + K - 1})$,K是切分模型的塊數,M是切分資料的塊數,當$M >= 4K$時,開銷可忽略不計

2.缺點

  由於使用了流水線,在流水線中,執行時間最長的塊將成為整個系統的瓶頸。卷積網路訓練過程中,設計到矩陣的維度變換,無法實現良好的切分平衡不同GPU之間的負載,而在transformer中表現較好。只能支援序列結構的神經網路。只能同步進行更新操作。

相關文章