diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml index ad0d248260..a98e9f9c83 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b300-1p1d-tp1-tp4-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b300" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml index 74e87048ca..5f699bbcf7 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b300-1p1d-tp1-tp8-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b300" @@ -27,7 +27,6 @@ backend: decode_environment: VLLM_FLOAT32_MATMUL_PRECISION: high UCX_TLS: "cuda_copy,rc" - VLLM_FLASHINFER_ALLREDUCE_BACKEND: trtllm vllm_config: prefill: no-enable-flashinfer-autotune: true diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml index cb966b1e7c..7b527ce70e 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b300-2p1d-tp1-tp4-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b300" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml index 3c6917dfa9..7bf977c39e 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b300-3p1d-tp1-tp4-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b300" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p1d-tp1-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p1d-tp1-tep4-8k1k.yaml new file mode 100644 index 0000000000..fd11bf499f --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p1d-tp1-tep4-8k1k.yaml @@ -0,0 +1,73 @@ +name: "minimax-m3-vllm-disagg-b300-4p1d-tp1-tep4-fp4-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" + precision: "fp4" +resources: + gpu_type: "b300" + gpus_per_node: 8 + prefill_nodes: 1 + decode_nodes: 0 + prefill_workers: 4 + decode_workers: 1 + gpus_per_prefill: 1 + gpus_per_decode: 4 +dynamo: + install: true + version: 1.3.0.dev20260713 +frontend: + type: dynamo + enable_multiple_frontends: false +backend: + type: vllm + connector: + allow_prefill_decode_colocation: true + prefill_environment: + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: "cuda_copy,rc" + decode_environment: + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: "cuda_copy,rc" + vllm_config: + prefill: + no-enable-flashinfer-autotune: true + tensor-parallel-size: 1 + enable-expert-parallel: false + trust-remote-code: true + no-enable-prefix-caching: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + kv-cache-dtype: fp8 + block-size: 128 + gpu-memory-utilization: 0.90 + max-model-len: 9472 + language-model-only: true + stream-interval: 32 + enforce-eager: true + max-num-batched-tokens: 8192 + decode: + no-enable-flashinfer-autotune: true + tensor-parallel-size: 4 + enable-expert-parallel: true + trust-remote-code: true + no-enable-prefix-caching: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + kv-cache-dtype: fp8 + block-size: 128 + gpu-memory-utilization: 0.90 + max-model-len: 9472 + language-model-only: true + stream-interval: 32 + max-num-seqs: 1024 + max-num-batched-tokens: 16384 + max-cudagraph-capture-size: 4096 +health_check: + max_attempts: 360 + interval_seconds: 10 +benchmark: + type: "sa-bench" + isl: 8192 + osl: 1024 + concurrencies: "4096" + req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml index 2374f1b421..55cc00b611 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b300-5p2d-tp1-dep8-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b300" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml index 88c756e071..73525d8c42 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b300-8p2d-tp1-dep8-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b300" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 36ae816809..a78534ff5f 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -6790,7 +6790,7 @@ minimaxm3-fp8-b300-dynamo-vllm: # baseline above. The image includes vLLM PR #46380, so no runtime patch is # needed. minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1: - image: vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1 + image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 model: nvidia/MiniMax-M3-NVFP4 model-prefix: minimaxm3 runner: b300 @@ -6884,6 +6884,38 @@ minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1: ep: 8 dp-attn: true +# Compare the refreshed image on a one-node max-throughput topology: four +# TP1 prefills colocated with one TEP4 decode worker. +minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4: + image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 + model: nvidia/MiniMax-M3-NVFP4 + model-prefix: minimaxm3 + runner: b300 + precision: fp4 + framework: dynamo-vllm + router: { name: dynamo-router, version: "1.3.0.dev20260713" } + kv-p2p-transfer: nixl + multinode: true + disagg: true + scenarios: + fixed-seq-len: + - isl: 8192 + osl: 1024 + search-space: + - conc-list: [4096] + prefill: + num-worker: 4 + tp: 1 + ep: 1 + dp-attn: false + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/4p1d-tp1-tep4-8k1k.yaml" + decode: + num-worker: 1 + tp: 4 + ep: 4 + dp-attn: false + # Preserve the previously proven max-throughput point exactly, while keeping # it separate from the legacy mixed 1k1k/8k1k entry so 1k1k is not rerun. minimaxm3-fp4-b300-dynamo-vllm-8k1k-legacy-max-tput: diff --git a/perf-changelog.yaml b/perf-changelog.yaml index d969b6ce47..b34f5aa3d4 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5129,3 +5129,12 @@ - "Re-sweep dsv4-fp4-mi355x-atom-mtp on latest atom-dev nightly (nightly_202607231538, was atom0.1.3 release). Align ATOM official MTP config (models.json): MTP3 dp-off conc 4-256 + DPA MTP3 (dp-attn) conc 32-1024 (added c32 dp-on; tp4 tried but removed — tp4+MTP+dp-on OOMs, KV budget negative). prefill-only TBO (--enable-tbo, argparse const=prefill so enable_tbo_decode=False) on dp-attn cells at conc>=256 (measured crossover run 30257759947 vs non-TBO 30238071409: TBO -10~14% output tput at c64/c128 but +8~14% at c256+; MTP removes low-conc latency so TBO overlap there is pure overhead); MTP-safe because only decode-TBO (--enable-tbo all) drops spec_decode_metadata. max_num_seqs=conc on dp-on cells and conc>=64 to avoid OOM. bench keeps --dsv4 (InferenceX bench uses encoding_dsv4.py; DSv4-Pro has no jinja chat_template). Fixed benchmark_lib source path (../ -> ../../)." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2345 +- config-keys: + - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1 + - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4 + description: + - "Update the non-speculative MiniMax-M3 NVFP4 B300 8k1k disaggregated vLLM image from nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1 to nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" + - "Remove VLLM_FLASHINFER_ALLREDUCE_BACKEND=trtllm from the 1P1D TP1-prefill/TP8-decode recipe; retain the existing FP8 indexer KV cache configuration" + - "Add a one-node 4P1D TP1-prefill/TEP4-decode concurrency-4096 point on the refreshed image while preserving the legacy 4P2D DEP2-prefill/TEP4-decode point unchanged" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2310 +