パイプライン並列とは
Pipeline Parallelism
モデルの層を複数のステージに分割し、ステージ間でマイクロバッチをパイプライン状に流して並列に学習する分散学習手法
概要
パイプライン並列は、モデルを層単位で複数のステージに分割し、各ステージを異なるデバイスに配置する分散学習手法。モデル並列の一種で、単一デバイスに収まらない大規模モデルの学習に用いられる。 各ステージにはミニバッチをさらに細かく分割したマイクロバッチが順次流し込まれ、あるデバイスがステージNの計算を終えたマイクロバッチを次のデバイスに渡すのと並行して、次のマイクロバッチの計算に着手する。これによりデバイスの待機時間(パイプラインバブル)を減らし、単純な層分割よりデバイス利用率を高める。 2019年にGoogleが発表した論文「GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism」で提案された手法。
利点
欠点
- パイプラインの最初と最後でデバイスの待機時間(バブル)が発生し、完全な利用率にはならない
- ステージ間の計算量の偏りが大きいと、律速となるステージにボトルネックが生じる