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%まで下がります。

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