LuAITools.com
提交工具
🪜AI
層をつなぐ組み立てライン

パイプライン並列

パイプライン並列はモデルを層ごとに別デバイスへ切り分け、複数のバッチをラインのように流すことで空き時間を減らし、全体のスループットを高めます。

パイプライン並列って何?

モデル並列はモデルを層で切り、データが各カードを順番に流れます。問題は、ある瞬間に働いているのは1枚だけで、他は待っていること。パイプライン並列はこの「空転」を解消します。工場のラインのように、複数バッチを次々に流し込み、各カードは1バッチを終えた瞬間に次のバッチへ。デバイスの稼働率が大きく上がります。

どう例えればいい?

自動車の組み立てライン
1番の工程がシャーシを組んでいる間、2番は1台前のエンジンを載せ、3番はさらに前の車を塗装しています。どの工程も止まらず、完成車が次々にラインから出ます。
モデルの層が「工程」
別々の層を別々のGPUに置き、バッチ(サンプル)がラインを流れる「車」です。

何を解決するのか

「バブル」を減らす
1バッチずつ流すと、前のカードが計算している間、後ろのカードは待ち、戻るときもまた待つ——この空き時間を「バブル」と呼びます。
次のバッチで隙間を埋める
データを小さなマイクロバッチに分け、首尾よく流せば、空き時間を後続のバッチが埋め、スループットが上がります。

代償とトレードオフ

メモリ使用が増える
同時に複数バッチがライン上にあるため、各カードは複数バッチ分の中間状態を保持し、メモリ圧力が高まります。
スケジューリングが難しい
マイクロバッチをいくつに切るか、どう並べればラインを満たしつつメモリを壊さないか、考える必要があります。

大規模モデルでの位置づけ

パイプライン並列はモデル並列・データ並列と組み合わせて使われることが多く、超大規模モデル訓練の「合わせ技」のひとつです。数百・数千枚のGPUをできるだけ忙しく保ち、訓練速度をさらに引き上げます。

まとめ:パイプライン並列は、モデルを工場のラインのように「止めずに」動かし、バッチを首尾よく流して待ち時間を埋める技術です。

コメント