AI・機械学習
上級

パイプライン並列(LLM学習)(パイプラインヘイレツエルエルエムガクシュウ)

LLM分散学習でモデル層(Transformerブロック)を複数ステージに分割し、異なるGPUグループに割り当てる手法。データのフォワード・バックワードパスを連続的にパイプライン処理することで、モデル並列化によるGPUアイドル時間(バブル)を最小化する。

0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
distributed-training
model-parallelism
llm-training
pipeline-schedule
gpu-cluster

パイプライン並列(LLM学習)

パイプライン並列化は、Transformerモデルの層(レイヤー)を複数のパイプラインステージに分割し、それぞれ異なるGPUグループに割り当てる手法。モデルサイズが単一GPUのVRAMを超える場合に不可欠で、テンソル並列・データ並列と組み合わせた「3D並列化」の一軸として活用される。

素朴なモデル並列との違い

最も単純なモデル並列(MP)はGPU-0でLayer 1〜12、GPU-1でLayer 13〜24を担当するが、GPUが交互にアイドルになる「バブル問題」が生じる。パイプライン並列はミニバッチをさらにマイクロバッチに分割し、各ステージが異なるマイクロバッチを同時処理することでアイドルを削減する。

主要スケジューリングアルゴリズム

GPipe(Google, 2019)はフォワードパス全マイクロバッチ完了後にバックワードを実行。バブル率O(K/M)(K=ステージ数, M=マイクロバッチ数)でシンプルだが大きなアクティベーションバッファが必要。

1F1B(Megatron-LM)はフォワード1回→バックワード1回を交互に実行。バブル率はGPipeと同等だがメモリ効率が優れ、Megatron-LMのデフォルトスケジュールとして広く普及している。

インターリーブド1F1B(Megatron-LM v2)は各GPUが複数の仮想ステージを担当(v-stage)。バブル率をO(K/M)からO(1/M)に削減するが通信量は増加する。

バブル率の計算

バブル率 = (p-1) / (p-1+m)(p=パイプラインステージ数, m=マイクロバッチ数)。p=8ステージ・m=32マイクロバッチの場合: 7/39 ≈ 18%のアイドル。mを増やすほどバブル率は下がるが、activation checkpointingとのトレードオフが生じる。

Llama 3学習での例

Meta公式Llama 3 405Bの学習構成はMegatron-LMベース。テンソル並列度TP=8、パイプライン並列度PP=16、データ並列度DP=約1024の3D並列化で実施された。H100 16,384基を使用し、約50日かけて学習が完了したとされる。

ZB-H1(Zero Bubble Pipeline)

2024年発表のZero Bubble(ZB)スケジュールは、バックワードパスをweight gradientとinput gradientの2段階に分解することでバブルを理論上ゼロに近づける技術。Megatron-LMへの実装が進んでおり、大規模クラスタでのMFU(Model FLOP利用率)改善が期待される。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/6