From d9abf7d60734f697da03c9418eab9ed9d25d2aa4 Mon Sep 17 00:00:00 2001 From: Xin Li Date: Sun, 26 Jul 2026 10:24:27 -0400 Subject: [PATCH 1/2] [NV] minimax-m3-b300-dynamo: vLLM nightly + dynamo bump; swap conc-4096 tep4 arm for 3p2d-dep2-dep8 minimaxm3-fp8-b300-dynamo-vllm: - image -> vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 - dynamo -> 1.3.0.dev20260710 (recipe files) - drop minimax-m3-vllm-fixes.sh setup patch + launcher wiring (shipped in the nightly image) - conc 4096: drop 4p2d-dep2-tep4 arm; add 3p2d-dep2-dep8 for conc [1024, 2048] (prefill 3xDEP2, decode 2xDEP8) --- .../configs/minimax-m3-vllm-fixes.sh | 47 ------------------- .../8k1k/1p1d-dep2-tp4-marlin-8k1k.yaml | 4 +- .../b300-fp8/8k1k/1p2d-dep2-tep4-8k1k.yaml | 4 +- .../b300-fp8/8k1k/1p4d-dep2-tep4-8k1k.yaml | 4 +- .../b300-fp8/8k1k/1p4d-dep2-tep8-8k1k.yaml | 4 +- .../b300-fp8/8k1k/2p2d-dep2-dep8-8k1k.yaml | 4 +- .../b300-fp8/8k1k/2p2d-dep2-tep8-8k1k.yaml | 4 +- ...ep4-8k1k.yaml => 3p2d-dep2-dep8-8k1k.yaml} | 20 ++++---- .../b300-fp8/8k1k/4p2d-dep2-dep8-8k1k.yaml | 4 +- configs/nvidia-master.yaml | 14 +++--- perf-changelog.yaml | 6 +++ runners/launch_b300-nv.sh | 3 -- 12 files changed, 38 insertions(+), 80 deletions(-) delete mode 100755 benchmarks/multi_node/srt-slurm-recipes/configs/minimax-m3-vllm-fixes.sh rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/{4p2d-dep2-tep4-8k1k.yaml => 3p2d-dep2-dep8-8k1k.yaml} (81%) diff --git a/benchmarks/multi_node/srt-slurm-recipes/configs/minimax-m3-vllm-fixes.sh b/benchmarks/multi_node/srt-slurm-recipes/configs/minimax-m3-vllm-fixes.sh deleted file mode 100755 index 02862bba39..0000000000 --- a/benchmarks/multi_node/srt-slurm-recipes/configs/minimax-m3-vllm-fixes.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -python3 - <<'PYEOF' -from importlib.util import find_spec -from pathlib import Path - -spec = find_spec("vllm") -if not spec or not spec.origin: - raise RuntimeError("vllm is not installed") -root = Path(spec.origin).parent -patches = { - root / "models/minimax_m3/nvidia/sparse_attention_msa.py": [ - ( - " prefill_topk = topk[:, nd:num_tokens, :]\n", - " prefill_topk = topk[:, nd:num_tokens, :].contiguous()\n", - ), - ], - root / "distributed/kv_transfer/kv_connector/v1/nixl/base_worker.py": [ - ( - " for i, local_len in enumerate(self.block_len_per_layer):\n", - " total_kv_heads = self.transfer_topo.total_num_kv_heads\n" - " local_heads = self.transfer_topo.local_physical_heads\n" - " remote_heads = max(1, total_kv_heads // remote_tp_size)\n" - " for i, local_len in enumerate(self.block_len_per_layer):\n", - ), - ( - "remote_len == (local_len * tp_ratio) // block_size_ratio,", - "remote_len == (local_len * remote_heads // local_heads) " - "// block_size_ratio,", - ), - ( - "remote_len == local_len // (-tp_ratio),", - "remote_len == local_len * remote_heads // local_heads,", - ), - ], -} -for path, edits in patches.items(): - source = path.read_text() - for old, new in edits: - if new in source: - continue - if source.count(old) != 1: - raise RuntimeError(f"missing or ambiguous patch anchor in {path}") - source = source.replace(old, new, 1) - path.write_text(source) -PYEOF diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p1d-dep2-tp4-marlin-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p1d-dep2-tp4-marlin-8k1k.yaml index 04aca65862..a51cfbd2a3 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p1d-dep2-tp4-marlin-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p1d-dep2-tp4-marlin-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-1p1d-fp8-dep2-tp4-marlin-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p2d-dep2-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p2d-dep2-tep4-8k1k.yaml index e483108986..a962183696 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p2d-dep2-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p2d-dep2-tep4-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-1p2d-fp8-dep2-tep4-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep4-8k1k.yaml index 30ac635a9a..a41361ae66 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep4-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-1p4d-fp8-dep2-tep4-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep8-8k1k.yaml index 46af72e46c..c1a97a0c07 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/1p4d-dep2-tep8-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-1p4d-fp8-dep2-tep8-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-dep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-dep8-8k1k.yaml index b1558ae34f..873271d90a 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-dep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-dep8-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-2p2d-fp8-dep2-dep8-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-tep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-tep8-8k1k.yaml index 46aaa045da..71fcc81d96 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-tep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/2p2d-dep2-tep8-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-2p2d-fp8-dep2-tep8-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/3p2d-dep2-dep8-8k1k.yaml similarity index 81% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-tep4-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/3p2d-dep2-dep8-8k1k.yaml index c9f29f7852..babde558e3 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/3p2d-dep2-dep8-8k1k.yaml @@ -1,23 +1,23 @@ -name: "minimax-m3-vllm-disagg-b300-4p2d-fp8-dep2-tep4-8k1k" +name: "minimax-m3-vllm-disagg-b300-3p2d-fp8-dep2-dep8-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 - decode_nodes: 1 - prefill_workers: 4 + decode_nodes: 2 + prefill_workers: 3 decode_workers: 2 gpus_per_prefill: 2 - gpus_per_decode: 4 + gpus_per_decode: 8 dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo @@ -55,7 +55,9 @@ backend: max-num-batched-tokens: 16384 decode: - tensor-parallel-size: 4 + tensor-parallel-size: 1 + data-parallel-size: 8 + data-parallel-rpc-port: 13345 enable-expert-parallel: true trust-remote-code: true no-enable-prefix-caching: true @@ -67,7 +69,7 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-num-seqs: 1024 + max-num-seqs: 1024 # Per DP rank: 2 workers x DP8 = 16 ranks. max-num-batched-tokens: 16384 max-cudagraph-capture-size: 4096 @@ -79,5 +81,5 @@ benchmark: type: "sa-bench" isl: 8192 osl: 1024 - concurrencies: "4096" + concurrencies: "1024x2048" req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-dep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-dep8-8k1k.yaml index 3756103eed..e36f12dfa5 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-dep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-dep8-8k1k.yaml @@ -2,7 +2,7 @@ name: "minimax-m3-vllm-disagg-b300-4p2d-fp8-dep2-dep8-8k1k" model: path: "MiniMaxAI/MiniMax-M3-MXFP8" - container: "vllm/vllm-openai:minimax-m3-0618-x86_64-cu130" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp8" resources: @@ -17,7 +17,7 @@ resources: dynamo: install: true - version: 1.3.0.dev20260614 + version: 1.3.0.dev20260710 frontend: type: dynamo diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index a388cad95d..bf06bded07 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -6666,7 +6666,7 @@ qwen3.5-fp8-h100-sglang-agentic: # baseline above. The image includes vLLM PR #46380, so no runtime patch is # needed. minimaxm3-fp8-b300-dynamo-vllm: - image: vllm/vllm-openai:minimax-m3-0618-x86_64-cu130 + image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 model: MiniMaxAI/MiniMax-M3-MXFP8 model-prefix: minimaxm3 runner: b300 @@ -6733,19 +6733,19 @@ minimaxm3-fp8-b300-dynamo-vllm: tp: 4 ep: 1 dp-attn: false - - conc-list: [4096] + - conc-list: [1024, 2048] prefill: - num-worker: 4 + num-worker: 3 tp: 2 ep: 2 dp-attn: true additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp8/8k1k/4p2d-dep2-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp8/8k1k/3p2d-dep2-dep8-8k1k.yaml" decode: num-worker: 2 - tp: 4 - ep: 4 - dp-attn: false + tp: 8 + ep: 8 + dp-attn: true - conc-list: [16, 32, 64, 128] prefill: num-worker: 1 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 975c917743..29a7520567 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5066,3 +5066,9 @@ description: - "Bump SGLang container image from lmsysorg/sglang:v0.5.12-cu130 to lmsysorg/sglang:v0.5.15.post1-cu130 (https://github.com/sgl-project/sglang/releases/tag/v0.5.15.post1)" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2313 + +- config-keys: + - minimaxm3-fp8-b300-dynamo-vllm + description: + - "Bump image to vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 and dynamo to 1.3.0.dev20260710; drop the minimax-m3-vllm-fixes.sh setup patch (shipped in the nightly image)" + - "conc 4096: drop the 4p2d-dep2-tep4 arm; add a 3p2d-dep2-dep8 arm for conc [1024, 2048] (prefill 3xDEP2, decode 2xDEP8)" diff --git a/runners/launch_b300-nv.sh b/runners/launch_b300-nv.sh index 63c0916962..57e8bfd43a 100644 --- a/runners/launch_b300-nv.sh +++ b/runners/launch_b300-nv.sh @@ -94,9 +94,6 @@ elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && ( $PRECIS git checkout sa-submission-q2-2026 mkdir -p recipes/vllm/minimax-m3 cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3" recipes/vllm/minimax-m3 - if [[ $PRECISION == "fp8" ]]; then - SRTCTL_SETUP_SCRIPT="minimax-m3-vllm-fixes.sh" - fi # NVIDIA/srt-slurm#38 git show 22d46ba9971615016d2339c9ffbc7b4597accfad --format= -- src/srtctl/core/ip_utils/get_node_ip.sh | git apply - || exit 1 if [[ -n "$SRTCTL_SETUP_SCRIPT" ]]; then From 6ed71316a7cda98c9f214cc3d92b024dcd2925a0 Mon Sep 17 00:00:00 2001 From: Xin Li Date: Sun, 26 Jul 2026 10:34:22 -0400 Subject: [PATCH 2/2] [NV] minimax-m3-b300-dynamo: add perf-changelog pr-link --- perf-changelog.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 29a7520567..12e0e9a6d9 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5072,3 +5072,4 @@ description: - "Bump image to vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 and dynamo to 1.3.0.dev20260710; drop the minimax-m3-vllm-fixes.sh setup patch (shipped in the nightly image)" - "conc 4096: drop the 4p2d-dep2-tep4 arm; add a 3p2d-dep2-dep8 arm for conc [1024, 2048] (prefill 3xDEP2, decode 2xDEP8)" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2338