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 78% 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..ad0d248260 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 - + version: 1.3.0.dev20260713 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 75% 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..74e87048ca 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 - + version: 1.3.0.dev20260713 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 76% 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..cb966b1e7c 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 - + version: 1.3.0.dev20260713 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/1p1d-dep2-tp4-8k1k.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml similarity index 73% rename from benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml rename to benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml index be2683d0ca..3c6917dfa9 100644 --- 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/3p1d-tp1-tp4-8k1k.yaml @@ -1,48 +1,38 @@ -name: "minimax-m3-vllm-disagg-b300-1p1d-fp4-dep2-tp4-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: 1 + decode_nodes: 0 + prefill_workers: 3 decode_workers: 1 - gpus_per_prefill: 2 + gpus_per_prefill: 1 gpus_per_decode: 4 - dynamo: install: true - version: 1.3.0.dev20260614 - + version: 1.3.0.dev20260713 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_ipc,cuda_copy,rc" - + UCX_TLS: "cuda_copy,rc" decode_environment: VLLM_FLOAT32_MATMUL_PRECISION: high - UCX_TLS: "cuda_ipc,cuda_copy,rc" - + 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"}' @@ -53,9 +43,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: 4 @@ -70,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: 2048 - + max-cudagraph-capture-size: 4096 health_check: max_attempts: 360 interval_seconds: 10 - benchmark: type: "sa-bench" isl: 8192 osl: 1024 - concurrencies: "1x4x8x16" + 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 80% 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..2374f1b421 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 - + version: 1.3.0.dev20260713 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 80% 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..88c756e071 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 - + version: 1.3.0.dev20260713 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 73327351e1..eda73b21ba 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -13054,112 +13054,133 @@ 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 + 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: [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 + num-worker: 3 + tp: 1 + ep: 1 + dp-attn: false additional-settings: - - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/4p2d-dep2-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/3p1d-tp1-tp4-8k1k.yaml" decode: - num-worker: 2 + num-worker: 1 tp: 4 - ep: 4 + ep: 1 dp-attn: false - - conc-list: [16, 32, 64, 128] + - 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/1p4d-dep2-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/5p2d-tp1-dep8-8k1k.yaml" decode: - num-worker: 4 - tp: 4 - ep: 4 - dp-attn: false - - conc-list: [16] - prefill: - num-worker: 1 - tp: 2 - ep: 2 + num-worker: 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/1p2d-dep2-tep4-8k1k.yaml" + - "CONFIG_FILE=recipes/vllm/minimax-m3/b300-fp4/8k1k/8p2d-tp1-dep8-8k1k.yaml" decode: num-worker: 2 - tp: 4 - ep: 4 - dp-attn: false - - conc-list: [4] + tp: 8 + ep: 8 + dp-attn: true + +# 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.dev20260614" } + kv-p2p-transfer: nixl + multinode: true + disagg: true + scenarios: + fixed-seq-len: + - isl: 8192 + osl: 1024 + search-space: + - conc-list: [4096] prefill: - num-worker: 1 + num-worker: 4 tp: 2 ep: 2 dp-attn: true 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/4p2d-dep2-tep4-8k1k.yaml" decode: - num-worker: 4 - tp: 8 - ep: 8 + num-worker: 2 + tp: 4 + ep: 4 dp-attn: false # MiniMax-M3 GB300 disagg sweep — refreshed recipe set (no Marlin variants). diff --git a/perf-changelog.yaml b/perf-changelog.yaml index cd0320fa99..24edc89e4c 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4788,3 +4788,13 @@ - "Add EAGLE3 speculative-decoding arm for the Kimi K2.6 NVFP4 B300 AgentX recipe (draft lightseekorg/kimi-k2.6-eagle3-mla, TOKENSPEED_MLA attention backend with TRT-LLM ragged MLA kernel)." - "TP8/TP4 GPU-only KV points plus a TP4 native CPU-offload ladder via SimpleCPUOffloadConnector with lazy_offload off; TP4/DCP4 high-concurrency points (conc 32/64) using num_speculative_tokens=3 and synthetic_acceptance_length=2.88." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2222 + +- config-keys: + - minimaxm3-fp4-b300-dynamo-vllm-8k1k-tp1 + - 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, 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." + - "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 diff --git a/runners/launch_b300-nv.sh b/runners/launch_b300-nv.sh index 6810ee5d85..be9ff2410e 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 @@ -181,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