project
EPLB - DeepSeekのオープンソースのエキスパート並列ロードバランサー
EPLB(Expert Parallelism Load Balancer)は、DeepSeekが開発したエキスパート並列ロードバランサーで、大規模モデルトレーニング中に異なるエキスパートモデル間で発生する負荷の不均一性という問題を解決するために設計されています。EPLBは、...
EPLBとは何ですか?
EPLB(Expert Parallelism Load Balancer)は、DeepSeekが開発したエキスパート並列ロードバランサーで、大規模モデル学習時に異なるエキスパートモデル間で発生する負荷の不均一性を解決します。EPLBは冗長エキスパート戦略を採用し、負荷の高いエキスパートを複製して異なるGPUに合理的に分散させることで負荷分散を実現します。EPLBはグループ制限エキスパートルーティング技術を組み込んでおり、同じグループに属するエキスパートを同じノード内に配置することで、ノード間の通信オーバーヘッドを削減します。EPLBは、階層型ロードバランシングとグローバルロードバランシングという2つのロードバランシング戦略を提供し、それぞれ異なるシナリオに適しています。エキスパートモデルの複製と配置を最適化することで、EPLBはGPUリソースの利用率と学習効率を大幅に向上させることができます。
EPLBの主な機能
- ロードバランシング専門家による負荷推定値に基づいて、異なるGPU間の負荷差が最小限になるように、専門家のレプリケーションおよび割り当て戦略を動的に調整します。
- エキスパートコピー冗長エキスパート戦略に基づき、高負荷エキスパートを複製することで、負荷の不均衡の問題を軽減する。
- リソース最適化GPUリソースの利用率を最大化し、負荷の不均一性によって引き起こされるパフォーマンスのボトルネックを軽減し、モデルのトレーニング効率を向上させます。
- コミュニケーションの最適化適切なエキスパート配置戦略は、ノード間の通信オーバーヘッドを削減し、通信遅延を低減する。
- 柔軟な戦略支援さまざまなシナリオや段階に適した、階層型負荷分散とグローバル負荷分散という2つの戦略を提供します。
- 多層MoEモデルのサポート多層ハイブリッドエキスパートモデル(MoE)に適しており、複雑なモデル構造の処理、柔軟なエキスパートの割り当てとマッピングをサポートします。
EPLBの技術原理
- 冗長な専門家戦略エキスパート並列処理では、入力データやモデル構造によって、各エキスパートのワークロードが変動する場合があります。冗長エキスパート(負荷の高いエキスパートを複製する)を導入することで、負荷のバランスを取ることができます。冗長エキスパートは、負荷の高いエキスパートを複数回複製し、複数のGPUに分散させることで、単一のGPUへの過負荷を回避します。
- 階層型負荷分散各ノードの負荷がほぼ均等になるように、エキスパートグループを複数のノードに均等に分散させます。各ノード内では、エキスパートをさらに複製し、複製されたエキスパートをノードのGPUに分散させることで、ノード内の負荷分散を確保します。ノード間の通信オーバーヘッドを削減するため、同じグループのエキスパートは同じノードに配置するようにしてください。
- グローバルロードバランシングその他の場合(ノード数がエキスパートグループの数で割り切れない場合や、より大規模な並列処理が必要な場合など)は、グローバル戦略が採用されます。エキスパートグループの制限を無視し、エキスパートはグローバルに複製され、利用可能なすべてのGPUに分散されます。エキスパートレプリカの数とその配置を動的に調整することで、グローバルな負荷分散が確保されます。
- 負荷推定と動的調整EPLBは、エキスパートの負荷推定値に基づいて負荷分散戦略を策定します。負荷推定値は、過去の統計データ(移動平均など)に基づいています。これらの負荷推定値に基づき、エキスパートの複製および割り当て戦略は、さまざまなトレーニング段階やデータ分布に合わせて動的に調整されます。
- 専門家による地図作成と資源配分`rebalance_experts`関数に基づいて、エキスパートの複製および配置計画が出力され、エキスパートが特定のGPUにマッピングされます。出力されるマッピング関係には、物理から論理へのマッピング(phy2log)、論理から物理へのマッピング(log2phy)、および各エキスパートの複製数(logcnt)が含まれます。
EPLBプロジェクトの住所
- GitHubリポジトリ:https://github.com/deepseek-ai/eplb
EPLBのコアモード
- 階層型負荷分散ノード数が専門家グループの数で割り切れる場合、階層的な負荷分散戦略を用いて、ノード内およびノード間の負荷分散を最適化する。
- グローバルロードバランシングノード数がエキスパートグループの数で割り切れない場合、またはより大規模な並列処理が必要な場合は、グローバルなレプリケーションとエキスパートの割り当てに基づいて全体的な負荷分散が実現されます。
EPLBコードのデモンストレーション例
- このコードは、各層に12人の専門家を配置した2層構成のMoEモデルの例を示しています。各層に4人の冗長専門家が導入され、合計16個のレプリカが2つのノードに配置されます。各ノードには4つのGPUが搭載されています。
EPLBの応用シナリオ
- 大規模分散トレーニングマルチノード、マルチGPU環境に適しており、階層型またはグローバルな負荷分散モードを柔軟に切り替えることで、リソース利用率を最適化し、通信オーバーヘッドを削減します。
- 充填前段階モデル学習の初期段階では、階層型負荷分散によってノード間の通信が削減され、小規模並列処理の効率が向上します。
- デコード段階トレーニングの後期段階で大規模な並列処理が必要な場合、グローバル負荷分散を使用して負荷を動的に調整し、複雑なタスクに対応します。
- 異種ハードウェア環境ノード数とエキスパートグループの数が一致しない場合、グローバル負荷分散モードは異種構成に柔軟に対応し、効率的な負荷分散を実現できます。
- 動的な負荷変化トレーニング中の負荷の動的な変化に対応するため、階層型またはグローバルな負荷分散戦略を用いてリアルタイムで調整を行い、トレーニングプロセスの効率性と安定性を確保します。