vLLM、MiniMax-M3.1-FlashをDay-0対応 GB300で418.9tok/s

スペック

配布形式・量子化NVFP4 KV cache、NVFP4-quantized MoE weights

メモリの目安はパラメータ数×0.6バイトの概算で、実際はコンテキスト長と実装で変わります

vLLMは2026年10月23日、MiniMaxのMiniMaxAI/MiniMax-M3.1-FlashへのDay-0対応をNVIDIA Blackwell、NVIDIA Rubin、AMD MI350シリーズGPU向けに提供しました。SemiAnalysis AgentXベンチマークでは、NVIDIA GB300で低レイテンシー側のユーザーあたり418.9 tokens/sを記録しています。記事はInferactとvLLM Teamの共同執筆です。

vLLMは大規模言語モデルの推論とAPI配信のためのライブラリで、OpenAI互換APIからモデルを利用できます。

何が新しいか

MiniMax-M3.1-FlashはMiniMax-M3ファミリーの最新モデルです。推論効率を上げるため、ネイティブのNVFP4 KVキャッシュ、NVFP4量子化MoE重み、投機的デコード用のDSparkドラフトモデルを備えています。このモデルはNVFP4 KVキャッシュを前提にquantization-aware trainingされており、NVFP4 KVキャッシュはインデクサーとアテンションの両方の経路に適用されます。原文によると、チェックポイントはMiniMax-M3-MXFP8の451.5GBから250.1GBへ44.6%小さくなりました。KVキャッシュはトークンあたり34,560バイトで、FP8の61,440バイトに比べて43.75%少なくなります。4基のB300でDEP4構成、256Kトークンのシーケンスを動かした場合、同時に載るシーケンス数はM3(FP8 KV)の28から76へ約2.7倍に増えます。

vLLMはこのモデル向けに次のカーネルを統合しました。

  • NVIDIA Blackwell向けのNVFP4 MSAカーネル
  • Rubin(SM107)専用カーネル
  • AMD MI350シリーズ向けのNVFP4 MSAカーネル

あわせて、NVFP4チェックポイントを使ったveRL・FSDP2・LoRAによるエンドツーエンドRLにも対応しています。

最適化と数値

項目 条件 効果
インデクサーQKデコード(CUDA 13.4のQMUL4命令を使用) Blackwell 最大1.7×
スパースアテンションデコード Blackwell 1.3×
NVFP4 MegaMoE(MXFP8共有エキスパート融合、TMEMの早期解放) プリフィル カーネルレイテンシー20%減、スループット7%増
インデクサーDCP 4× GB300、512Kコンテキスト スパース層あたり最大3.3×
QKV GEMM+norm+RoPE+KV insert融合 GB300、プリフィル512トークン以上 1.1–1.6×、TP4でP50 TTFT約19%減
FlashInfer PrimiTS(DSparkドラフター用) FlashAttention 4との比較 1.3–2×、総フォワード時間5%減

AgentXベンチマークの結果は次のとおりです。

  • NVIDIA GB300: レイテンシー重視側でユーザーあたり418.9 tok/s。ユーザーあたり200 tok/s超を保った状態でGPUあたり38.6K tok/s、スループット側ではGPUあたり153.8K tok/sに達しました。
  • NVIDIA Rubin: ユーザーあたり最大724.9 tok/s、GPUあたり191.5K tok/s。
  • AMD MI355X: TCO1ドルあたり最大133.3M tokens。

AMD MI350シリーズでは、各最適化を組み合わせることで全体として2–3×の性能向上を得たとしています。

試し方

事前ビルドイメージは次の2つです。

  • NVIDIA向け: vllm/vllm-openai:minimax-m31-flash
  • AMD向け: vllm/vllm-openai-rocm:minimax-m31-flash

PyPIのnightly wheelで使えるようになるのは、コードがレビューされupstreamにマージされた後で、通常は約1週間かかります。NVIDIAではCUDA 13.4 toolkitが推奨されています。

NVIDIA 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"}' --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

AMDのコマンドはNVIDIAと比べて、インデクサーのデコードCP、MoEのmxfp8量子化、TRITON_ATTNバックエンドを指定し、投機トークン数を3にしている点が異なります。

MSAの仕組み

MiniMax-M3ファミリーは、フルアテンションの代わりにブロックスパースアテンション(MSA)を使います。KVキャッシュを128トークン単位のブロックに分け、軽量なインデクサーで上位16ブロックと直近ブロックを選び、その範囲だけで厳密なアテンションを計算します。これにより、コンテキスト長にかかわらずクエリあたりの参照キーは2,048個が上限になります。長コンテキストのデコードでは、ステップあたりのHBMトラフィックがdenseアテンションの約12.5%まで下がります。

この記事の固有名詞

コメント (0)

まだコメントはありません。

コメントを書く

2000文字以内