## Memo ## Memo with LLM ### 論文情報 - **タイトル**: xDeepServe: Model-as-a-Service on Huawei CloudMatrix384 - **著者と所属**: Ao Xiao他127名(Huawei Cloud所属) - **発表先**: arXiv preprint (arXiv:2508.02520) - **発表年**: 2025年8月 ### 論文概要 本論文は、HuaweiのCloudMatrix384 SuperPod上で大規模MoE(Mixture-of-Experts)モデルを効率的に提供するためのLLMサービングシステムxDeepServeを提案している。Transformerlessと呼ばれる分散アーキテクチャを中核とし、Attention、Feedforward、MoEコンポーネントを独立したNPU上で実行することで、計算とメモリの独立したスケーリングを実現している。CloudMatrix384のグローバル共有メモリを活用した通信ライブラリXCCLにより、数百台のNPU間で効率的な推論を可能にしている。 ### 詳細解説 #### 問題設定 **入力**: 大規模[[MoE]]モデル([[DeepSeek-V3]]/R1、Kimi K2、Qwen等)の推論リクエスト。入力シーケンス長は最大96Kトークン、出力は最大32Kトークン。 **出力**: 低レイテンシ(TTFT < 2秒、TPOT < 35ms)かつ高スループットでの推論結果。 **必要なデータ**: - CloudMatrix384ハードウェア: 384個のAscend 910C NPU(768ダイ)、192個のKunpeng CPU、数百GB/sの高速UB(Unified Bus)ネットワーク - モデルパラメータ: DeepSeek-V3は671B(6710億)パラメータ、256個のルーテッドエキスパート + 32個の共有エキスパート - KVキャッシュ: MLA(Multi-head Latent Attention)による圧縮されたKey-Valueキャッシュ **主要課題**: 1. MoEモデルにおける数百NPU間のエキスパートルーティング、同期、負荷分散 2. 計算バウンドなprefillとメモリバウンドなdecodeフェーズの干渉 3. SuperPodスケールでのグローバル同期によるボトルネック 4. 単一障害点の排除と信頼性の確保 #### 提案手法 ##### 1. Transformerless: 完全分散アーキテクチャ **分散Prefill-Decode (§5.1)** - Prefillインスタンス: TP=4、動的シーケンス長対応、Eager Graph実行 - Decodeインスタンス: TP=1、静的Graph実行、CloudMatrix384専用配置 - 異種配置: PrefillはAscend 910(第2世代)とCloudMatrix384の両方で実行、DecodeはCloudMatrix384のみで実行 - KVキャッシュ転送: DistFlowを用いたpoint-to-point通信(§3.1のsend/recv API) 具体例: 2K入力 + 2K出力のワークロードで、PrefillからDecodeへのKVキャッシュ転送をRoCE/VPC経由で実施。MLA圧縮により転送量を削減。 **分散MoE-Attention (§5.2)** - 768 NPUダイを使用: 288ダイがEP288(Expert Parallelism)、480ダイがMLA実行 - 非対称リソース割り当てに対応する新しい通信プリミティブA2E/E2A(§3.3) - Trampoline Forward機構: 288個のエキスパートNPUのうち160個をトランポリンとして使用し、2段階ルーティングでメタデータオーバーヘッドを削減 数式例(Expert Placement Load Balancing): 最もホットなエキスパートの選択: $e^*_l = \arg\max_{e \in E_l} \sum_{t=1}^T n_t(e, l)$ 冗長性予算$B$の下での負荷最小化: $\min \sum_{l=1}^L \max_{e \in E_l} \left( \frac{n(e, l)}{r(e, l)} \right)$ ここで、$n(e,l)$はレイヤー$l$のエキスパート$e$に割り当てられたトークン数、$r(e,l)$はレプリカ数。 **DPドメイン抽象化** - 複数のDPグループを1つのDPドメインにカプセル化 - 1つのドメインのみがMoE NPUと通信、マイクロバッチングと組み合わせて効率化 - 具体的構成: 3つのDPドメイン × 160 DPグループ(TP=1)、各グループがバッチサイズ96 ##### 2. XCCL通信ライブラリ(§3) **Point-to-Point通信 (§3.1)** CloudMatrix384のグローバル共有メモリ上に構築された8ステップの分散メモリプロトコル: 1. 送信側でXCCL sendを呼び出し、mtu-inでデータバッファにコピー 2. mtu-outで受信側のマネージドデータ領域に転送 3. tailPtrを更新して転送量を通知 4. ACKをビジーポーリング 5-7. 受信側でポーリング、mtu-in/outでコピー 8. ACK送信で完了 パフォーマンス: 1MB以下のペイロードで20μs以下、9MBで48コア使用時に2.5倍高速化 **All-to-All通信 (§3.2, §3.3)** - Dispatch/Combine(EP用): EP128構成でバッチサイズ96/ダイ時、Dispatch 234μs(平均)、Combine 312μs(平均) - A2E/E2A(分散MoE-Attention用): グローバルバッチサイズ15,360(160×96)時、A2E 172μs、E2A 193μs - NPU-Direct URMA: 計算コアからDMAエンジンへ直接リモートメモリアクセス、レイテンシは増加するが高スループット・コア消費削減を実現 ##### 3. FlowServeサービングエンジン(§4) **スケーラブルなDPグループ** - 各DPグループが完全な実行パイプラインを保持: トークナイゼーション、SPMD実行、RTCキャッシュ、DistFlowネットワーキング - TE-shellは最小限の調整のみ: リクエスト分散、エキスパート負荷分散トリガー、ヘルスチェック **DP負荷分散 (§4.3)** - Prefill: シングルレベル協調スケジューラ、リーダースケジューラ(DP-0)がコストモデル(プレフィックスキャッシュヒット率等)でバッチ割り当て - Decode: バッチサイズ制限とKVキャッシュ使用量を考慮、最も低いKVキャッシュ使用率のDPグループを選択 **プロアクティブGC (§4.4)** - CPUコアピンニング、PTAグラフキャッシング、手動Python GC実行 - 最初のDispatch演算子での100ms超のジッター削減 **エキスパート負荷分散 (§4.5)** - データ駆動アプローチ: 定期的にトークンルーティングパターンを分析 - EPLB(Expert Placement Load Balancing)アルゴリズムで冗長エキスパート選択 - 非同期でエキスパート重みをスワップ、フォワードレイテンシを40%以上改善 **Multi-Token Prediction (§4.6)** - DeepSeekのMTPを統合、5ステップループで投機的デコーディング - 1つのMTPレイヤーで70-90%の受理率、TPOTを40%削減 - 2つ目のMTPレイヤーを追加学習: 280K社内サンプルで学習、2.26→2.35トークン/ステップ(9%改善) **INT8量子化 (§4.7)** - SmoothQuant + GPTQを組み合わせたPTQ - MLA、MoE、MLPモジュールをINT8に量子化 - トークンワイズ量子化(アクティベーション)、チャネルワイズ量子化(重み) - npu_quant_matmul (QMM)演算子で高速化 - KVキャッシュの非RoPE成分もINT8に量子化 ##### 4. 信頼性機構(§6) **障害検知 (§6.1)** - 多層ハートビート: 制御プレーン → TE shell → DPマスタープロセス - リンクプローブ機構: KV転送パイプラインの無音ストールを検出 **障害回復 (§6.2)** - Stage 1: Restart-the-World(小規模クラスタ、全体再起動) - Stage 2: Prefill/Decode独立フェイルオーバー(垂直スケーリング対応、各エキスパートに少なくとも1レプリカ保持) - Stage 3: 細粒度エラーハンドリング - トークン再計算: ネットワーク不安定時にロールバックして再実行 - オンチップメモリフォールト: CANNランタイムで仮想メモリ再マッピング、障害領域をマスク #### 新規性 ##### 1. SuperPodスケールでの初の完全分散MoE-Attentionシステム 先行研究(FastDecode、Lamina、InstAttention、MegaScale-Infer)は小規模モデルのみを対象としていたが、本研究は768 NPUダイでDeepSeek-R1/V3を実行し、production環境で1年以上運用している。これはSuperPodスケールでの分散MoE-Attentionの初の実装例である。 ##### 2. CloudMatrix384専用の通信ライブラリXCCL グローバル共有メモリをベースとしたメモリセマンティクス通信を実装。300K以上のNPUペア間でマイクロ秒レベルのレイテンシを実現。従来のRDMA verbs(FaRM、Clover)に類似したプロトコル設計をNPU環境に適用した点が新しい。 ##### 3. Trampoline Forward機構 非対称NPU割り当て(288エキスパートNPU vs 160 attention NPU)の問題を解決。従来のpull-basedメカニズムは高いfan-outとスカラスループット制限により非効率だったが、2段階ルーティング(トランポリンNPU経由)でメタデータオーバーヘッドを削減。 ##### 4. DPドメイン抽象化 マイクロバッチングのみに依存せずinter-DP並列性を実現。複数DPグループをドメイン化し、MoE NPUとの通信を時分割多重化することで、バッチサイズを縮小せずに効率を向上させた。 ##### 5. Persistent Kernelスケジューリング MoE NPU向けゼロオーバーヘッドスケジューリング。3つの並行ストリーム(A2E受信、MoE計算、E2A送信)がビジーポーリングループで実行され、マイクロ秒レベルのMoEカーネル実行時にCPU介入(ミリ秒)を回避。 ##### 6. 異種Prefill-Decode配置 PrefillはAscend 910とCloudMatrix384の両方で実行し、DecodeはCloudMatrix384専用とする異種配置により、コストと性能のバランスを実現。高帯域幅インターコネクトを要するDecodeを最適化した。 #### 実験設定 **データセット**: - ShareGPTから構築した2K+2Kワークロード(2Kプロンプト + 2K出力、固定長) - Production環境: 入力長0-64Kトークン(平均13K)、出力長平均2.1K **評価指標**: - **TTFT (Time To First Token)**: 最初のトークン生成までの時間、SLA < 2秒 - **TPOT (Time Per Output Token)**: 出力トークンあたりの時間、SLA < 35ms(通常)、< 50ms(実験) - **スループット**: トークン/秒/チップ、システム全体のトークン/秒 - **レイテンシ内訳**: Attention、Dispatch、Combine、MLA、Gating、A2E、E2A等のカーネルレベルレイテンシ **ハードウェア構成**: - 実験1(Colocated Prefill-Decode): 18 Ascendサーバー、288 NPUダイ、DP288+EP288、ローカルバッチサイズ60、グローバルバッチサイズ17,280 - 実験2(分散MoE-Attention): 1つのCloudMatrix384(768 NPUダイ)、480ダイMLA + 288ダイEP288、ローカルバッチサイズ96、グローバルバッチサイズ15,360 - Production: 16 Ascendサーバー、4 Prefill TE(各DP8+EP32)+ 1 Decode TE(DP128+EP128) **モデル構成**: - DeepSeek-V3/R1: 671Bパラメータ、256ルーテッド + 32共有エキスパート - Kimi K2、Qwen: 同様のMoEアーキテクチャ - MTP: 1-2レイヤー、グリーディサンプリング - 量子化: INT8 PTQ(SmoothQuant + GPTQ) #### 実験結果 **Decode性能(§7.1)**: *Colocated Prefill-Decode構成:* - TPOT: 50ms(MTP受理率90%時) - デコードイテレーション時間: 93ms(MTP forward、サンプリング、メインモデル実行、最終サンプリング含む) - スケジューリングギャップ: 2ms - Per-chipスループット: 2,057トークン/秒(計算式: 2ダイ/チップ × バッチ60 ÷ 50ms × 1000ms) - 全体スループット: 345,000トークン/秒(DP288全体) - カーネルレイテンシ内訳(約3Kシーケンス長): - Attention: 21.8%(シーケンス長とバッチサイズに依存、長いシーケンスでさらに増加) - Dispatch + Combine: 約36%(グローバル同期カーネル) - Dispatch平均: 234μs(最小185μs、最大1,231μs、最大値は最小値の約6.6倍) - Combine平均: 312μs(最小165μs、最大2,939μs、最大値は最小値の約17.8倍) *分散MoE-Attention構成:* - TPOT: 50ms(MTP受理率90%時) - Per-chipスループット: 2,400トークン/秒 - レイヤーごとのレイテンシ(各約0.7ms): MLAProlog、MLA、Gating、A2E第1段階 - MoE通信レイテンシ: A2E 0.17ms、MoE計算 0.12ms、E2A 0.19ms - 総フォワード時間: 93ms(内訳: スケジューラオーバーヘッド2ms、MTPレイヤー5ms、レイヤーワイズ計算等) **Production環境性能(§7.2)**: - TTFT: 900ms(目標2秒以下を達成) - 平均TPOT: 34.8ms(目標35ms以下を達成) - 入力長分布: 0-64K(平均13K)、出力長平均2.1K - 長シーケンス対応: 最大96K入力、処理時間最大30分、専用リソース割り当てで短シーケンスとの干渉回避 **通信性能詳細**: *Point-to-Point通信(§3.1):* - 1MB以下のペイロード: 2コアで20μs以下 - 9MBペイロード: 2コアで約90μs、48コアで約35μs(2.5倍以上の高速化) - ランダムに選択した異なるサーバー上の2つのNPUダイ間で測定 *Dispatch/Combine(§3.2):* - EP128構成、バッチサイズ96/ダイ、DeepSeek-R1使用 - Dispatch: 平均234μs、量子化有効時は小バッチで若干高レイテンシ、バッチサイズ32超でCombineより高速(データサイズ半減効果) - Combine: 平均312μs - グローバルバッチサイズ: 96 × 128 = 12,288 *A2E/E2A(§3.3):* - 構成: 3 DPドメイン × 160 DPグループ(TP=1)、288エキスパートNPU - バッチサイズ: 96/ダイ、グローバル15,360(160 × 96) - A2E: 172μs、E2A: 193μs - SuperPodスケール(高並行性)でもマイクロ秒レベルのレイテンシを維持 **最適化効果**: *エキスパート負荷分散(§4.5):* - 負荷分散前: ホットエキスパートが全体の律速要因 - 負荷分散後: フォワードレイテンシ40%以上改善 - 動的エキスパート重みスワップにより推論を中断せずに最適化 *Multi-Token Prediction(§4.6):* - 1 MTPレイヤー: 70-90%受理率、固定バッチサイズでTPOTを40%削減 - 2 MTPレイヤー(公開重み再利用): 2.26トークン/ステップ - 2 MTPレイヤー(2層目を追加学習): 2.35トークン/ステップ(9%改善) - 学習データ: 280K社内プロンプトサンプル、メインモデルと第1MTPレイヤーを凍結 *INT8量子化(§4.7):* - SmoothQuant + GPTQによりFP8からINT8へ変換 - 対象モジュール: MLA(Wq_a、Wkv_a、Wq_b、Wo)、MoE(ルーテッド・共有エキスパート)、MLP(up_proj、gate_proj、down_proj) - エキスパートごとに最低40-128サンプルで量子化 - Smoothing操作でアクティベーション/重みの動的範囲を調整(アクティベーションは重みの10-100倍の範囲) - KVキャッシュの非RoPE成分もINT8に量子化 *プロアクティブGC(§4.4):* - CPUコアピンニング、PTAグラフキャッシング、手動Python GC - 最初のDispatch演算子(第4レイヤー)でのジッターを100ms超から削減 - SuperPodスケール(数百NPU/CPUコア)での同期感度を軽減 **信頼性実績(§6)**: - Production環境で1年以上の安定稼働 - 多層ハートビート + リンクプローブで障害検知 - 細粒度エラーハンドリング(トークン再計算、メモリフォールトマスキング)により可用性維持 - Stage 3(細粒度回復)により個別リクエスト失敗時もシステム継続稼働 **スケーラビリティ検証**: - 数百NPUダイにスケール、単一障害点なし - DPグループ完全分散、TE-shellは最小限の調整のみ(リクエスト分散、EP-LBトリガー、ヘルスチェック) - グローバル同期最小化: Dispatch/Combine最適化(EP-LB、量子化)、DP負荷分散、プロアクティブGC ## Abstract スケールアウトされたLLMとスケールアップされたSuperPodsの台頭は、大規模AIインフラストラクチャにおける新たな時代の到来を示しています。LLMは、DeepSeek、Kimi、Qwenなどの最近のモデルに見られるように、MoE(Mixture-of-Experts)を介してスケールアウトし続けています。一方、AIハードウェアはスケールアップしており、HuaweiのCloudMatrix384 SuperPodは数百GB/sの高速インターコネクトを提供しています。SuperPodスケールのハードウェア上で大規模MoEモデルを実行することは、新たな課題をもたらします。新しい実行モデル、スケーラブルなスケジューリング、効率的なエキスパート負荷分散、および単一障害点の排除が必要となります。 本論文は、SuperPodスケールのインフラストラクチャ向けに設計されたHuawei CloudのLLMサービングシステムであるxDeepServeを提示します。その中核となるのはTransformerlessという分散アーキテクチャであり、トランスフォーマーモデルをモジュラーユニット—attention、feedforward、MoE—に分解し、高速ファブリックで接続されたNPU上で独立して実行します。この設計を2つの形式で実装しています:分散prefill-decodeと分散MoE-attentionです。この完全に分散されたセットアップにより、パフォーマンスを犠牲にすることなく、計算とメモリの独立したスケーリングが可能になります。このアーキテクチャをサポートするため、CloudMatrix384のグローバル共有メモリを活用して効率的なpoint-to-pointおよびall-to-allプリミティブを実装する通信ライブラリXCCLを提案します。また、システムレベルの技術によりサービングエンジンFlowServeを拡張し、数百のNPUにわたるスケーラブルな推論を可能にしています。