AI・機械学習
上級

Megatron-LM(メガトロンエルエム)

NVIDIA が開発した大規模Transformerモデル向け分散学習フレームワーク。テンソル並列・パイプライン並列・シーケンス並列を統合的に提供し、数兆パラメータモデルの効率的な学習を実現する。GPT・BERT・T5等の主要アーキテクチャに対応する。

0 回閲覧
0 いいね

Megatron-LMとは

Megatron-LM は NVIDIA が2019年から開発する大規模Transformerモデル向けの分散学習フレームワークである。名称はTransformerの「変形」にちなみ、主にテンソル並列(Tensor Parallelism)とパイプライン並列(Pipeline Parallelism)を核とするモデル並列技術を提供する。DeepSpeedやFSDPがデータ並列の拡張を主軸とするのに対し、Megatron-LMはモデルの内部構造を分割する手法に特化している。

Megatron-LMの技術はNVIDIA NeMoフレームワークに統合されており、企業向けLLM学習プラットフォームとして広く利用されている。GPT-3(175B)、Bloom(176B)、Falcon(180B)など多くの大規模モデルの学習にMegatron-LMの技術が使われた。

テンソル並列(Tensor Parallelism)

テンソル並列はTransformerの個々のレイヤー内で重み行列をGPU間に分割する手法である。Megatron-LMはAttention機構とFeed-Forward Network(FFN)で異なる分割戦略を適用する。

Multi-Head Attentionの分割

AttentionのQKV射影行列を 列方向(Column Parallel) に分割する。N個のAttentionヘッドをN基のGPUに均等に割り当て、各GPUが独立にAttention計算を実行する。出力射影行列は 行方向(Row Parallel) に分割し、AllReduceで結果を統合する。

GPU 0: Q[:, :d/N], K[:, :d/N], V[:, :d/N] → Attention → O[:d/N, :] → AllReduce
GPU 1: Q[:, d/N:2d/N], K[:, d/N:2d/N], V[:, d/N:2d/N] → Attention → O[d/N:2d/N, :] → AllReduce
...

Feed-Forward Networkの分割

FFNの最初の線形層を列方向に分割し、GeLU活性化後の二番目の線形層を行方向に分割する。GeLU活性化が要素ごとの演算であるため、列分割後の各GPUで独立に実行でき、通信が不要となる。

演算分割方向通信
QKV射影Column Parallelなし
Attention計算Head並列なし
出力射影Row ParallelAllReduce(Forward)
FFN Layer 1Column Parallelなし
GeLU活性化各GPU独立なし
FFN Layer 2Row ParallelAllReduce(Forward)

1つのTransformerブロックあたりForwardで2回、Backwardで2回の合計4回のAllReduce通信が発生する。NVLink帯域(900GB/s)では数十マイクロ秒で完了するため、ノード内8GPUでは高い計算効率を維持できる。

パイプライン並列(Pipeline Parallelism)

パイプライン並列はモデルのレイヤー群を複数のステージに分割し、各ステージを異なるGPUに配置する。Megatron-LMは1F1B(One Forward One Backward)スケジューリングを採用し、バブル比率を最小化する。

パイプラインバブルの問題

ナイーブなパイプライン実行では、最初のステージがForwardを完了するまで後続ステージがアイドルとなり、Backward完了まで先頭ステージがアイドルとなる。P個のステージでマイクロバッチ数Mの場合、バブル比率は (P-1)/M で表される。

スケジューリングバブル比率メモリ使用量特徴
Naive(全Forward→全Backward)(P-1)/MM個分の活性値単純だが非効率
GPipe(P-1)/MM個分の活性値全マイクロバッチForward後Backward
1F1B(P-1)/MP個分の活性値ForwardとBackward交互実行
Interleaved 1F1B(P-1)/(M×V)P×V個分の活性値仮想ステージで細分化

1F1Bスケジューリングでは、ウォームアップフェーズで各ステージにマイクロバッチを流し、定常状態では1つのForwardと1つのBackwardを交互に実行する。活性値メモリがM個分からP個分に削減される利点がある。

Interleaved 1F1Bは各GPUに複数の仮想ステージ(V個)を割り当て、さらに細粒度のパイプラインを実現する。バブル比率が1/Vに改善されるが、通信回数が増加するトレードオフがある。

シーケンス並列(Sequence Parallelism)

Megatron-LM v3で導入されたシーケンス並列は、LayerNorm・Dropout等のシーケンス次元方向の演算を分割する。テンソル並列と直交する並列化であり、テンソル並列ではカバーできない部分のメモリを削減する。

テンソル並列環境では、AllReduce後のLayerNormやDropout入力がGPU数分複製されている。シーケンス並列はこの複製をシーケンス次元で分割し、AllReduceをReduceScatter + AllGatherに置き換える。通信量は同等だが、活性値メモリがGPU数に比例して削減される。

コンテキスト並列(Context Parallelism)

Megatron-LM 0.7以降で導入されたコンテキスト並列は、長シーケンス学習向けにAttention計算のシーケンス次元をGPU間で分割する。Ring Attentionのバリアントを実装し、各GPUがKVキャッシュのチャンクを隣接GPUにリング状に送りながらAttention計算を進める。

並列化分割次元対象演算メモリ削減対象
テンソル並列Head/Hidden次元QKV射影・FFN重みパラメータ
シーケンス並列シーケンス次元LayerNorm・Dropout活性値(非Attention部)
コンテキスト並列シーケンス次元Attention計算KVキャッシュ・Attention活性値

コンテキスト並列により、128Kトークン以上の超長シーケンスでもAttentionのメモリがGPU数に比例して削減される。

よくある質問(FAQ)

Q1: Megatron-LMを使うべき規模の目安は?

テンソル並列はノード内8GPU(NVLink接続)が前提のため、DGX/HGX構成のGPUクラスタで効果を発揮する。モデルサイズが7B以上でマルチノード学習する場合にMegatron-LMの採用を検討すべきである。7B未満ではFSDP/ZeROのみで十分なことが多い。

Q2: Megatron-LMとNeMoの関係は?

NeMoはMegatron-LMの技術をベースにNVIDIAが提供するエンタープライズ向けLLM開発プラットフォームである。Megatron-LMが分散学習エンジンを提供し、NeMoがデータ処理・モデル管理・評価・推論最適化を統合する。NeMo FrameworkからMegatron-LMの全機能にアクセスできる。

Q3: テンソル並列のGPU数はなぜ8に制限されるのですか?

テンソル並列は各Transformerブロックで4回のAllReduce通信が発生し、帯域要求が非常に高い。NVLink(900GB/s)では効率が維持できるが、InfiniBand(50GB/s)では18倍遅くなりボトルネックとなる。物理的にNVLinkで接続されるのが通常8GPU(DGX H100構成)のため、TPは8GPUに限定される。16GPU NVSwitchシステムではTP=16も可能である。