MoonshotAI/MoonEP

MoonEP: A Perfectly Balanced Expert Parallelism Library via Dynamic Redundant Experts

解決する課題

MoonEPは、Expert Parallelism (EP) におけるMixture-of-Experts (MoE) モデルの負荷不均衡問題に対処します。従来のMoEでは、一部のエキスパートが他のエキスパートよりもはるかに多くのトークンを受け取るため、"ホットランク" が発生し、全体の学習または推論プロセスを遅くするだけでなく、GPUメモリのフラグメンテーションやメモリ不足(OOM)エラーを引き起こす可能性があります。

動作方法

MoonEPは、ルーティング分布にかかわらず、すべてのGPUランクが同じ数のトークンを受け取ることを保証します。これにより、以下の仕組みが実現されます:

  • 動的冗長エキスパート:オンラインで少数の冗長エキスパートを計画し、必要とするランクに事前にプリフェッチすることで、すべてのランク間で負荷が完全にバランスされるようにします。
  • オンライン計画:低遅延のGPUカーネルが、これらの冗長エキスパートの計画を最小限のオーバーヘッドで処理します。
  • ゼロコピー通信:トークンをリモートランクの最終位置に直接送信するために、融合された permute/unpermute 操作を使用し、通信バッファのビューを計算に直接提供することで、高コストなデータコピーを排除します。
  • 静的メモリ形状:トークン用のバッファサイズを固定することで、メモリフラグメンテーションを防ぎ、予測可能なメモリ使用量を確保します。

対象ユーザー

NVLinkを用いた複数GPUで安定した学習パフォーマンスを維持しながら、大規模なMoEモデルを構築する開発者や研究者向けです。

主な特徴

  • 不均衡に強い:ルーティングの不均衡が増加しても、イテレーション時間は一定に保たれます。
  • ゼロコピー効率:通信バッファとユーザーバッファ間のコピーを排除することで、通信速度が向上します。
  • 静的メモリ:高不均衡状態でもGPUメモリのフラグメンテーションやOOMを防止します。
  • 統合された重みプリフェッチ:冗長エキスパートのプリフェッチおよび勾配の削減を専用カーネルで実行します。

関連

  • プロジェクト
  • Dispatch
  • Dispatch
  • プロジェクト
  • Dispatch