From e2e69c4fdfd6c1da7008b89c96ff8ebdec17180f Mon Sep 17 00:00:00 2001 From: Xin Li Date: Sat, 18 Jul 2026 11:47:43 -0400 Subject: [PATCH 1/9] feat(minimaxm3): add B200 spread-worker CI configs --- .../8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml | 62 +++++++++ .../b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml | 127 ++++++++++++++++++ .../8k1k/2p2d-dep2-tp4-c128-8k1k.yaml | 127 ++++++++++++++++++ .../8k1k/3p2d-dep2-tp4-c256-8k1k.yaml | 127 ++++++++++++++++++ .../8k1k/3p2d-dep2-tp4-c512-8k1k.yaml | 127 ++++++++++++++++++ .../8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml | 127 ++++++++++++++++++ configs/nvidia-master.yaml | 95 +++++++++++++ perf-changelog.yaml | 8 ++ runners/launch_b200-dgxc.sh | 10 +- 9 files changed, 808 insertions(+), 2 deletions(-) create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml new file mode 100644 index 0000000000..cd954e5124 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml @@ -0,0 +1,62 @@ +name: "minimax-m3-vllm-disagg-b200-1p1d-fp4-dep2-tp4-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + precision: "fp4" +resources: + gpu_type: "b200" + 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.dev20260710} +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: + served-model-name: nvidia/MiniMax-M3-NVFP4 + 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: + served-model-name: nvidia/MiniMax-M3-NVFP4 + 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, random_range_ratio: 0.8, concurrencies: "1x4x8x16", req_rate: "inf"} diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml new file mode 100644 index 0000000000..f326344be7 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml @@ -0,0 +1,127 @@ +name: "minimax-m3-vllm-disagg-b200-1p2d-fp4-dep2-tp4-c64-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + precision: "fp4" +resources: + gpu_type: "b200" + prefill_nodes: 1 + prefill_workers: 1 + gpus_per_prefill: 2 + decode_nodes: 2 + decode_workers: 2 + spread_workers: true + gpus_per_decode: 4 + gpus_per_node: 8 +dynamo: {install: true, version: 1.3.0.dev20260710} +frontend: + type: dynamo + enable_multiple_frontends: false + args: + dyn-chat-processor: vllm + reasoning-parser: minimax_m3 +backend: + type: vllm + connector: null + prefill_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + decode_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_MOE_DP_CHUNK_SIZE: '384' + VLLM_SHARED_EXPERTS_STREAM_TOKEN_THRESHOLD: '8192' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + vllm_config: + prefill: + tensor-parallel-size: 1 + pipeline-parallel-size: 1 + enable-expert-parallel: true + data-parallel-size: 2 + data-parallel-rpc-port: 13345 + data-parallel-hybrid-lb: true + max-model-len: 9472 + max-num-seqs: 16 + enforce-eager: true + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + no-enable-chunked-prefill: true + kv-cache-dtype: fp8 + async-scheduling: true + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true + stream-interval: 32 + max-cudagraph-capture-size: 2048 + decode: + tensor-parallel-size: 4 + pipeline-parallel-size: 1 + enable-expert-parallel: false + max-model-len: 9472 + max-num-seqs: 32 + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + max-cudagraph-capture-size: 2048 + compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","custom_ops":["+rms_norm"],"pass_config":{}}' + kv-cache-dtype: fp8 + all2all-backend: deepep_low_latency + async-scheduling: true + stream-interval: 32 + enable-dbo: true + dbo-decode-token-threshold: 32 + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true +health_check: {max_attempts: 360, interval_seconds: 10} +benchmark: + type: "sa-bench" + isl: 8192 + osl: 1024 + random_range_ratio: 0.8 + concurrencies: "64" + req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml new file mode 100644 index 0000000000..6abfca3447 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml @@ -0,0 +1,127 @@ +name: "minimax-m3-vllm-disagg-b200-2p2d-fp4-dep2-tp4-c128-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + precision: "fp4" +resources: + gpu_type: "b200" + prefill_nodes: 1 + prefill_workers: 2 + gpus_per_prefill: 2 + decode_nodes: 2 + decode_workers: 2 + spread_workers: true + gpus_per_decode: 4 + gpus_per_node: 8 +dynamo: {install: true, version: 1.3.0.dev20260710} +frontend: + type: dynamo + enable_multiple_frontends: false + args: + dyn-chat-processor: vllm + reasoning-parser: minimax_m3 +backend: + type: vllm + connector: null + prefill_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + decode_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_MOE_DP_CHUNK_SIZE: '384' + VLLM_SHARED_EXPERTS_STREAM_TOKEN_THRESHOLD: '8192' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + vllm_config: + prefill: + tensor-parallel-size: 1 + pipeline-parallel-size: 1 + enable-expert-parallel: true + data-parallel-size: 2 + data-parallel-rpc-port: 13345 + data-parallel-hybrid-lb: true + max-model-len: 9472 + max-num-seqs: 16 + enforce-eager: true + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + no-enable-chunked-prefill: true + kv-cache-dtype: fp8 + async-scheduling: true + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true + stream-interval: 32 + max-cudagraph-capture-size: 2048 + decode: + tensor-parallel-size: 4 + pipeline-parallel-size: 1 + enable-expert-parallel: false + max-model-len: 9472 + max-num-seqs: 64 + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + max-cudagraph-capture-size: 2048 + compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","custom_ops":["+rms_norm"],"pass_config":{}}' + kv-cache-dtype: fp8 + all2all-backend: deepep_low_latency + async-scheduling: true + stream-interval: 32 + enable-dbo: true + dbo-decode-token-threshold: 32 + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true +health_check: {max_attempts: 360, interval_seconds: 10} +benchmark: + type: "sa-bench" + isl: 8192 + osl: 1024 + random_range_ratio: 0.8 + concurrencies: "128" + req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml new file mode 100644 index 0000000000..a0d8ff18c9 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml @@ -0,0 +1,127 @@ +name: "minimax-m3-vllm-disagg-b200-3p2d-fp4-dep2-tp4-c256-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + precision: "fp4" +resources: + gpu_type: "b200" + prefill_nodes: 1 + prefill_workers: 3 + gpus_per_prefill: 2 + decode_nodes: 2 + decode_workers: 2 + spread_workers: true + gpus_per_decode: 4 + gpus_per_node: 8 +dynamo: {install: true, version: 1.3.0.dev20260710} +frontend: + type: dynamo + enable_multiple_frontends: false + args: + dyn-chat-processor: vllm + reasoning-parser: minimax_m3 +backend: + type: vllm + connector: null + prefill_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + decode_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_MOE_DP_CHUNK_SIZE: '384' + VLLM_SHARED_EXPERTS_STREAM_TOKEN_THRESHOLD: '8192' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + vllm_config: + prefill: + tensor-parallel-size: 1 + pipeline-parallel-size: 1 + enable-expert-parallel: true + data-parallel-size: 2 + data-parallel-rpc-port: 13345 + data-parallel-hybrid-lb: true + max-model-len: 9472 + max-num-seqs: 16 + enforce-eager: true + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + no-enable-chunked-prefill: true + kv-cache-dtype: fp8 + async-scheduling: true + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true + stream-interval: 32 + max-cudagraph-capture-size: 2048 + decode: + tensor-parallel-size: 4 + pipeline-parallel-size: 1 + enable-expert-parallel: false + max-model-len: 9472 + max-num-seqs: 128 + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + max-cudagraph-capture-size: 2048 + compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","custom_ops":["+rms_norm"],"pass_config":{}}' + kv-cache-dtype: fp8 + all2all-backend: deepep_low_latency + async-scheduling: true + stream-interval: 32 + enable-dbo: true + dbo-decode-token-threshold: 32 + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true +health_check: {max_attempts: 360, interval_seconds: 10} +benchmark: + type: "sa-bench" + isl: 8192 + osl: 1024 + random_range_ratio: 0.8 + concurrencies: "256" + req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml new file mode 100644 index 0000000000..eb9705f776 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml @@ -0,0 +1,127 @@ +name: "minimax-m3-vllm-disagg-b200-3p2d-fp4-dep2-tp4-c512-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + precision: "fp4" +resources: + gpu_type: "b200" + prefill_nodes: 1 + prefill_workers: 3 + gpus_per_prefill: 2 + decode_nodes: 2 + decode_workers: 2 + spread_workers: true + gpus_per_decode: 4 + gpus_per_node: 8 +dynamo: {install: true, version: 1.3.0.dev20260710} +frontend: + type: dynamo + enable_multiple_frontends: false + args: + dyn-chat-processor: vllm + reasoning-parser: minimax_m3 +backend: + type: vllm + connector: null + prefill_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + decode_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_MOE_DP_CHUNK_SIZE: '384' + VLLM_SHARED_EXPERTS_STREAM_TOKEN_THRESHOLD: '8192' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + vllm_config: + prefill: + tensor-parallel-size: 1 + pipeline-parallel-size: 1 + enable-expert-parallel: true + data-parallel-size: 2 + data-parallel-rpc-port: 13345 + data-parallel-hybrid-lb: true + max-model-len: 9472 + max-num-seqs: 16 + enforce-eager: true + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + no-enable-chunked-prefill: true + kv-cache-dtype: fp8 + async-scheduling: true + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true + stream-interval: 32 + max-cudagraph-capture-size: 2048 + decode: + tensor-parallel-size: 4 + pipeline-parallel-size: 1 + enable-expert-parallel: false + max-model-len: 9472 + max-num-seqs: 256 + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + max-cudagraph-capture-size: 2048 + compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","custom_ops":["+rms_norm"],"pass_config":{}}' + kv-cache-dtype: fp8 + all2all-backend: deepep_low_latency + async-scheduling: true + stream-interval: 32 + enable-dbo: true + dbo-decode-token-threshold: 32 + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true +health_check: {max_attempts: 360, interval_seconds: 10} +benchmark: + type: "sa-bench" + isl: 8192 + osl: 1024 + random_range_ratio: 0.8 + concurrencies: "512" + req_rate: "inf" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml new file mode 100644 index 0000000000..8f43fdf977 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml @@ -0,0 +1,127 @@ +name: "minimax-m3-vllm-disagg-b200-4p2d-fp4-dep2-tp4-c1024-8k1k" +model: + path: "nvidia/MiniMax-M3-NVFP4" + container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + precision: "fp4" +resources: + gpu_type: "b200" + prefill_nodes: 2 + prefill_workers: 4 + gpus_per_prefill: 2 + decode_nodes: 2 + decode_workers: 2 + spread_workers: true + gpus_per_decode: 4 + gpus_per_node: 8 +dynamo: {install: true, version: 1.3.0.dev20260710} +frontend: + type: dynamo + enable_multiple_frontends: false + args: + dyn-chat-processor: vllm + reasoning-parser: minimax_m3 +backend: + type: vllm + connector: null + prefill_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + decode_environment: + VLLM_USE_DEEP_GEMM: '1' + VLLM_SKIP_P2P_CHECK: '1' + VLLM_RANDOMIZE_DP_DUMMY_INPUTS: '1' + NVIDIA_GDRCOPY: '1' + PYTHONUNBUFFERED: '1' + VLLM_LOG_STATS_INTERVAL: '1' + NVSHMEM_IB_ENABLE_IBGDA: '1' + NCCL_CUMEM_ENABLE: '1' + NCCL_MNNVL_ENABLE: '1' + NCCL_NVLS_ENABLE: '1' + NCCL_TIMEOUT: '1800' + TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC: '1800' + VLLM_USE_FLASHINFER_MOE_FP4: '1' + VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' + VLLM_USE_NCCL_SYMM_MEM: '1' + UCX_IB_ROCE_REACHABILITY_MODE: local_subnet + VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' + VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' + VLLM_MOE_DP_CHUNK_SIZE: '384' + VLLM_SHARED_EXPERTS_STREAM_TOKEN_THRESHOLD: '8192' + VLLM_FLOAT32_MATMUL_PRECISION: high + UCX_TLS: cuda_ipc,cuda_copy,rc + vllm_config: + prefill: + tensor-parallel-size: 1 + pipeline-parallel-size: 1 + enable-expert-parallel: true + data-parallel-size: 2 + data-parallel-rpc-port: 13345 + data-parallel-hybrid-lb: true + max-model-len: 9472 + max-num-seqs: 16 + enforce-eager: true + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + no-enable-chunked-prefill: true + kv-cache-dtype: fp8 + async-scheduling: true + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true + stream-interval: 32 + max-cudagraph-capture-size: 2048 + decode: + tensor-parallel-size: 4 + pipeline-parallel-size: 1 + enable-expert-parallel: false + max-model-len: 9472 + max-num-seqs: 512 + gpu-memory-utilization: 0.9 + max-num-batched-tokens: 16384 + max-cudagraph-capture-size: 2048 + compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","custom_ops":["+rms_norm"],"pass_config":{}}' + kv-cache-dtype: fp8 + all2all-backend: deepep_low_latency + async-scheduling: true + stream-interval: 32 + enable-dbo: true + dbo-decode-token-threshold: 32 + no-enable-prefix-caching: true + trust-remote-code: true + served-model-name: nvidia/MiniMax-M3-NVFP4 + no-enable-flashinfer-autotune: true + kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}' + attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}' + block-size: 128 + language-model-only: true +health_check: {max_attempts: 360, interval_seconds: 10} +benchmark: + type: "sa-bench" + isl: 8192 + osl: 1024 + random_range_ratio: 0.8 + concurrencies: "1024" + req_rate: "inf" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 3aac1b8378..6fade36f6c 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -6445,6 +6445,101 @@ qwen3.5-fp8-h100-sglang-agentic: - { tp: 8, ep: 8, kv-offloading: none, conc-list: [1, 2, 4, 8, 12, 14, 16] } - { tp: 8, ep: 8, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [12, 14, 16, 20, 24, 28, 32, 42] } +minimaxm3-fp4-b200-dynamo-vllm: + image: vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2 + model: nvidia/MiniMax-M3-NVFP4 + model-prefix: minimaxm3 + runner: b200-multinode + precision: fp4 + framework: dynamo-vllm + router: { name: dynamo-router, version: "1.3.0.dev20260710" } + kv-p2p-transfer: nixl + multinode: true + disagg: true + scenarios: + fixed-seq-len: + - isl: 8192 + osl: 1024 + search-space: + - conc-list: [1, 4, 8, 16] + prefill: + num-worker: 1 + tp: 2 + ep: 2 + dp-attn: true + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml" + decode: + num-worker: 1 + tp: 4 + ep: 1 + dp-attn: false + - conc-list: [64] + prefill: + num-worker: 1 + tp: 2 + ep: 2 + dp-attn: true + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml" + decode: + num-worker: 2 + tp: 4 + ep: 1 + dp-attn: false + - conc-list: [128] + prefill: + num-worker: 2 + tp: 2 + ep: 2 + dp-attn: true + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml" + decode: + num-worker: 2 + tp: 4 + ep: 1 + dp-attn: false + - conc-list: [256] + prefill: + num-worker: 3 + tp: 2 + ep: 2 + dp-attn: true + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml" + decode: + num-worker: 2 + tp: 4 + ep: 1 + dp-attn: false + - conc-list: [512] + prefill: + num-worker: 3 + tp: 2 + ep: 2 + dp-attn: true + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml" + decode: + num-worker: 2 + tp: 4 + ep: 1 + dp-attn: false + - conc-list: [1024] + prefill: + num-worker: 4 + tp: 2 + ep: 2 + dp-attn: true + additional-settings: + - "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml" + decode: + num-worker: 2 + tp: 4 + ep: 1 + dp-attn: false + # MiniMax-M3 NVFP4 disagg sweep on the same B300 topology matrix as the MXFP8 # baseline above. The image includes vLLM PR #46380, so no runtime patch is # needed. diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 005967fc36..0df24385f1 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4966,3 +4966,11 @@ - "Run 29651235293 showed the 1M-context corpus working set outgrowing the HBM KV pool past conc 8 (TP8) / conc 64 (DP8): gpu_kv_cache_usage pinned at 1.0 and the radix hit rate collapsed from a ~0.97 theoretical ceiling to 0.04-0.06, so every post-knee turn re-prefilled its full history and throughput fell together with interactivity" - "HiCache spills evicted prefixes to host DRAM and restores them at C2C bandwidth instead of recomputing; sizing follows the qwen3.5-fp8-b300-sglang-agentic-hicache recipe (GLM-5.2 is plain GQA: one host pool per rank, GB-based --hicache-size)" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2280 + +- config-keys: + - minimaxm3-fp4-b200-dynamo-vllm + description: + - "Add MiniMax-M3 NVFP4 B200 Dynamo-vLLM disaggregated benchmarks at 8k/1k." + - "Use configurations from concurrency 1 through 1024 with spread worker placement for CI transport validation." + - "Image: vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2; Dynamo: 1.3.0.dev20260710." + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2230 diff --git a/runners/launch_b200-dgxc.sh b/runners/launch_b200-dgxc.sh index 58051e6405..23d7a1aa3a 100644 --- a/runners/launch_b200-dgxc.sh +++ b/runners/launch_b200-dgxc.sh @@ -69,9 +69,8 @@ elif [[ $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp8" ]]; then export MODEL_PATH="/lustre/fsw/gharunners/models/MiniMax-M3-MXFP8" export SRT_SLURM_MODEL_PREFIX="minimax-m3-mxfp8" elif [[ $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp4" ]]; then - # NVFP4 checkpoint, pre-staged on the b200-dgxc scratch tree. export MODEL_PATH="/scratch/fsw/models/MiniMax-M3-NVFP4" - export SRT_SLURM_MODEL_PREFIX="minimax-m3-nvfp4" + export SRT_SLURM_MODEL_PREFIX="nvidia/MiniMax-M3-NVFP4" else echo "Unsupported model prefix/precision: $MODEL_PREFIX/$PRECISION" echo "Available models under /lustre/fsw/models:" @@ -113,6 +112,13 @@ if [[ "$IS_MULTINODE" == "true" ]]; 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" ]]; then + git clone https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR" + cd "$SRT_REPO_DIR" || exit 1 + mkdir -p recipes/vllm/minimax-m3/b200-fp4 + cp -rT \ + "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4" \ + recipes/vllm/minimax-m3/b200-fp4 elif [[ $FRAMEWORK == "dynamo-sglang" && $MODEL_PREFIX == "glm5" && $PRECISION == "fp8" ]]; then git clone https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR" cd "$SRT_REPO_DIR" || exit 1 From 39266bb803f5a71c8de1d9a3bda677a485111ae2 Mon Sep 17 00:00:00 2001 From: Xin Li Date: Sun, 19 Jul 2026 17:48:37 -0400 Subject: [PATCH 2/9] fix(minimaxm3): reserve nodes for spread workers --- .../vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml | 2 +- .../vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml | 2 +- .../vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml | 2 +- .../vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml index 6abfca3447..11c0b1d978 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml @@ -5,7 +5,7 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 1 + prefill_nodes: 2 prefill_workers: 2 gpus_per_prefill: 2 decode_nodes: 2 diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml index a0d8ff18c9..dbdf8f1803 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml @@ -5,7 +5,7 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 1 + prefill_nodes: 3 prefill_workers: 3 gpus_per_prefill: 2 decode_nodes: 2 diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml index eb9705f776..59a4d0eca4 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml @@ -5,7 +5,7 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 1 + prefill_nodes: 3 prefill_workers: 3 gpus_per_prefill: 2 decode_nodes: 2 diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml index 8f43fdf977..9e18dfedad 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml @@ -5,7 +5,7 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 2 + prefill_nodes: 4 prefill_workers: 4 gpus_per_prefill: 2 decode_nodes: 2 From c7d8fe24b50168bfe7d37a8bb5b631ca5c4ea6cd Mon Sep 17 00:00:00 2001 From: Xin Li Date: Mon, 20 Jul 2026 19:54:27 -0400 Subject: [PATCH 3/9] feat(minimaxm3): use selective worker placement --- .../minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml | 3 ++- .../minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml | 5 +++-- .../minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml | 5 +++-- .../minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml | 5 +++-- .../minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml | 5 +++-- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml index f326344be7..307c1186f5 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml @@ -7,10 +7,11 @@ resources: gpu_type: "b200" prefill_nodes: 1 prefill_workers: 1 + prefill_workers_per_node: 1 gpus_per_prefill: 2 decode_nodes: 2 decode_workers: 2 - spread_workers: true + spread_decode_workers: true gpus_per_decode: 4 gpus_per_node: 8 dynamo: {install: true, version: 1.3.0.dev20260710} diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml index 11c0b1d978..cfd337defc 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml @@ -5,12 +5,13 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 2 + prefill_nodes: 1 prefill_workers: 2 + prefill_workers_per_node: 2 gpus_per_prefill: 2 decode_nodes: 2 decode_workers: 2 - spread_workers: true + spread_decode_workers: true gpus_per_decode: 4 gpus_per_node: 8 dynamo: {install: true, version: 1.3.0.dev20260710} diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml index dbdf8f1803..51429fe52b 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml @@ -5,12 +5,13 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 3 + prefill_nodes: 1 prefill_workers: 3 + prefill_workers_per_node: 3 gpus_per_prefill: 2 decode_nodes: 2 decode_workers: 2 - spread_workers: true + spread_decode_workers: true gpus_per_decode: 4 gpus_per_node: 8 dynamo: {install: true, version: 1.3.0.dev20260710} diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml index 59a4d0eca4..e3666df2f9 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml @@ -5,12 +5,13 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 3 + prefill_nodes: 1 prefill_workers: 3 + prefill_workers_per_node: 3 gpus_per_prefill: 2 decode_nodes: 2 decode_workers: 2 - spread_workers: true + spread_decode_workers: true gpus_per_decode: 4 gpus_per_node: 8 dynamo: {install: true, version: 1.3.0.dev20260710} diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml index 9e18dfedad..8fab07a8bf 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml @@ -5,12 +5,13 @@ model: precision: "fp4" resources: gpu_type: "b200" - prefill_nodes: 4 + prefill_nodes: 1 prefill_workers: 4 + prefill_workers_per_node: 4 gpus_per_prefill: 2 decode_nodes: 2 decode_workers: 2 - spread_workers: true + spread_decode_workers: true gpus_per_decode: 4 gpus_per_node: 8 dynamo: {install: true, version: 1.3.0.dev20260710} From 2d0622f6b9638ba61577d3935a8ddb79fa2829e3 Mon Sep 17 00:00:00 2001 From: Xin Li Date: Wed, 22 Jul 2026 10:22:18 -0400 Subject: [PATCH 4/9] new --- runners/launch_b200-dgxc.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/runners/launch_b200-dgxc.sh b/runners/launch_b200-dgxc.sh index 23d7a1aa3a..36115a9aeb 100644 --- a/runners/launch_b200-dgxc.sh +++ b/runners/launch_b200-dgxc.sh @@ -115,6 +115,7 @@ if [[ "$IS_MULTINODE" == "true" ]]; then elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp4" ]]; then git clone https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR" cd "$SRT_REPO_DIR" || exit 1 + git checkout srt-slurm-placement mkdir -p recipes/vllm/minimax-m3/b200-fp4 cp -rT \ "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4" \ From 462a7fe61a7a58c13eb5fd3d7e28eea2536f3f7c Mon Sep 17 00:00:00 2001 From: Xin Li Date: Thu, 23 Jul 2026 00:55:35 -0400 Subject: [PATCH 5/9] update ucx configs --- .../vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml | 2 -- .../vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml | 1 - .../vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml | 1 - .../vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml | 1 - .../vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml | 1 - 5 files changed, 6 deletions(-) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml index 307c1186f5..7fd45e6bed 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml @@ -40,7 +40,6 @@ backend: VLLM_USE_FLASHINFER_MOE_FP4: '1' VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' VLLM_USE_NCCL_SYMM_MEM: '1' - UCX_IB_ROCE_REACHABILITY_MODE: local_subnet VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' VLLM_FLOAT32_MATMUL_PRECISION: high @@ -61,7 +60,6 @@ backend: VLLM_USE_FLASHINFER_MOE_FP4: '1' VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' VLLM_USE_NCCL_SYMM_MEM: '1' - UCX_IB_ROCE_REACHABILITY_MODE: local_subnet VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' VLLM_MOE_DP_CHUNK_SIZE: '384' diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml index cfd337defc..e8d1bdbf44 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml @@ -40,7 +40,6 @@ backend: VLLM_USE_FLASHINFER_MOE_FP4: '1' VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' VLLM_USE_NCCL_SYMM_MEM: '1' - UCX_IB_ROCE_REACHABILITY_MODE: local_subnet VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' VLLM_FLOAT32_MATMUL_PRECISION: high diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml index 51429fe52b..ebbc213cd4 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml @@ -40,7 +40,6 @@ backend: VLLM_USE_FLASHINFER_MOE_FP4: '1' VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' VLLM_USE_NCCL_SYMM_MEM: '1' - UCX_IB_ROCE_REACHABILITY_MODE: local_subnet VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' VLLM_FLOAT32_MATMUL_PRECISION: high diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml index e3666df2f9..18e43705db 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml @@ -40,7 +40,6 @@ backend: VLLM_USE_FLASHINFER_MOE_FP4: '1' VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' VLLM_USE_NCCL_SYMM_MEM: '1' - UCX_IB_ROCE_REACHABILITY_MODE: local_subnet VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' VLLM_FLOAT32_MATMUL_PRECISION: high diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml index 8fab07a8bf..475f83b32d 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml @@ -40,7 +40,6 @@ backend: VLLM_USE_FLASHINFER_MOE_FP4: '1' VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: '0' VLLM_USE_NCCL_SYMM_MEM: '1' - UCX_IB_ROCE_REACHABILITY_MODE: local_subnet VLLM_NIXL_SIDE_CHANNEL_PORT: '5600' VLLM_NIXL_ABORT_REQUEST_TIMEOUT: '300' VLLM_FLOAT32_MATMUL_PRECISION: high From 706bdfdf991d7a597a37c3b269c29b20cb106580 Mon Sep 17 00:00:00 2001 From: Jason Li Date: Thu, 23 Jul 2026 08:42:28 -0700 Subject: [PATCH 6/9] perf(minimaxm3): refresh B200 disagg vLLM image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refresh the six non-speculative MiniMax-M3 NVFP4 B200 8k1k Dynamo-vLLM recipes while preserving their topology and sweep parameters. 中文:刷新六个非投机 MiniMax-M3 NVFP4 B200 8k1k Dynamo-vLLM 配置,并保持现有拓扑与扫描参数不变。 --- .../minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml | 2 +- .../minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml | 2 +- .../minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml | 2 +- .../minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml | 2 +- .../minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml | 2 +- .../minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml | 2 +- configs/nvidia-master.yaml | 2 +- perf-changelog.yaml | 6 ++++++ 8 files changed, 13 insertions(+), 7 deletions(-) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml index cd954e5124..4654fa5426 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p1d-dep2-tp4-c1-c16-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b200-1p1d-fp4-dep2-tp4-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b200" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml index 7fd45e6bed..5ac98657ba 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/1p2d-dep2-tp4-c64-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b200-1p2d-fp4-dep2-tp4-c64-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b200" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml index e8d1bdbf44..96c4432b69 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/2p2d-dep2-tp4-c128-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b200-2p2d-fp4-dep2-tp4-c128-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b200" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml index ebbc213cd4..414abd5365 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c256-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b200-3p2d-fp4-dep2-tp4-c256-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b200" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml index 18e43705db..caffc9a274 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/3p2d-dep2-tp4-c512-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b200-3p2d-fp4-dep2-tp4-c512-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b200" diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml index 475f83b32d..3ede8922ef 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/4p2d-dep2-tp4-c1024-8k1k.yaml @@ -1,7 +1,7 @@ name: "minimax-m3-vllm-disagg-b200-4p2d-fp4-dep2-tp4-c1024-8k1k" model: path: "nvidia/MiniMax-M3-NVFP4" - container: "vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2" + container: "vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9" precision: "fp4" resources: gpu_type: "b200" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 8777c586ad..8cfc8ad2df 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -6664,7 +6664,7 @@ qwen3.5-fp8-h100-sglang-agentic: - { tp: 8, ep: 8, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [12, 14, 16, 20, 24, 28, 32, 42] } minimaxm3-fp4-b200-dynamo-vllm: - image: vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2 + image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 model: nvidia/MiniMax-M3-NVFP4 model-prefix: minimaxm3 runner: b200-multinode diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 892f62c0fe..c8a4e85f7e 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5069,3 +5069,9 @@ - "Image: vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2; Dynamo: 1.3.0.dev20260710." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2230 +- config-keys: + - minimaxm3-fp4-b200-dynamo-vllm + description: + - "Refresh the six non-speculative MiniMax-M3 NVFP4 B200 8k1k disaggregated Dynamo-vLLM recipes from vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2 to vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9." + - "Keep the existing DEP2-prefill/TP4-decode topology, Dynamo version, and concurrency sweep unchanged." + pr-link: XXX From 50918c5d3d59e2218cfe4eaaed9e4ec0fd260508 Mon Sep 17 00:00:00 2001 From: Jason Li Date: Thu, 23 Jul 2026 08:44:04 -0700 Subject: [PATCH 7/9] chore: link B200 refresh changelog to PR 2311 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the temporary changelog placeholder with the canonical pull-request URL. 中文:将变更日志中的临时占位符替换为规范的 PR 链接。 --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index c8a4e85f7e..8b5b89c672 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5074,4 +5074,4 @@ description: - "Refresh the six non-speculative MiniMax-M3 NVFP4 B200 8k1k disaggregated Dynamo-vLLM recipes from vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2 to vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9." - "Keep the existing DEP2-prefill/TP4-decode topology, Dynamo version, and concurrency sweep unchanged." - pr-link: XXX + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2311 From 3a6e0ea3efab0d14f626227b4cd8504937b49542 Mon Sep 17 00:00:00 2001 From: Jason Li Date: Thu, 23 Jul 2026 08:47:33 -0700 Subject: [PATCH 8/9] chore: consolidate B200 refresh changelog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keep one canonical changelog entry for the main-based refresh PR so the sweep selects the B200 configuration once. 中文:为基于 main 的刷新 PR 保留一条规范的变更日志记录,确保扫描仅选择一次 B200 配置。 --- perf-changelog.yaml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 8b5b89c672..94c1751d2b 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5064,14 +5064,6 @@ - config-keys: - minimaxm3-fp4-b200-dynamo-vllm description: - - "Add MiniMax-M3 NVFP4 B200 Dynamo-vLLM disaggregated benchmarks at 8k/1k." - - "Use configurations from concurrency 1 through 1024 with spread worker placement for CI transport validation." - - "Image: vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2; Dynamo: 1.3.0.dev20260710." - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2230 - -- config-keys: - - minimaxm3-fp4-b200-dynamo-vllm - description: - - "Refresh the six non-speculative MiniMax-M3 NVFP4 B200 8k1k disaggregated Dynamo-vLLM recipes from vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2 to vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9." - - "Keep the existing DEP2-prefill/TP4-decode topology, Dynamo version, and concurrency sweep unchanged." + - "Add the six non-speculative MiniMax-M3 NVFP4 B200 8k1k disaggregated Dynamo-vLLM recipes from #2230 using vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 instead of vllm/vllm-openai:cu129-nightly-8e981630c9336233ca9de91452f68918bddbc4e2." + - "Preserve #2230's DEP2-prefill/TP4-decode topology, Dynamo version, and concurrency sweep unchanged." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2311 From ac29cc23e86b3db70842822be260f0d903158a9d Mon Sep 17 00:00:00 2001 From: Jason Li Date: Thu, 23 Jul 2026 08:48:14 -0700 Subject: [PATCH 9/9] style: normalize B200 changelog separator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove trailing whitespace from the newly added separator before the B200 refresh entry. 中文:移除 B200 刷新记录前新增分隔行中的尾随空格。 --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 94c1751d2b..f6344f22a2 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5060,7 +5060,7 @@ - "Re-pin VLLM_ROUTER_IMAGE to vllm/vllm-router:nightly-20260716-1fbcde7 (previous nightly-20260629-e667ebb was garbage-collected from Docker Hub)" - "Exclude known-bad nodes mia1-p01-g09,g14 from the disagg node pool" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2301 - + - config-keys: - minimaxm3-fp4-b200-dynamo-vllm description: