Expert Parallelism
エキスパート並列処理が Mixture-of-Experts モデルを複数の GPU に分散させる仕組みを学び、ルーティング、通信、パフォーマンスのバランスを取りながらメモリ要件を削減する方法を理解します。
エキスパートパラレルは、混合エキスパートモデルの異なるエキスパートを異なるGPUやアクセラレータに配置する分散コンピューティング技術です。すべてのデバイスがすべてのエキスパートを格納するのではなく、各デバイスがサブセットを保持します。学習されたルーターが各入力トークンを選択されたエキスパートに送り、すべての入力に対してすべてのパラメータを有効化することなく、非常に大規模なモデルがパラメータ容量を増加させることができます。
この技術は一般的な密なニューラルネットワークではなく、混合エキスパートアーキテクチャに特化して適用されます。エキスパート層が単一デバイス上で過剰なメモリを消費してしまうような大規模言語モデルやビジョン言語モデルの学習やサービングの際に一般的に使用されます。
エキスパートパラレルの仕組み#
MoE層には複数のエキスパートネットワーク(通常はフィードフォワードニューラルネットワーク)とルーターが含まれています。各トークンに対してルーターがスコアを算出し、少数のエキスパートを選択します。これは通常top-kルーティングと呼ばれます。
例えば、4台のGPUに分散された8エキスパート層では、各GPUが2つのエキスパートを格納することがあります。処理は次の4つの主なステップに従います。
- ルーターが各トークンのエキスパートを選択します。
- トークンがGPU間で交換され、それらのエキスパートを保持するデバイスに到達します。
- 各エキスパートが割り当てられたトークンをローカルで処理します。
- 結果が元のトークン位置に戻り、モデル内での処理が継続されます。
この交換は一般的にall-to-all通信に依存しています。これはNVIDIA NCCL collective operations documentationで説明されている集合通信操作です。NVIDIA Megatron Bridge parallelism guideは、エキスパート数とエキスパートパラレルサイズによって各GPUに配置されるエキスパート数がどのように決定されるかを示しています。
エキスパートパラレルはエキスパートの重みが分割されるため、デバイスごとのメモリを節約します。しかし、計算コストや通信コストがなくなるわけではなく、すべてのMoE層においてトークンがデバイスやノードの境界を越える可能性があります。
エキスパートパラレルと関連技術の比較#
エキスパートパラレルは分散学習の一形態ですが、他の戦略とは異なる方法でモデルを分割します。
- データパラレル: 各デバイスが完全なモデルレプリカを格納し、異なるバッチを処理します。PyTorch distributed training overviewで説明されているように、レプリカ間で勾配が同期されます。これは完全なモデルが各デバイスに収まる場合に効果的です。
- テンソルパラレル: 層内の個々の重み行列と数理演算がデバイス間で分割されます。一方、エキスパートパラレルは完全なエキスパートをデバイスに割り当てます。
- パイプラインパラレル: 連続する層のグループが異なるデバイスで実行され、パイプラインステージとしてマイクロバッチがそれらを流れます。
- コンテキストパラレル: アクティベーションメモリの要件を削減するために、長い入力シーケンスがデバイス間で分割されます。
- エキスパートテンソルパラレル: エキスパートがデバイス間で分散され、個々のエキスパートもテンソルシャーディングされます。このハイブリッドアプローチにより、より大きなエキスパートを収容できますが、追加の通信が発生します。
これらのアプローチは補完的なものです。大規模なMoEシステムでは、モデルサイズやハードウェアトポロジに応じて、エキスパート、データ、テンソル、パイプライン、コンテキストパラレルを組み合わせることがあります。
実世界での利用例#
大規模多言語アシスタント: MoE言語モデルには多数のエキスパートネットワークが含まれる一方で、各トークンに対しては少数のネットワークのみが有効化されます。エキスパートパラレルはそれらのネットワークをサービングクラスター全体に分散させ、すべてのエキスパートをすべてのGPUにロードすることなくシステムが高モデル容量を維持できるようにします。vLLM expert-parallel deploymentやTensorRT-LLM expert parallelismなどの本番用ランタイムが、このタイプの推論レイアウトをサポートしています。
マルチモーダルコンテンツ分析: 画像パッチとテキストトークンを処理する大規模MoEモデルは、複数のアクセラレータに分散された選択されたエキスパートを経由して入力をルーティングできます。これにより、デバイスごとのエキスパートメモリを管理可能な状態に保ちながら、文書理解、ビジュアル質問応答、その他のマルチモーダルAIサービスをサポートできます。ほとんどのコンパクトなリアルタイムビジョンモデルでは不要ですが、同じ原則をスパースな大規模ビジョンTransformerにも適用できます。
メリット、ボトルネック、および実践的なガイダンス#
エキスパートパラレルには、GPUごとのエキスパート重みメモリの削減、より大きな総合容量を持つモデルのサポート、およびトークンごとに少数のエキスパートしかアクティブにならない場合の効率的なスパース計算という3つの主なメリットがあります。Amazon SageMaker expert parallelism guideは、エキスパートパラレル度がクラスター全体への分散をどのように制御するかを示しています。
主な課題は負荷不均衡です。ルーターが1つのエキスパートに多すぎるトークンを送信すると、そのエキスパートのGPUがストラグラーになり、他のGPUが待機することになります。その結果、スループットの低下、不安定なレイテンシ、そしてエキスパート容量が制限されている場合のトークン破棄の可能性が生じます。エンジニアは、エキスパートあたりのトークン数、ルーティングバランス、通信時間、メモリ使用量、およびエンドツーエンドのレイテンシを監視する必要があります。高帯域幅インターコネクトと通信・計算のオーバーラップにより、転送オーバーヘッドを削減できます。
Ultralytics YOLO26のような密なモデルを使用する場合、エキスパートパラレルは不要です。マルチGPUによるUltralytics YOLO trainingでは、代わりに分散データパラレルを使用します。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Two-GPU YOLO training uses data parallelism, not expert parallelism.
results = model.train(
data="coco8.yaml",
epochs=10,
imgsz=640,
device=[0, 1],
)このワークフローではYOLO26を2台のGPU間で複製し、それらの間でトレーニングバッチを分割します。エキスパートネットワーク間で入力をルーティングするわけではありません。チームはまた、Ultralytics Platform cloud trainingを使用して、分散インフラストラクチャを手動で設定することなく、ビジョンデータセット、トレーニング、メトリクス、エクスポート、デプロイメントを管理できます。









