## 概要
GPipe は [[Google Brain]] が開発したモデル並列化ライブラリであり、[[Lingvo]] フレームワーク上でオープンソースとして公開された。層の系列として表現できる任意のニューラルネットワークを、複数の加速器(GPU/TPU)にまたがってスケーリングすることを目的とする。
## 主な設計
- **バッチ分割パイプライン化**: ミニバッチを M 個のマイクロバッチに分割して K 個のデバイスにパイプライン化する。
- **再マテリアライゼーション**: 逆伝播時に中間活性化を再計算することでピークメモリを $O(N+K \times L/M)$ に削減する。
- **同期的勾配更新**: 全マイクロバッチの勾配を積算してミニバッチ末尾に一括適用する。重みストールが生じない。
- **低通信設計**: セル境界の活性化テンソルのみを転送するため、高速インターコネクト不要。
## 達成スケール
- AmoebaNet: 1.8B パラメータ(8 加速器、単一加速器 82M の 22 倍)
- Transformer: 83.9B パラメータ(128 加速器、単一加速器 282M の 298 倍)
## 位置付け
GPipe は同期的パイプライン並列化の起点となる原典実装である。後継の PipeDream(非同期)や 1F1B スケジューリング(Megatron-LM)、インターリーブドスケジュール、Zero Bubble などの設計はすべて GPipe のバブルとメモリの課題を起点としている。→ [[パイプライン並列化]]
## 関連
- [[Google Brain]]
- [[Yanping Huang]]
- [[Quoc V. Le]]
- [[パイプライン並列化]]
- [[再マテリアライゼーション]]
- [[並列化戦略]]
- [[@2019__NeurIPS__GPipe Easy Scaling with Micro-Batch Pipeline Parallelism]]