MiniMax-M3.1-Flash 向け vLLM デイゼロサポート: NVFP4 MSAカーネル、MegaMoE、およびエージェント型ベンチマーク
vLLM は、NVIDIA Blackwell、NVIDIA Rubin、AMD MI350 シリーズ GPU 上で MiniMax-M3.1-Flash のデイゼロサポートをリリースしました。NVFP4 カーネル、融合型 QKV パイプライン、エージェント型サービングワークロード向けに調整された投機的復号を備えています。このリリースが重要なのは、低精度推論がどこまで進んだかを示しているからです。MiniMax-M3.1 は NVFP4 KV キャッシュ向けに量子化認識トレーニングが施されており、vLLM のカーネルはこれを活用して、従来世代と比較して同じハードウェア上で約 2.7 倍の同時シーケンスを処理できます。
vLLM が発表した内容
vLLM は、MiniMax-M3.1-Flash のデイゼロサービングサポートを 3 つのハードウェアファミリ(NVIDIA Blackwell GPU、NVIDIA Rubin GPU(専用 Rubin カーネル搭載)、AMD MI350 シリーズ GPU)向けに提供します。プリビルドイメージは両ベンダー向けに公開されており、このリリースの重点はエージェント型ワークロードでのパフォーマンスです。
MiniMax-M3.1-Flash は MiniMax-M3 ファミリの最新モデルであり、推論、コーディング、エージェント型、ビジュアルタスクにわたって改善されています。また、推論効率のために構築されており、ネイティブ NVFP4 KV キャッシュ、NVFP4 量子化 MoE 重み、投機的復号用の DSpark ドラフトモデルを組み合わせています。
vLLM が挙げる主要な最適化は次のとおりです。
- MiniMax スパースアテンション(MSA)。インデクサーとアテンションパスの両方に NVFP4 KV キャッシュを使用し、NVFP4 MoE 重みと DSpark ドラフターを備えます。
- Blackwell MSA カーネル。CUDA 13.4 の
QMUL4命令を使用して、カーネル内で NVFP4 を FP8 に逆量子化します。インデクサー QK デコードで最大 1.7 倍、スパースアテンションデコードで 1.3 倍 高速化されます。 - NVFP4 MegaMoE。MXFP8 共有エキスパート融合と早期 TMEM 解放を備え、プリフィルのカーネルレイテンシを 20% 削減し、プリフィルスループットを 7% 向上させます。
- インデクサーデコードコンテキスト並列処理(DCP)。4× GB300 で 512K コンテキストの場合、スパースレイヤーあたりのインデクサーが最大 3.3 倍 高速化されます。
- QKV GEMM + ノルム + RoPE + KV 挿入の融合。512 トークン以上のプリフィルで 1.1~1.6 倍 高速化され、TP4 での P50 TTFT が約 19% 低下します。
- DSpark ドラフター用の FlashInfer PrimiTS バックエンド。FlashAttention 4 より 1.3~2 倍 高速で、合計フォワード時間が 5% 短縮されます。
- Rubin(SM107)MSA カーネル。最先端のパフォーマンスで vLLM に統合されています。
- AMD MI350 シリーズ。NVFP4 ネイティブ MSA カーネル、インデクサー DCP、デュアルバッチオーバーラップ、モノカーネルにより、全体で 2~3 倍 のパフォーマンス向上を実現します。
- デイゼロ RL サポート。NVFP4 チェックポイントで veRL、FSDP2、LoRA を使用したエンドツーエンドの RL を提供します。
MiniMax スパースアテンションの仕組み
MiniMax-M3 モデルファミリは、推論をより効率的にするために、フルアテンションをブロックスパースアテンションの変種に置き換えています。KV キャッシュは 128 トークンのブロックに分割されます。軽量なインデクサーがコンテキスト内のすべてのキーを、GQA グループごとに 1 つのインデックスクエリで単一の共有インデックスキーヘッドに対してスコアリングし、それらのスコアをブロックごとに 1 つのスコアに最大プーリングします。メインアテンションはその後、正確に実行されますが、上位 16 ブロックのみを対象とし、最新のブロックは常に保持されます。これにより、コンテキスト長に関係なく、各クエリは 2,048 キーに制限されます。
最大の効果は、メモリ帯域幅に制限されるデコードで発揮されます。各ステップでコンテキスト全体のインデックスキーをスキャンしますが、これはトークンあたりレイヤーあたりわずか 128 バイトであり、高密度アテンションが読み取る K/V の 1,024 バイト(FP8、4 KV ヘッド × 128 次元)の 8 分の 1 です。その後、選択された 2,048 トークンについてのみ完全な K/V が読み取られます。長いコンテキストのデコードでは、ステップごとの HBM トラフィックは、高密度アテンションが読み取る量の約 12.5% に削減されます。
MiniMax-M3.1 アーキテクチャの変更点
MiniMax-M3.1 は、前世代に比べて推論効率が大幅に向上しています。NVFP4 KV キャッシュ向けにネイティブに量子化認識トレーニングが施され、ルーティングされた MoE 重みは NVFP4 で保存されます。
メモリ節約の具体的な効果は次のとおりです。
- NVFP4 エキスパートにより、チェックポイントが 451.5 GB(MiniMax-M3-MXFP8)から 250.1 GB に縮小され、44.6% 削減されます。
- NVFP4 KV キャッシュは、FP8 の 61,440 バイト ではなく トークンあたり 34,560 バイト を必要とし、トークンあたり 43.75% の節約 になります。
- これらを合わせると、4 枚の NVIDIA B300 GPU で DEP4 デプロイメントと 256K トークンシーケンスを使用する場合、M3.1 は 76 の同時シーケンス を処理でき、FP8 KV キャッシュの M3 は 28 を処理します。これは 同じハードウェアで約 2.7 倍 であり、サービングスループットを直接向上させます。
NVIDIA Blackwell MSA カーネルの最適化
CUDA 13.4 QMUL4 命令による NVFP4 から FP8 への逆量子化
KV キャッシュは NVFP4 で保存され、クエリは FP8 のままなので、ネイティブの NVFP4 テンソルコア命令は行列乗算に使用できません。代わりに、カーネルは NVFP4 KV キャッシュを FP8 に逆量子化し、FP8 MMA を実行します。
逆量子化コストを低く抑えるために、vLLM は CUDA 13.4 で導入された新しい Blackwell 固有の PTX 命令 mul.e4m3x4.e2m1x4.e4m3x4(SASS QMUL4)を使用します。これは 4 つの NVFP4 値をスケールファクターでスケーリングし、単一の命令で 4 つの FP8 値を生成します。これにより、以前の FP16 ラウンドトリップパスよりもはるかに少ない CUDA コア命令で済みます。その結果、インデクサー QK デコードカーネルで最大 1.7 倍、スパースアテンションデコードカーネルで 1.3 倍 の高速化を実現します。
NVFP4 MegaMoE
MegaMoE は、最新のエキスパート並列(EP)デプロイメントのための重要な構成要素です。vLLM は DeepGEMM の MegaMoE を NVFP4 精度に拡張し、融合型 MXFP8 共有エキスパートを追加しました。これはプロジェクトのフォークである vllm-project/DeepGEMM でオープンソース化されています。
MegaMoE への NVFP4 サポートの追加は、dtype の交換だけではありません。NVFP4 は以前の FP8×FP4 パスと比較して、要素あたりのバイト数を半分にし、テンソルコアスループットを 2 倍にするため、カーネルの他の部分も変更しないとパイプラインのバランスが崩れます。
そのような変更の 1 つが、FC1 エピローグでの TMEM ステージの早期解放です。以前は、TMEM ステージはエピローグが終了した後にのみ解放されていました。エピローグは完全にレジスタ内で実行されるため、この待機は不要であり、アキュムレータがレジスタにロードされた直後、つまり算術演算が行われる前に TMEM を解放できます。これにより、プリフィルでの合計カーネルレイテンシが 20% 削減され(高速な NVFP4 コンピュートが最も重要)、全体のプリフィルスループットが 7% 向上します。
NVFP4 インデクサーデコードコンテキスト並列処理(DCP)
低レイテンシサービングでは、各 GPU がコンテキスト全体に対して独自のインデックスヘッドをスコアリングします。4 つの GPU にわたって、これは各インデクサーレイヤーがインデックスキャッシュ全体を 4 回読み取ることを意味します。
インデクサー DCP は、代わりにコンテキストごとに作業を分割します。各 GPU は、ページの 4 分の 1 にわたって 4 つのヘッドすべてをスコアリングします。次に、各ヘッドのローカルな上位 16 を NVLink 経由でそのヘッドを所有する GPU に送信し、そこで候補を最終的な上位 16 にマージします。選択は正確なままであり、インデクサーは 4× NVIDIA GB300 GPU で 512K コンテキストの場合、スパースレイヤーあたり最大 3.3 倍 高速に実行されます。
QKV GEMM + ノルム + RoPE + KV 挿入の融合
MiniMax-M3.1 の QKV およびインデクサープロジェクションは、以前は完全な QKV テンソルを HBM に書き込んでいました。その後、2 番目のカーネルがノルム、RoPE、KV キャッシュ挿入のためにそれを読み戻していました。
vLLM はチェーン全体を単一の GEMM カーネルに融合し、そのエピローグが FP32 アキュムレータをヘッドごとに処理します。クエリとインデックスクエリにノルムと RoPE を適用します。また、K、V、インデックスキーを NVFP4 に量子化し、それらのキャッシュに直接書き込みます。QKV テンソルは HBM に触れることはありません。GB300 では、512 トークン以上のプリフィルバッチは 1.1~1.6 倍 高速に実行され、TP4 での P50 タイムトゥファーストトークン(TTFT)は約 19% 低下します。
DSpark ドラフター用の FlashInfer PrimiTS
MiniMax-M3.1 は、投機的復号ドラフターとして DSpark を使用しており、これは 4096 トークンのスライディングウィンドウを持つ非因果的 GQA を実行します。以前は、vLLM は FlashAttention 4 でドラフターを実行していましたが、これはデコード形状に最適化されていませんでした。vLLM はそれを FlashInfer の PrimiTS バックエンドに切り替えました。PrimiTS は FlashAttention 4 より 1.3~2 倍 高速で、全体のフォワード時間を 5% 削減します。
NVIDIA Rubin MSA カーネル
NVIDIA Rubin GPU では、vLLM は NVFP4 から FP8 への変換オーバーヘッドを軽減するためにモデルを最適化しました。NVFP4 を直接 FP16 に変換し、インデクサーのスコア MMA を FP16 で実行します。これにより逆量子化命令が約 3 分の 1 削減され、スコアは FP8 MMA を実行するために必要な E4M3 の再丸めを伴わずに正確になります。
クエリが 4 以下の場合、単一ヘッドのインデクサーデコードカーネルはさらに進みます。各ブロックスケールを K 値ごとに 1 回ではなく、SM107 のパックされた fma.rn.f32x2.f16x2 を使用して MMA 結果ごとに 1 回適用します。これにより、SM ごとに 3 つの CTA を実行することで、より多くのレイテンシ隠蔽も可能になります。Rubin のより大きな共有メモリ(Blackwell の 228 KB に対して 328 KB)と追加のテンソルメモリ列(Blackwell の 512 に対して 576)により、これが可能になります。
Rubin は Blackwell よりも多くの SM を搭載しているため、ワークプランナーは SM 数からタイルをサイズ設定し、作業が Rubin の 212 すべての SM に均等に分散されるようにします。
プリフィルスパースアテンションも、ロケールドメイン最適化の恩恵を受けます。vLLM は、2 MB ページが 2 つのドメイン間で交互になるように CUDA 仮想メモリ API を通じて部分バッファを割り当て、結合カーネルは各タイルを、そのタイルのデータを保持するドメインにある SM の CTA に渡します。Rubin では、プリフィルおよびデコードアテンションカーネルは、命令あたり K=64 の高密度 FP8 MMA を使用し、MMA 命令数を半分にし、Blackwell の FP8 レートの 2 倍で実行します。
AMD MI350 シリーズサポート
AMD GPU では、vLLM は NVFP4 KV キャッシュサポートを提供し、AMD デプロイメントでも低精度形式を使用して KV キャッシュメモリを削減できるようにします。デコードでは、長いコンテキストのデコードを高速化するインデクサー DCP と、低レイテンシ推論を高速化するモノカーネルを追加します。プリフィルでは、シーケンス並列処理とデュアルバッチオーバーラップによりエンジン内の通信を削減し、新しい KV キャッシュレイアウトにより各 KV ブロックを単一の転送でデコードノードに移動できます。MSA およびモノカーネルは、AMD の GPU カーネル用 Python DSL である FlyDSL で、FlyDSL チームの協力を得て構築されています。
テーブルルックアップによる NVFP4 MSA カーネル
MiniMax-M3.1 は、メインアテンションとインデクサーの両方に対して NVFP4 KV キャッシュ(QAT)でトレーニングされていますが、CDNA4 には NVFP4 を逆量子化するネイティブ命令がありません。MSA カーネルを高速に保つために、vLLM は逆量子化をテーブルルックアップに変換します。可能な E4M3 スケールは 256 個、E2M1 マグニチュードは 8 個しかないため、カーネルはすべてのスケーリングされた値(FP8 に丸め済み)を LDS 内の 2 KB テーブル に事前計算します。1 つの v_perm_b32 バイトパーミュートと符号ビット用の 1 つの XOR により、4 つの FP4 値が FP8 に変換されます。カーネルはまた、共有プレフィックスページを最大 64 リクエストに対して 1 回だけ逆量子化します。これらを組み合わせることで、選択されたブロックを FP8 に変換して FP8 アテンションカーネルを実行するよりも、スパースデコードアテンションが最大 2.5 倍 高速になります。
CDNA4 での NVFP4 インデクサー DCP
NVIDIA と同じインデクサーデコードコンテキスト並列処理が AMD でも使用されており、CDNA4 ではさらなる利点があります。DCP がない場合、TP4 の各 GPU はコンテキスト全体に対して独自のインデックスヘッドをスコアリングするため、インデックスキャッシュは 4 回読み取られます。また、マトリックスコアが十分に活用されません。DSpark-3 デコードステップにはリクエストあたり 4 つのクエリ行しかなく、16×16×128 FP8 MFMA の 16 列のうち 4 列しか埋まりません。
DCP を使用すると、各 GPU はコンテキストの 4 分の 1 にわたって 4 つのヘッドすべてをスコアリングするため、4 ヘッド × 4 行で 16 列すべてが埋まります。単一のカーネルがインデックスクエリを交換し、そのブロックをスコアリングし、各ヘッドのスコアを Infinity Fabric 経由で所有 GPU のメモリに直接書き込みます。デバイス側のハンドシェイクにより、HIP グラフ内でこの動作が維持されます。その後、所有者は以前と同様に上位 16 を選択します。スコアはシングル GPU バージョンとビット単位で同一であるため、選択は正確です。4× MI355X では、30K~210K トークンの 45 リクエストで、インデクサーはスパースレイヤーあたり最大 2.8 倍 高速に実行されます。
シーケンス並列処理、デュアルバッチオーバーラップ、シングルリード KV 転送
TP4 では、MI355X でのロングプロンプトプリフィルは、ノード内の GPU 間とプリフィルノードとデコードノード間の両方の通信に制限されます。エンジン内では、デュアルバッチオーバーラップ(DBO)がテンソル並列コレクティブを他のマイクロバッチの計算の背後に隠します。シーケンス並列処理(SP)はトラフィック自体を削減します。各 GPU はトークンの 4 分の 1 を保持し、アテンション出力は MXFP8 で全対全交換されるため、各 GPU は自身のトークンに対して完全な o_proj を実行し、MoE 出力はリデューススキャッターされます。これにより、GPU あたりのトラフィックがレイヤーあたりトークンあたり約 36 KB から 20 KB に削減され、ノルム、量子化、ルーターはトークンの 4 分の 1 のみで実行されます。
プリフィルエンジンの高速化は、KV キャッシュがデコードノードに迅速に到達できる場合にのみ役立ちます。vLLM のレイヤーごとの KV キャッシュレイアウトは、各 KV ブロックを 125 の小さなページに分割し、各ページには独自の NIXL RDMA 読み取りが必要です。vLLM は、各ブロックを 1 つの連続した 1.82 MB 行 に保存するブロックアウターレイアウトに切り替えたため、NIXL は単一の読み取りでそれを移動できます。これらを組み合わせることで、エンジンと KV 転送の変更により、4× MI355X で 16K トークン以上のプリフィルバッチが 1.8~2.1 倍 高速になります。
低レイテンシモノカーネル
低同時実行時、AMD GPU でのデコードは起動制限があります。カーネル起動オーバーヘッドは計算よりも時間がかかります。モノデコードは、各スパース MoE デコーダーレイヤーを単一の FlyDSL カーネル起動として実行することでこれを修正します。その 1 回の起動で、QKV プロジェクションとスパースアテンションからテンソル並列オールリデュースと MXFP4 MoE までがカバーされ、約 1,170 回のカーネル起動 が置き換えられます。MI350X の TP4 では、デコードステップが最大 2.3 倍 高速になり、低同時実行時の 8K 入力 / 1K 出力スループットが 2 倍になります。エージェント型コーディングトレースでは、インタラクティブ性が 50~65% 向上します。
エージェント型サービングベンチマーク
NVIDIA GB300
vLLM は、NVIDIA GB300 で SemiAnalysis AgentX ベンチマークを使用してデイゼロイメージをベンチマークしました。フロンティアのレイテンシ重視の端では、MiniMax-M3.1-Flash は ユーザーあたり 418.9 トークン/秒 を維持します。フロンティアに沿ってさらに進むと、各ユーザーを 200 トークン/秒 以上に保ちながら、GPU あたり 38.6K トークン/秒 の合計トークンを処理します。スループット端では、GPU あたり 153.8K トークン/秒 に達し、これは最もインタラクティブなポイントの約 24 倍 ですが、各ユーザーは依然として約 127 トークン/秒 を確認できます。
GB300 の測定では、7 つの投機トークンと、3.16~3.26 トークン(最初のトークンを含む)の合成受理長を使用しました。
NVIDIA Rubin
NVIDIA Rubin では、MiniMax-M3.1-Flash は同じベンチマークでフロンティアをさらに押し広げます。レイテンシ重視の端では、ユーザーあたり 724.9 トークン/秒 を維持します。フロンティアに沿ってさらに進むと、各ユーザーを 200 トークン/秒 以上に保ちながら、GPU あたり 157.3K トークン/秒 の合計トークンを処理します。スループット端では、GPU あたり 191.5K トークン/秒 に達し、各ユーザーは依然として約 134 トークン/秒 を確認でき、同じユーザーあたりのレートで GB300 の約 1.5 倍 です。
AMD MI355X
InferenceX AgentX ベンチマークでは、MiniMax-M3.1-Flash はフロンティアのレイテンシ重視の端で ユーザーあたり 331.0 トークン/秒 を維持します。フロンティアに沿ってさらに進むと、各ユーザーを 170 トークン/秒 以上に保ちながら、TCO ドルあたり 34.6M 合計トークン を提供します。コスト効率の高い端では、ドルあたり 133.3M トークン に達し、これは最もインタラクティブなポイントのほぼ 10 倍 ですが、各ユーザーは依然として約 79 トークン/秒 を確認できます。
AMD の測定では、c1 および c4 ポイントは 7 つの投機トークンで 3.2 トークンの合成受理長を使用します。他のポイントは 3 つの投機トークンで 2.45 トークンを使用します。
デイゼロ RL サポート
vLLM は、NVFP4 チェックポイントから MiniMax-M3.1 で RL を実行し、ランク 32 の LoRA アダプターのみ をトレーニングします。veRL トレーナーは、エンジンがサービスを提供するのと同じ方法でベースモデルを量子化します。ルーティングされたエキスパートには NVFP4、他のプロジェクションには MXFP8 を使用し、各ステップ後にアダプターのみをエンジンに同期します。エンジン側では、エキスパート LoRA は FlashInfer の TRTLLM NVFP4 MoE カーネル内で実行されるため、ベースエキスパートは通常のサービングカーネルで引き続き実行されます。
トレーニング前に、vLLM はトレーナーとエンジンが 3 つの方法で一致することを確認しました。エンジンはトレーナーが送信する重みを正確に受け取り、両方が各トークンを同じエキスパートにルーティングし(ルーティングリプレイ)、両方が同じトークンに近いログプロブを割り当てます。
残りのギャップは、重要度比を 2 に制限したトークンレベル重要度サンプリング(TIS)で修正されます。各バッチは単一のオプティマイザステップを取得するため、トレーナーはロールアウトログプロブを古いログプロブとして使用し、それらを再計算する追加のフォワードパスをスキップします。
DAPO-Math-17K で 16 GB300 GPU を使用した場合、200 GRPO ステップで AIME-2024 の精度が 36.3% から 67.5% に向上 します。同じ実行中に、トレーニング報酬は −0.06 から 0.67 に上昇し、トレイン/ロールアウト KL は低いまま、0.040 から 0.024 に低下します。
クイックスタート
両ベンダー向けのプリビルドイメージが利用可能です。
- NVIDIA:
vllm/vllm-openai:minimax-m31-flash - AMD:
vllm/vllm-openai-rocm:minimax-m31-flash
モデルは、コードがレビューされてアップストリームにマージされた後(通常約 1 週間)にのみ、ナイトリリー PyPI ホイールで利用可能になります。完全なレシピは vLLM Recipes にあり、チェックポイントは MiniMaxAI/MiniMax-M3.1-Flash にあります。
NVIDIA での TP4
vLLM は、最高のパフォーマンスを得るために CUDA 13.4 ツールキットを推奨しています。
vllm serve MiniMaxAI/MiniMax-M3.1-Flash \
-tp 4 \
--reasoning-parser minimax_m3 \
--block-size 128 \
--kv-cache-dtype nvfp4 \
--attention-config '{"indexer_kv_dtype": "nvfp4"}' \
--speculative-config '{"method":"dspark","num_speculative_tokens":7,"attention_backend":"FLASHINFER_TS","kv_cache_dtype":"fp8","draft_sample_method":"probabilistic"}' \
--disable-hybrid-kv-cache-manager
AMD での TP4
vllm serve MiniMaxAI/MiniMax-M3.1-Flash \
-tp 4 \
--reasoning-parser minimax_m3 \
--block-size 128 \
--kv-cache-dtype nvfp4 \
--attention-config '{"indexer_kv_dtype": "nvfp4", "indexer_decode_cp": true}' \
--quantization-config.moe mxfp8 \
--speculative-config '{"method":"dspark","num_speculative_tokens":3,"attention_backend":"TRITON_ATTN","kv_cache_dtype":"fp8","draft_sample_method":"probabilistic"}' \
--disable-hybrid-kv-cache-manager
このリリースが重要な理由
MiniMax-M3.1-Flash は、量子化認識トレーニングがサービングレイヤーで効果を発揮するケーススタディです。モデルが後から量子化されるのではなく NVFP4 KV キャッシュ向けにトレーニングされているため、vLLM はインデクサーとスパースアテンションパスの両方に NVFP4 を使用でき、チェックポイントを 44.6% 縮小し、FP8 KV キャッシュの前世代よりも 4 つの B300 GPU で約 2.7 倍の同時 256K トークンシーケンスを処理できます。
カーネル作業は、汎用的ではなくハードウェア固有であることも同様に注目に値します。Blackwell は CUDA 13.4 の QMUL4 逆量子化パスを取得し、Rubin は FP16 スコア MMA、パックされた fma.rn.f32x2.f16x2 スケーリング、212 の SM にわたる SM 数認識タイルプランニングを取得し、AMD CDNA4 は不足している NVFP4 逆量子化命令の代わりとなる 2 KB LDS ルックアップテーブルを取得します。各プラットフォームは異なるメカニズムで数値を達成しており、vLLM はカーネルを vllm-project/MSA リポジトリで公開しています。
最後に、このリリースはトレーニングからサービングまでの完全なループをカバーしています。veRL、FSDP2、LoRA を使用したデイゼロ RL を NVFP4 チェックポイントで直接実行し、ルーティングリプレイとトークンレベル重要度サンプリングによりトレーナーとエンジンの整合性を維持します。この組み合わせ(NVFP4 サービング、デイゼロ RL、3 つのハードウェアファミリでのエージェント型ベンチマーク)が、低精度推論デプロイメントのリファレンスポイントとなっています。