AI・機械学習
上級

LLM分散学習(エルエルエムブンサンガクシュウ)

大規模言語モデル(LLM)の学習を複数のGPU・ノードに分散して並列実行する技術群の総称。データ並列・テンソル並列・パイプライン並列・3D並列などの手法を組み合わせ、数百〜数千GPU規模の学習を効率的に行う。

0 回閲覧
0 いいね

LLM分散学習とは

LLM分散学習とは、大規模言語モデル(LLM)の学習処理を複数のGPU・複数のノードに分散して並列実行する技術の総称である。GPT-4やClaude、Llama 3.1 405Bなど数千億パラメータ規模のモデルは、単一GPUのメモリ(NVIDIA H100で80GB HBM3)では到底収まらず、数百〜数千台のGPUを協調動作させる分散学習が必須となる。

分散学習が必要な理由

現代のLLMは学習に膨大な計算資源を必要とする。以下に代表的なモデルの学習規模を示す。

モデルパラメータ数学習GPU学習期間推定コスト
GPT-4推定1.8T(MoE)約25,000× A100 80GB約90日約$100M
Llama 3.1 405B405B16,384× H100 80GB約54日約$30M
Claude 3.5 Sonnet非公開非公開非公開非公開
Gemini Ultra推定1.6TTPU v5p数千基非公開非公開
DeepSeek-V3671B(MoE)2,048× H800約60日約$5.6M

単一のNVIDIA H100(80GB HBM3、約989 TFLOPS FP16)では405Bパラメータモデルのパラメータすら格納できない。FP16で約810GBのメモリが必要であり、最低でも11台のH100が必要となる。オプティマイザ状態(Adam: パラメータの3倍)を含めると、さらに多くのGPUが求められる。

分散学習の主要手法

分散学習には大きく分けて以下の手法がある。

  • データ並列(Data Parallelism): モデル全体を各GPUに複製し、学習データを分割して並列処理する。各GPUで計算した勾配をAllReduceで集約・同期する
  • テンソル並列(Tensor Parallelism): 単一の行列演算(Attention層やFFN層)を複数GPUに分割する。ノード内の高速NVLink接続(900GB/s)を活用する
  • パイプライン並列(Pipeline Parallelism): モデルのレイヤーを複数GPUにステージ分割し、マイクロバッチをパイプライン的に流す。GPipe・PipeDreamが代表的
  • 3D並列(3D Parallelism): データ並列×テンソル並列×パイプライン並列を組み合わせた最も汎用的な手法。Megatron-LM、DeepSpeed ZeROが採用
  • Expert並列(Expert Parallelism): MoEモデル特有の手法で、各Expert(専門家ネットワーク)を異なるGPUに配置する。DeepSeek-V3が代表例
  • シーケンス並列(Sequence Parallelism): 長いシーケンスを複数GPUに分割して処理する。Ring Attentionが代表的手法

主要フレームワーク比較

フレームワーク開発元対応並列手法特徴ライセンス
Megatron-LMNVIDIATP/PP/DP/SP/EP最高性能、NVIDIAハードウェア最適化BSD-3
DeepSpeedMicrosoftZeRO-1/2/3、PP、TPZeROオプティマイザ、メモリ効率Apache-2.0
FSDP (PyTorch)Metaデータ並列+シャーディングPyTorch統合、標準的BSD-3
Colossal-AIHPC-AI TechTP/PP/DP/シーケンス使いやすいAPI、自動並列化Apache-2.0
vLLM(学習非対応)UCバークレー-推論特化、参考比較用Apache-2.0

通信バックエンドとネットワーク

分散学習ではGPU間の通信がボトルネックとなる。

  • NCCL(NVIDIA Collective Communications Library): NVIDIA GPU間の集合通信ライブラリ。AllReduce・AllGather・ReduceScatterなどの集合演算を最適化
  • NVLink: ノード内GPU間接続で最大900GB/s(H100 NVSwitch)。テンソル並列はNVLink速度に依存する
  • InfiniBand NDR: ノード間接続で400Gbps(50GB/s)。データ並列の勾配同期に使用
  • RoCE v2(RDMA over Converged Ethernet): InfiniBandの代替としてイーサネット上でRDMAを実現。DeepSeek-V3は24,576ポートのRoCEファブリックを使用
  • GPUDirect RDMA: GPU↔NIC間でCPUバイパスの直接データ転送を実現

学習効率の指標

分散学習の効率は以下の指標で評価される。

  • MFU(Model FLOPs Utilization): 理論ピーク性能に対する実効性能の割合。Llama 3.1は約38-43%のMFUを達成
  • 通信オーバーヘッド: AllReduceなどの集合通信にかかる時間。計算と通信のオーバーラップで隠蔽する
  • バブル率: パイプライン並列でGPUがアイドルになる「バブル」の割合。1F1Bスケジュールで最小化
  • スケーリング効率: GPU数増加に対する性能向上の線形性。理想は1.0(線形スケール)
  • メモリ効率: 各GPUのメモリ使用量。アクティベーション再計算やオフローディングで削減

2025-2026年の最新動向

  • NVIDIA GB200 NVL72: 72基のBlackwell GPUをNVLink 5(1.8TB/s)で接続した単一ラック。従来の8GPU DGXノードから大幅にスケールアップ
  • FP8学習の普及: H100以降のFP8(8ビット浮動小数点)学習が標準化。DeepSeek-V3はFP8学習で学習コストを大幅削減
  • 非同期分散学習: DiLoCo(Distributed Low-Communication LLM Training)などの非同期手法が研究段階から実用段階へ
  • 光インターコネクト: GPU間の通信帯域ボトルネックを解消するため、光接続技術(シリコンフォトニクス)が次世代データセンターに導入予定

よくある質問(FAQ)

Q1: 分散学習にはどのくらいのGPUが必要ですか? A: モデルサイズによる。7Bパラメータなら1-2台のH100で学習可能だが、70B以上は最低8台、405B以上は数千台が必要。FP16で1Bパラメータ≒2GBメモリが目安。

Q2: データ並列とモデル並列の違いは何ですか? A: データ並列はモデルを各GPUに複製してデータを分割する手法。モデル並列(テンソル並列・パイプライン並列)はモデル自体を分割して各GPUに配置する手法。大規模モデルでは両方を組み合わせる。

Q3: 自作PCで分散学習は可能ですか? A: 小規模なら可能。2-4台のRTX 4090(24GB VRAM)をNVLinkなしで接続し、DeepSpeed ZeRO-3で7-13Bモデルの学習ができる。ただしノード間帯域がボトルネックとなるため、1000万パラメータ以上の本格学習にはDGXクラスタが推奨。

Q4: 分散学習のフレームワーク選びのポイントは? A: 研究用途ならPyTorch FSDPが標準的で導入しやすい。最高性能を求めるならMegatron-LMだがカスタマイズが複雑。メモリ効率重視ならDeepSpeed ZeROが好適。

まとめ

  • LLM分散学習は数百〜数千GPUを協調動作させる技術群
  • データ並列・テンソル並列・パイプライン並列の組み合わせ(3D並列)が主流
  • NCCL+NVLink+InfiniBandの通信スタックが性能の鍵
  • MFU 40%前後が現実的な効率目標
  • GB200 NVL72やFP8学習など、2025-2026年は大きな転換期