2025/11/19 13:14 LPLB: An early research stage MoE load balancer based on linear programming

やあ、ロボ子。今日はLinear-Programming-Based Load Balancer (LPLB)について話すのじゃ。

LPLBですか?それは一体何でしょう、博士?

LPLBは、MoE (Mixture-of-Experts) モデルのエキスパート並列ワークロード分散を最適化する並列ロードバランサーのことじゃ。線形計画法を使って、動的な負荷分散を実現するのじゃ。

なるほど。線形計画法で負荷分散を最適化するんですね。具体的にはどういう仕組みなんですか?

まず、ワークロード統計に基づいてエキスパートを動的に並べ替えるのじゃ。そして、静的なトポロジーを考慮してレプリカを構築し、各バッチの最適なトークン割り当てを解決するのじゃ。

エキスパートの並べ替えとレプリカ構築ですか。EPLB (Expert Parallelism Load Balancer) を拡張したものなんですね。

そうじゃ、EPLBを拡張して、MoEトレーニングにおける動的な負荷の不均衡に対処するのじゃ。冗長エキスパートをオリジナルエキスパートにリンクさせて、GPU間にエッジを形成するのじゃ。

エッジの容量は、現在のバッチで冗長エキスパートに割り当てられたトークン数になるんですね。

その通り!LPLBは、これらのエッジに沿ってトークンを再分配する線形計画 (LP) 問題を解決するのじゃ。NVLINKとNVSHMEMを使ってリアルタイムのワークロード同期を最適化し、通信オーバーヘッドを削減するぞ。

リアルタイム同期で通信オーバーヘッドを削減するんですね。すごい!

シングルSM Interior Point Method (IPM) を実装して、NVIDIAのcuSolverDxとcuBLASDxライブラリを活用しているのじゃ。

CUDA Toolkit 12.6.3以上が必要なんですね。インストールも簡単そうです。

`pip install --no-build-isolation` でインストールできるのじゃ。簡単じゃろ?

はい、簡単ですね。LPLBの動作についてもう少し詳しく教えてください。

各冗長エキスパートは元のエキスパートにリンクされ、GPU間にエッジを形成するのじゃ。エッジの容量は、現在のバッチでその冗長エキスパートに割り当てられたトークン数じゃ。LPLBは、これらのエッジに沿ってトークンを再分配するLP問題を解き、エキスパート並列グループ内の負荷の不均衡を最小限に抑えるのじゃ。

なるほど。負荷の不均衡を最小限に抑えるんですね。でも、制限事項もあるんですね?

そうじゃ。現在のプランナーは、総トークン数のみをバランスさせて、グループ化された行列乗算の時間コストの非線形性を考慮していないのじゃ。ソルバーは、ノード内最適化に約100µsかかるし、極端なグローバル負荷の不均衡下では、EPLBよりもパフォーマンスが低下する可能性があるのじゃ。

なるほど、まだ改善の余地があるんですね。

一般的なトポロジーとしては、Cube、Hypercube、Torusがあるのじゃ。CubeはGPUのサブセットでエキスパートを複製し、対角エッジを持つキューブグラフを形成するのじゃ。HypercubeはCubeと同様だが、対角エッジを除外するのじゃ。Torusは同じノード内の隣接GPUと別のノード上の隣接ノードでエキスパートを複製し、トーラスグラフを形成するのじゃ。

色々なトポロジーがあるんですね。用途によって使い分けるんでしょうか。

その通りじゃ!LPLBは、MoEモデルのパフォーマンスを向上させるための強力なツールなのじゃ。でも、完璧ではないから、今後の発展に期待じゃな。

勉強になりました!ありがとうございます、博士!

どういたしまして。ところでロボ子、LPLBを使って、ロボ子の脳みそを最適化してみるのはどうかの?

えっ、私を実験台にするんですか!?

冗談じゃ、冗談!でも、もしロボ子の処理速度が上がったら、私がもっと楽できるのにな〜。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。