バブル最小化(パイプラインバブル削減)とは
Bubble Minimization / パイプラインバブル削減
パイプライン並列でデバイスが計算開始・終了時に生じる待機時間(バブル)を、スケジューリング等の工夫で削減する取り組み
概要
パイプライン並列では、パイプラインの最初と最後で一部のデバイスが計算対象を持たずに待機する時間が生じる。これをパイプラインバブルと呼ぶ。パイプラインステージ数が多いほど、またマイクロバッチ数が少ないほど、バブルが全体の実行時間に占める割合は大きくなり、デバイスの利用率が低下する。 バブル最小化は、この待機時間を減らすための工夫の総称。代表的な方法として、マイクロバッチ数を増やす・順伝播と逆伝播の実行順序を1F1B(One-Forward-One-Backward)方式にしてメモリ使用量を抑えつつバブルを減らす・複数ステージを交互に配置するインターリーブドスケジューリングを使う、といった手法がある。
利点
欠点
- バブルを無くすことは難しく、ステージ数や通信環境に応じたトレードオフが残る
- 1F1Bやインターリーブドスケジューリングなど高度な手法は実装が複雑になる