AI・機械学習
上級

MoEエキスパート並列(エムオーイーエキスパートヘイレツ)

MoEエキスパート並列(Expert Parallelism / EP)は、Mixture-of-Expertsモデルの各エキスパートを異なるGPU/アクセラレータに分散配置し、トークンをAll-to-All通信で適切なGPUに転送して処理する並列化手法である。データ並列やテンソル並列と組み合わせた3D/4D並列化が大規模MoEモデルの学習・推論に不可欠な技術となっている。

0 回閲覧
0 いいね

MoEエキスパート並列とは、Mixture-of-Expertsモデルのエキスパートを複数のGPUに分散配置して並列処理する手法である。大規模MoEモデル(数百B〜数Tパラメータ)の学習と推論を実現するための必須技術となっている。

概要

デンスモデルの並列化ではデータ並列(DP)とテンソル並列(TP)が主流だが、MoEモデルではエキスパートという自然な分割単位が存在するため、エキスパート並列(EP)という独自の並列化次元が追加される。EPでは各GPUが全エキスパートの一部を担当し、ルーターが決定した割り当てに従ってトークンをGPU間で転送(All-to-All通信)して処理する。

DeepSeek-V3(671Bパラメータ、256エキスパート)の学習では、H100 GPU 2,048台をDP×TP×EP×PPの4D並列で使用し、各GPUが約8個のエキスパートを担当する構成が採られた。

エキスパート並列の仕組み

All-to-All通信パターン

EP の核心はAll-to-All通信である。各GPUが持つトークンバッチのうち、自GPU上にないエキスパートに割り当てられたトークンを他GPUに送信し、処理結果を受信する。

  1. Dispatch(送信): 各GPUのルーターがトークンの行き先エキスパート(=行き先GPU)を決定
  2. All-to-All: トークンを行き先GPUに転送(NVLink/InfiniBand経由)
  3. Compute(計算): 各GPUが自GPU上のエキスパートでトークンを処理
  4. Combine(集約): 処理結果を元のGPUにAll-to-All通信で返送
  5. Merge(合成): 元のGPUでゲート値による加重平均を実行

通信コスト

All-to-All通信のデータ量はバッチサイズ・シーケンス長・隠れ次元に比例する。DeepSeek-V3の場合、1回のAll-to-All通信で各GPU間約200MB-1GBのデータが転送される。InfiniBand NDR 400Gbpsで約2-5ms、NVLink(900GB/s)で0.2-1msの遅延が発生する。

並列化戦略の比較

並列化手法分割対象通信パターン適用場面
データ並列(DP)バッチAllReduce(勾配同期)汎用、小規模モデル
テンソル並列(TP)重み行列AllReduce(活性化同期)単一ノード内、大型層
パイプライン並列(PP)TransformerレイヤーP2P(ステージ間転送)多ノード、深いモデル
エキスパート並列(EP)MoEエキスパートAll-to-All(トークン転送)MoE専用、多エキスパート
Sequence並列(SP)シーケンスAllGather/ReduceScatter長コンテキスト

大規模MoEモデルの並列構成例

モデルGPU数DPTPEPPPGPU/エキスパート
Mixtral 8x7B推論211214 experts/GPU
DeepSeek-V2学習10246428120 experts/GPU
DeepSeek-V3学習204812828232 experts/GPU
Switch-C学習20482561204811 expert/GPU

推論環境でのエキスパート並列

学習だけでなく推論でもEPは重要である。

  • マルチGPU推論: Mixtral 8x7Bは2台のA100 80GBで各4エキスパートを保持し、EPで推論可能。vLLMはEPをネイティブサポートしており、--tensor-parallel-size 2 で自動的にEP+TPのハイブリッド並列が適用される
  • エキスパートオフロード: GPU VRAMが不足する場合、一部エキスパートをCPU RAMやNVMe SSDに配置するオフロード戦略がある。llama.cppの --n-gpu-layers オプションで層単位のオフロードが可能。アクセス頻度の低いエキスパートを優先的にオフロードするAdaptive Expert Cachingが研究されている
  • 推論フレームワーク対応状況: vLLM(EP+TP対応)、TensorRT-LLM(EP対応)、SGLang(EP対応、2025年7月)、llama.cpp(CPUオフロード対応、GPU EP未対応)

エキスパート並列の課題と最適化

  • All-to-All通信のボトルネック: 推論時間の15-30%を通信が占める。DeepSeek-V3はPrefill段階でエキスパートを冗長計算させ、All-to-Allの一部を削減する手法を採用
  • 負荷不均衡: 特定エキスパートにトークンが集中するとそのGPUがボトルネック化する。Capacity Factor(各エキスパートの処理上限)の設定と、ルーターのLoad Balancing Lossで緩和
  • メモリ効率: EP数を増やすとGPUあたりのエキスパート数が減りメモリ効率が向上するが、通信量も増加する。最適なEP数はモデル構成・GPU構成・通信帯域のバランスで決定
  • Prefillとデコードの特性差: Prefill段階は大バッチで通信効率が高いが、デコード段階はバッチサイズ1でトークンごとの通信が発生し効率が低下。Disaggregated Servingで別々のクラスタに分離する手法が研究されている

よくある質問(FAQ)

Q1: 自作PC(マルチGPU構成)でエキスパート並列は使えるのか? A: RTX 4090×2やRTX 3090×2の構成でvLLMを使えばMixtral 8x7Bのエキスパート並列推論が可能。ただしPCIe 4.0のGPU間帯域(32GB/s)はNVLink(900GB/s)と比較して30倍以上遅いため、All-to-All通信がボトルネックになる。実用的にはCPUオフロードの方が自作PC環境では効率的な場合が多い。

Q2: エキスパート並列とテンソル並列はどう使い分けるのか? A: テンソル並列はノード内のGPU間(NVLink接続)で使用し、エキスパート並列はノード間(InfiniBand接続)で使用するのが一般的。DeepSeek-V3ではTP=2(ノード内2GPU)、EP=8(8ノード)の構成で、高帯域が必要なTPを近距離、低頻度のEPを遠距離に配置している。

Q3: エキスパート並列の通信コストを削減する最新技術は? A: 主要な手法として (1) DeepSeek-V3のPrefill冗長計算によるAll-to-All削減、(2) Expert Grouping(関連エキスパートを同じGPUに配置)、(3) 圧縮通信(FP8/INT8での転送)、(4) 非同期All-to-All(計算と通信のオーバーラップ)がある。FP8通信でデータ量を半減させる手法は2025年時点で多くのフレームワークが対応済み。

まとめ

  • エキスパート並列はMoEモデル特有の並列化手法で、エキスパートをGPUに分散配置しAll-to-All通信で処理
  • DP・TP・PPとの組み合わせで4D並列化、DeepSeek-V3は2048台のH100で運用
  • 自作PCではvLLMのEP対応やllama.cppのCPUオフロードが実用的
  • 通信コスト削減が最重要課題、FP8通信・冗長計算・非同期転送で最適化