From 4786c591e69ce00beb133b7f40d67aded0931162 Mon Sep 17 00:00:00 2001 From: "Jason Li (Engrg-Hardware 1)" Date: Mon, 13 Jul 2026 17:48:28 -0700 Subject: [PATCH 1/5] feat: update MiniMax M3 B300 8k1k disagg recipes --- .../b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml | 86 ----------- ...-tep4-8k1k.yaml => 1p1d-tp1-tp4-8k1k.yaml} | 36 ++--- ...-tep8-8k1k.yaml => 1p1d-tp1-tp8-8k1k.yaml} | 40 ++---- ...-tep4-8k1k.yaml => 2p1d-tp1-tp4-8k1k.yaml} | 38 ++--- ...-tep4-8k1k.yaml => 3p1d-tp1-tp4-8k1k.yaml} | 40 ++---- .../b300-fp4/8k1k/4p2d-dep2-dep8-8k1k.yaml | 87 ------------ ...dep8-8k1k.yaml => 5p2d-tp1-dep8-8k1k.yaml} | 31 ++-- ...tep8-8k1k.yaml => 8p2d-tp1-dep8-8k1k.yaml} | 35 ++--- configs/nvidia-master.yaml | 133 ++++++++---------- runners/launch_b300-nv.sh | 6 + 10 files changed, 140 insertions(+), 392 deletions(-) delete mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{1p2d-dep2-tep4-8k1k.yaml => 1p1d-tp1-tp4-8k1k.yaml} (79%) rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{1p4d-dep2-tep8-8k1k.yaml => 1p1d-tp1-tp8-8k1k.yaml} (76%) rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{1p4d-dep2-tep4-8k1k.yaml => 2p1d-tp1-tp4-8k1k.yaml} (78%) rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{4p2d-dep2-tep4-8k1k.yaml => 3p1d-tp1-tp4-8k1k.yaml} (77%) delete mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-dep8-8k1k.yaml rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{2p2d-dep2-dep8-8k1k.yaml => 5p2d-tp1-dep8-8k1k.yaml} (82%) rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{2p2d-dep2-tep8-8k1k.yaml => 8p2d-tp1-dep8-8k1k.yaml} (82%) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml deleted file mode 100644 index be2683d0ca..0000000000 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml +++ /dev/null @@ -1,86 +0,0 @@ -name: "minimax-m3-vllm-disagg-b300-1p1d-fp4-dep2-tp4-8k1k" - -model: - path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" - precision: "fp4" - -resources: - gpu_type: "b300" - gpus_per_node: 8 - prefill_nodes: 1 - decode_nodes: 1 - prefill_workers: 1 - decode_workers: 1 - gpus_per_prefill: 2 - gpus_per_decode: 4 - -dynamo: - install: true - version: 1.3.0.dev20260614 - -frontend: - type: dynamo - enable_multiple_frontends: false - -backend: - type: vllm - connector: null - allow_prefill_decode_colocation: true - - prefill_environment: - VLLM_FLOAT32_MATMUL_PRECISION: high - UCX_TLS: "cuda_ipc,cuda_copy,rc" - - decode_environment: - VLLM_FLOAT32_MATMUL_PRECISION: high - UCX_TLS: "cuda_ipc,cuda_copy,rc" - - vllm_config: - prefill: - no-enable-flashinfer-autotune: true - tensor-parallel-size: 1 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - 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-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - - decode: - no-enable-flashinfer-autotune: true - tensor-parallel-size: 4 - 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 - max-num-seqs: 1024 - max-num-batched-tokens: 16384 - max-cudagraph-capture-size: 2048 - -health_check: - max_attempts: 360 - interval_seconds: 10 - -benchmark: - type: "sa-bench" - isl: 8192 - osl: 1024 - concurrencies: "1x4x8x16" - req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p2d-dep2-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml similarity index 79% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p2d-dep2-tep4-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml index 5be198f113..bd7ad92245 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p2d-dep2-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml @@ -1,47 +1,37 @@ -name: "minimax-m3-vllm-disagg-b300-1p2d-fp4-dep2-tep4-8k1k" - +name: "minimax-m3-vllm-disagg-b300-1p1d-tp1-tp4-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" + container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" precision: "fp4" - resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 - decode_nodes: 1 + decode_nodes: 0 prefill_workers: 1 - decode_workers: 2 - gpus_per_prefill: 2 + decode_workers: 1 + gpus_per_prefill: 1 gpus_per_decode: 4 - dynamo: install: true version: 1.3.0.dev20260614 - frontend: type: dynamo enable_multiple_frontends: false - backend: type: vllm - connector: null - + connector: 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 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -52,13 +42,12 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - + enforce-eager: true + max-num-batched-tokens: 8192 decode: no-enable-flashinfer-autotune: true tensor-parallel-size: 4 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -72,14 +61,13 @@ backend: max-num-seqs: 512 max-num-batched-tokens: 16384 max-cudagraph-capture-size: 4096 - + allow_prefill_decode_colocation: true health_check: max_attempts: 360 interval_seconds: 10 - benchmark: type: "sa-bench" isl: 8192 osl: 1024 - concurrencies: "16" + concurrencies: "8x16x24x32x48x64" req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml similarity index 76% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep8-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml index 2154742821..f3caf6ba1d 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml @@ -1,47 +1,38 @@ -name: "minimax-m3-vllm-disagg-b300-1p4d-fp4-dep2-tep8-8k1k" - +name: "minimax-m3-vllm-disagg-b300-1p1d-tp1-tp8-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" + container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" precision: "fp4" - resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 - decode_nodes: 4 + decode_nodes: 1 prefill_workers: 1 - decode_workers: 4 - gpus_per_prefill: 2 + decode_workers: 1 + gpus_per_prefill: 1 gpus_per_decode: 8 - dynamo: install: true version: 1.3.0.dev20260614 - frontend: type: dynamo enable_multiple_frontends: false - backend: type: vllm - connector: null - + connector: 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_FLASHINFER_ALLREDUCE_BACKEND: trtllm vllm_config: prefill: no-enable-flashinfer-autotune: true tensor-parallel-size: 1 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -52,13 +43,12 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - + enforce-eager: true + max-num-batched-tokens: 8192 decode: no-enable-flashinfer-autotune: true tensor-parallel-size: 8 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -69,17 +59,15 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-num-seqs: 1024 + max-num-seqs: 256 max-num-batched-tokens: 16384 - max-cudagraph-capture-size: 4096 - + max-cudagraph-capture-size: 256 health_check: max_attempts: 360 interval_seconds: 10 - benchmark: type: "sa-bench" isl: 8192 osl: 1024 - concurrencies: "4" + concurrencies: "1x2x4x8x16" req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml similarity index 78% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep4-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml index 90d688f615..179c84795b 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml @@ -1,47 +1,37 @@ -name: "minimax-m3-vllm-disagg-b300-1p4d-fp4-dep2-tep4-8k1k" - +name: "minimax-m3-vllm-disagg-b300-2p1d-tp1-tp4-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" + container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" precision: "fp4" - resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 - decode_nodes: 2 - prefill_workers: 1 - decode_workers: 4 - gpus_per_prefill: 2 + decode_nodes: 0 + prefill_workers: 2 + decode_workers: 1 + gpus_per_prefill: 1 gpus_per_decode: 4 - dynamo: install: true version: 1.3.0.dev20260614 - frontend: type: dynamo enable_multiple_frontends: false - backend: type: vllm - connector: null - + connector: 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 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -52,13 +42,12 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - + enforce-eager: true + max-num-batched-tokens: 8192 decode: no-enable-flashinfer-autotune: true tensor-parallel-size: 4 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -72,14 +61,13 @@ backend: max-num-seqs: 512 max-num-batched-tokens: 16384 max-cudagraph-capture-size: 4096 - + allow_prefill_decode_colocation: true health_check: max_attempts: 360 interval_seconds: 10 - benchmark: type: "sa-bench" isl: 8192 osl: 1024 - concurrencies: "16x32x64x128" + concurrencies: "128" req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml similarity index 77% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml index 23c99d3282..e8268ab146 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml @@ -1,47 +1,38 @@ -name: "minimax-m3-vllm-disagg-b300-4p2d-fp4-dep2-tep4-8k1k" - +name: "minimax-m3-vllm-disagg-b300-3p1d-tp1-tp4-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" + container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" precision: "fp4" - resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 - decode_nodes: 1 - prefill_workers: 4 - decode_workers: 2 - gpus_per_prefill: 2 + decode_nodes: 0 + prefill_workers: 3 + decode_workers: 1 + gpus_per_prefill: 1 gpus_per_decode: 4 - dynamo: install: true version: 1.3.0.dev20260614 - frontend: type: dynamo enable_multiple_frontends: false - backend: type: vllm - connector: null - + 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 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -52,13 +43,12 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - + enforce-eager: true + max-num-batched-tokens: 8192 decode: no-enable-flashinfer-autotune: true tensor-parallel-size: 4 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -69,17 +59,15 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-num-seqs: 1024 + max-num-seqs: 512 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" + concurrencies: "256" req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-dep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-dep8-8k1k.yaml deleted file mode 100644 index 73473aac94..0000000000 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-dep8-8k1k.yaml +++ /dev/null @@ -1,87 +0,0 @@ -name: "minimax-m3-vllm-disagg-b300-4p2d-fp4-dep2-dep8-8k1k" - -model: - path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" - precision: "fp4" - -resources: - gpu_type: "b300" - gpus_per_node: 8 - prefill_nodes: 1 - decode_nodes: 2 - prefill_workers: 4 - decode_workers: 2 - gpus_per_prefill: 2 - gpus_per_decode: 8 - -dynamo: - install: true - version: 1.3.0.dev20260614 - -frontend: - type: dynamo - enable_multiple_frontends: false - -backend: - type: vllm - connector: null - - 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 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - 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-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - - decode: - no-enable-flashinfer-autotune: true - 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 - 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 # Per DP rank: 2 workers x DP8 = 16 ranks. - 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/2p2d-dep2-dep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml similarity index 82% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-dep8-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml index c49fd1ccbf..08ece8ea99 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-dep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml @@ -1,47 +1,37 @@ -name: "minimax-m3-vllm-disagg-b300-2p2d-fp4-dep2-dep8-8k1k" - +name: "minimax-m3-vllm-disagg-b300-5p2d-tp1-dep8-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" + container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" precision: "fp4" - resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 decode_nodes: 2 - prefill_workers: 2 + prefill_workers: 5 decode_workers: 2 - gpus_per_prefill: 2 + gpus_per_prefill: 1 gpus_per_decode: 8 - dynamo: install: true version: 1.3.0.dev20260614 - frontend: type: dynamo enable_multiple_frontends: false - backend: type: vllm - connector: null - + connector: 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 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -52,9 +42,8 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - + enforce-eager: true + max-num-batched-tokens: 8192 decode: no-enable-flashinfer-autotune: true tensor-parallel-size: 1 @@ -74,14 +63,12 @@ backend: 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: "256x512" + concurrencies: "512" req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-tep8-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml similarity index 82% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-tep8-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml index 1b8dfd627f..fa19dff843 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-tep8-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml @@ -1,47 +1,37 @@ -name: "minimax-m3-vllm-disagg-b300-2p2d-fp4-dep2-tep8-8k1k" - +name: "minimax-m3-vllm-disagg-b300-8p2d-tp1-dep8-fp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" + container: "vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1" precision: "fp4" - resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 decode_nodes: 2 - prefill_workers: 2 + prefill_workers: 8 decode_workers: 2 - gpus_per_prefill: 2 + gpus_per_prefill: 1 gpus_per_decode: 8 - dynamo: install: true version: 1.3.0.dev20260614 - frontend: type: dynamo enable_multiple_frontends: false - backend: type: vllm - connector: null - + connector: 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 - data-parallel-size: 2 - data-parallel-rpc-port: 13345 - enable-expert-parallel: true + enable-expert-parallel: false trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -52,12 +42,13 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - max-cudagraph-capture-size: 2048 - max-num-batched-tokens: 16384 - + enforce-eager: true + max-num-batched-tokens: 8192 decode: no-enable-flashinfer-autotune: true - tensor-parallel-size: 8 + 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 @@ -72,14 +63,12 @@ backend: 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: "16" + concurrencies: "768x1024" req_rate: "inf" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index bdb6a46029..89a4712c5f 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -11957,113 +11957,100 @@ minimaxm3-fp4-b300-dynamo-vllm: tp: 8 ep: 8 dp-attn: false +# MiniMax-M3 NVFP4 B300 8k1k disagg sweep with TP1 prefill. This is separate +# from the legacy entry above so updating the 8k1k frontier does not rerun 1k1k. +minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1: + image: vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1 + model: nvidia/MiniMax-M3-NVFP4 + model-prefix: minimaxm3 + runner: b300 + precision: fp4 + framework: dynamo-vllm + multinode: true + disagg: true + scenarios: + fixed-seq-len: - isl: 8192 osl: 1024 search-space: - - conc-list: [256, 512] + - conc-list: [8, 16, 24, 32, 48, 64] prefill: - num-worker: 2 - tp: 2 - ep: 2 - dp-attn: true + num-worker: 1 + tp: 1 + ep: 1 + dp-attn: false additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-dep8-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp4-8k1k.yaml" decode: - num-worker: 2 - tp: 8 - ep: 8 - dp-attn: true - - conc-list: [16] + num-worker: 1 + tp: 4 + ep: 1 + dp-attn: false + - conc-list: [1, 2, 4, 8, 16] prefill: - num-worker: 2 - tp: 2 - ep: 2 - dp-attn: true + num-worker: 1 + tp: 1 + ep: 1 + dp-attn: false additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/2p2d-dep2-tep8-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-tp1-tp8-8k1k.yaml" decode: - num-worker: 2 + num-worker: 1 tp: 8 - ep: 8 + ep: 1 dp-attn: false - - conc-list: [4096] + - conc-list: [128] prefill: - num-worker: 4 - tp: 2 - ep: 2 - dp-attn: true - additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-dep8-8k1k.yaml" - decode: num-worker: 2 - tp: 8 - ep: 8 - dp-attn: true - - conc-list: [1, 4, 8, 16] - prefill: - num-worker: 1 - tp: 2 - ep: 2 - dp-attn: true + tp: 1 + ep: 1 + dp-attn: false additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/2p1d-tp1-tp4-8k1k.yaml" decode: num-worker: 1 tp: 4 ep: 1 dp-attn: false - - conc-list: [4096] + - conc-list: [256] prefill: - num-worker: 4 - tp: 2 - ep: 2 - dp-attn: true - additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml" - decode: - num-worker: 2 - tp: 4 - ep: 4 + num-worker: 3 + tp: 1 + ep: 1 dp-attn: false - - conc-list: [16, 32, 64, 128] - prefill: - num-worker: 1 - tp: 2 - ep: 2 - dp-attn: true additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml" decode: - num-worker: 4 + num-worker: 1 tp: 4 - ep: 4 + ep: 1 dp-attn: false - - conc-list: [16] + - conc-list: [512] prefill: - num-worker: 1 - tp: 2 - ep: 2 - dp-attn: true + num-worker: 5 + tp: 1 + ep: 1 + dp-attn: false additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/1p2d-dep2-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml" decode: num-worker: 2 - tp: 4 - ep: 4 - dp-attn: false - - conc-list: [4] - prefill: - num-worker: 1 - tp: 2 - ep: 2 + tp: 8 + ep: 8 dp-attn: true + - conc-list: [768, 1024] + prefill: + num-worker: 8 + tp: 1 + ep: 1 + dp-attn: false additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/1p4d-dep2-tep8-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml" decode: - num-worker: 4 + num-worker: 2 tp: 8 ep: 8 - dp-attn: false + dp-attn: true # MiniMax-M3 GB300 disagg sweep — refreshed recipe set (no Marlin variants). # All prefill DEP2 (TP1 DP2 EP, 2 GPU/worker). Decode: DEP4, TEP8, DEP8, TEP4. diff --git a/runners/launch_b300-nv.sh b/runners/launch_b300-nv.sh index d8b3e3d86e..24061a275a 100644 --- a/runners/launch_b300-nv.sh +++ b/runners/launch_b300-nv.sh @@ -76,6 +76,12 @@ elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "dsv4" ]]; then git checkout aflowers/vllm-gb200-v0.20.0 mkdir -p recipes/vllm/deepseek-v4 cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/deepseek-v4" recipes/vllm/deepseek-v4 +elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp4" && "$CONFIG_FILE" == recipes/vllm/minimax-m3/b300-fp4/8k1k/*-tp1-*.yaml ]]; then + git clone https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR" + cd "$SRT_REPO_DIR" || exit 1 + git checkout c1fb6989fc5aca803b4ca0f2d17d8be85fad9732 + mkdir -p recipes/vllm/minimax-m3 + cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3" recipes/vllm/minimax-m3 elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && ( $PRECISION == "fp4" || $PRECISION == "fp8" ) ]]; then git clone https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR" cd "$SRT_REPO_DIR" || exit 1 From f628a2e28afa7264a6ca8bc30f08bf0a3c48e37e Mon Sep 17 00:00:00 2001 From: "Jason Li (Engrg-Hardware 1)" Date: Mon, 13 Jul 2026 17:49:40 -0700 Subject: [PATCH 2/5] chore: trigger MiniMax M3 8k1k sweep --- perf-changelog.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 3944e67c5f..36a3abf9bc 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4433,3 +4433,11 @@ - "Add --online_quant_config with ptpc_fp8 and MoE layer exclusions (*block_sparse_moe) to all scripts." - "Replace deprecated AITER_QUICK_REDUCE_CAST_BF16_TO_FP16=0 and ATOM_M3_SPARSE_USE_ASM_PA=1 with ATOM_FORCE_ATTN_TRITON=1." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2001 + +- config-keys: + - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1 + description: + - "Replace the MiniMax-M3 NVFP4 B300 8k1k Dynamo-vLLM disaggregated DEP2-prefill sweep with TP1-prefill recipes; retain the existing 1k1k sweep unchanged." + - "Use vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1 and pin NVIDIA/srt-slurm at c1fb6989fc5aca803b4ca0f2d17d8be85fad9732." + - "Sweep TP4, TP8, and DEP8 decode topologies from concurrency 1 through 1024, with one-node prefill/decode colocation where the worker GPUs fit." + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2184 From 8840ef6b1210bfb8402781b890b409d7ba97e9de Mon Sep 17 00:00:00 2001 From: "Jason Li (Engrg-Hardware 1)" Date: Mon, 13 Jul 2026 18:28:25 -0700 Subject: [PATCH 3/5] fix: skip login-host preflight for MiniMax TP1 sweep --- runners/launch_b300-nv.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/runners/launch_b300-nv.sh b/runners/launch_b300-nv.sh index 97498cb0d0..be9ff2410e 100644 --- a/runners/launch_b300-nv.sh +++ b/runners/launch_b300-nv.sh @@ -187,6 +187,14 @@ SRTCTL_APPLY_ARGS=( -f "$CONFIG_FILE" --tags "b300,${MODEL_PREFIX},${PRECISION},${ISL}x${OSL},infmax-$(date +%Y%m%d)" ) +# The TP1 8k1k recipes use a newer srt-slurm revision whose preflight checks +# model.path on this GHA login host. MiniMax-M3 NVFP4 is intentionally staged +# under compute-node-local /scratch (as in the original B300 submission), so +# the login host cannot stat it even though workers can. Keep this bypass +# scoped to the new recipe set; runtime model loading still validates the path. +if [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp4" && "$CONFIG_FILE" == recipes/vllm/minimax-m3/b300-fp4/8k1k/*-tp1-*.yaml ]]; then + SRTCTL_APPLY_ARGS+=(--no-preflight) +fi if [[ -n "$SRTCTL_SETUP_SCRIPT" ]]; then SRTCTL_APPLY_ARGS+=(--setup-script "$SRTCTL_SETUP_SCRIPT") fi From 5b0d83bdc1c97e5bd125b5c9fad55490f1d91c94 Mon Sep 17 00:00:00 2001 From: "Jason Li (Engrg-Hardware 1)" Date: Tue, 14 Jul 2026 11:18:11 -0700 Subject: [PATCH 4/5] perf: add MiniMax TP1 TEP4 throughput point MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the B300 8P2D TP1-prefill/TEP4-decode 8k1k recipe at concurrency 2048, pinned to the validated newer vLLM nightly and Dynamo 1.3.0.dev20260713.\n\n中文:新增 B300 8P2D TP1 预填充/TEP4 解码的 8k1k 配置,仅测试并发 2048,并固定到已验证的新 vLLM nightly 与 Dynamo 1.3.0.dev20260713。 --- .../b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml | 72 +++++++++++++++++++ configs/nvidia-master.yaml | 32 +++++++++ perf-changelog.yaml | 2 + 3 files changed, 106 insertions(+) create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml new file mode 100644 index 0000000000..0ebffe4d11 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml @@ -0,0 +1,72 @@ +name: "minimax-m3-vllm-disagg-b300-8p2d-tp1-tep4-fp4-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-515d6e9" + precision: "fp4" +resources: + gpu_type: "b300" + gpus_per_node: 8 + prefill_nodes: 1 + decode_nodes: 1 + prefill_workers: 8 + decode_workers: 2 + 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: + 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: "2048" + req_rate: "inf" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 45a1ced27d..563239f7c6 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -13151,6 +13151,38 @@ minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1: ep: 8 dp-attn: true +# The TEP4 max-throughput point requires the newer vLLM nightly that fixes this +# topology, so keep it in a separate config from the curve above. +minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4: + image: vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-515d6e9 + 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: [2048] + prefill: + num-worker: 8 + tp: 1 + ep: 1 + dp-attn: false + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml" + decode: + num-worker: 2 + tp: 4 + ep: 4 + dp-attn: false + # MiniMax-M3 GB300 disagg sweep — refreshed recipe set (no Marlin variants). # All prefill DEP2 (TP1 DP2 EP, 2 GPU/worker). Decode: DEP4, TEP8, DEP8, TEP4. # 4 GPU/node (GB300 NVL72). kv-cache-dtype=fp8. srun_options mem=0 required. diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 43bc8aad66..e98619fb59 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4783,8 +4783,10 @@ pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2198 - config-keys: - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1 + - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4 description: - "Replace the MiniMax-M3 NVFP4 B300 8k1k Dynamo-vLLM disaggregated DEP2-prefill sweep with TP1-prefill recipes; retain the existing 1k1k sweep unchanged." - "Use vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1 with Dynamo 1.3.0.dev20260713, and pin NVIDIA/srt-slurm at c1fb6989fc5aca803b4ca0f2d17d8be85fad9732." - "Sweep TP4, TP8, and DEP8 decode topologies from concurrency 1 through 1024, with one-node prefill/decode colocation where the worker GPUs fit." + - "Add the 8P2D TP1-prefill/TEP4-decode max-throughput point at concurrency 2048 using vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-515d6e9." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2184 From 30be934787b337bba8ef5f30bce5fb896dd616ea Mon Sep 17 00:00:00 2001 From: "Jason Li (Engrg-Hardware 1)" Date: Tue, 14 Jul 2026 11:26:23 -0700 Subject: [PATCH 5/5] perf: preserve MiniMax max-throughput point MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restore the proven 4P2D DEP2-prefill/TEP4-decode concurrency-4096 recipe exactly as previously submitted, in an 8k1k-only config that avoids rerunning 1k1k. Remove the experimental TP1/TEP4 concurrency-2048 replacement.\n\n中文:原样恢复已验证的 4P2D DEP2 预填充/TEP4 解码并发 4096 配置,并将其放入仅含 8k1k 的独立配置,避免重新运行 1k1k;移除实验性的 TP1/TEP4 并发 2048 替代配置。 --- ...ep4-8k1k.yaml => 4p2d-dep2-tep4-8k1k.yaml} | 33 +++++++++++++------ configs/nvidia-master.yaml | 22 ++++++------- perf-changelog.yaml | 6 ++-- 3 files changed, 37 insertions(+), 24 deletions(-) rename benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/{8p2d-tp1-tep4-8k1k.yaml => 4p2d-dep2-tep4-8k1k.yaml} (80%) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml similarity index 80% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml index 0ebffe4d11..23c99d3282 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml @@ -1,37 +1,47 @@ -name: "minimax-m3-vllm-disagg-b300-8p2d-tp1-tep4-fp4-8k1k" +name: "minimax-m3-vllm-disagg-b300-4p2d-fp4-dep2-tep4-8k1k" + model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-515d6e9" + container: "vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41" precision: "fp4" + resources: gpu_type: "b300" gpus_per_node: 8 prefill_nodes: 1 decode_nodes: 1 - prefill_workers: 8 + prefill_workers: 4 decode_workers: 2 - gpus_per_prefill: 1 + gpus_per_prefill: 2 gpus_per_decode: 4 + dynamo: install: true - version: 1.3.0.dev20260713 + version: 1.3.0.dev20260614 + frontend: type: dynamo enable_multiple_frontends: false + backend: type: vllm - connector: + connector: null + 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 + data-parallel-size: 2 + data-parallel-rpc-port: 13345 + enable-expert-parallel: true trust-remote-code: true no-enable-prefix-caching: true kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' @@ -42,8 +52,9 @@ backend: max-model-len: 9472 language-model-only: true stream-interval: 32 - enforce-eager: true - max-num-batched-tokens: 8192 + max-cudagraph-capture-size: 2048 + max-num-batched-tokens: 16384 + decode: no-enable-flashinfer-autotune: true tensor-parallel-size: 4 @@ -61,12 +72,14 @@ backend: 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: "2048" + concurrencies: "4096" req_rate: "inf" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 563239f7c6..eda73b21ba 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -13151,16 +13151,16 @@ minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1: ep: 8 dp-attn: true -# The TEP4 max-throughput point requires the newer vLLM nightly that fixes this -# topology, so keep it in a separate config from the curve above. -minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4: - image: vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-515d6e9 +# 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: + image: vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41 model: nvidia/MiniMax-M3-NVFP4 model-prefix: minimaxm3 runner: b300 precision: fp4 framework: dynamo-vllm - router: { name: dynamo-router, version: "1.3.0.dev20260713" } + router: { name: dynamo-router, version: "1.3.0.dev20260614" } kv-p2p-transfer: nixl multinode: true disagg: true @@ -13169,14 +13169,14 @@ minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4: - isl: 8192 osl: 1024 search-space: - - conc-list: [2048] + - conc-list: [4096] prefill: - num-worker: 8 - tp: 1 - ep: 1 - dp-attn: false + num-worker: 4 + tp: 2 + ep: 2 + dp-attn: true additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml" decode: num-worker: 2 tp: 4 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index e98619fb59..845f62f71f 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4783,10 +4783,10 @@ pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2198 - config-keys: - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1 - - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1-tep4 + - minimaxm3-fp4-b300-dynamo-vllm-8k1k-legacy-max-tput description: - - "Replace the MiniMax-M3 NVFP4 B300 8k1k Dynamo-vLLM disaggregated DEP2-prefill sweep with TP1-prefill recipes; retain the existing 1k1k sweep unchanged." + - "Replace the MiniMax-M3 NVFP4 B300 8k1k Dynamo-vLLM disaggregated DEP2-prefill sweep with TP1-prefill recipes, while preserving the exact prior max-throughput point; retain the existing 1k1k sweep unchanged." - "Use vllm/vllm-openai:nightly-2dfaae752b4db0d43cfc0715c780e33be030d0f1 with Dynamo 1.3.0.dev20260713, and pin NVIDIA/srt-slurm at c1fb6989fc5aca803b4ca0f2d17d8be85fad9732." - "Sweep TP4, TP8, and DEP8 decode topologies from concurrency 1 through 1024, with one-node prefill/decode colocation where the worker GPUs fit." - - "Add the 8P2D TP1-prefill/TEP4-decode max-throughput point at concurrency 2048 using vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-515d6e9." + - "Retain the proven 4P2D DEP2-prefill/TEP4-decode concurrency-4096 point unchanged on vllm/vllm-openai:vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41 and Dynamo 1.3.0.dev20260614." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2184