Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 185 additions & 0 deletions .github/configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12308,6 +12308,191 @@ qwen3.5-fp4-b200-trt:
- { tp: 4, ep: 4, dp-attn: true, conc-list: [1024] }
- { tp: 8, ep: 8, dp-attn: true, conc-list: [256, 512, 1024] }

# MiniMax-M3 GB200 disagg sweep — adapted from NV B300 PR #1863.
# All prefill DEP4 (TP1 DP4 EP, 4 GPU/worker). Decode: Marlin, TEP8, DEP8, TEP4.
# 4 GPU/node (GB200 NVL72). FLASHINFER attention with FP8 KV cache.
minimaxm3-fp8-gb200-dynamo-vllm:
image: vllm/vllm-openai:minimax-m3-perf-arm64-13.0.1-7a67223
model: MiniMaxAI/MiniMax-M3-MXFP8
model-prefix: minimaxm3
runner: gb200
precision: fp8
framework: dynamo-vllm
multinode: true
disagg: true
scenarios:
fixed-seq-len:
- isl: 1024
osl: 1024
search-space:
# 1p1d DEP4+DEP8, 3n: conc 1024,4096
- conc-list: [1024, 4096]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/1k1k/1p1d-dep4-dep8-1k1k.yaml"
decode:
num-worker: 1
tp: 8
ep: 8
dp-attn: true

# 1p1d DEP4+TEP8, 3n: conc 128,256
- conc-list: [128, 256]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/1k1k/1p1d-dep4-tep8-1k1k.yaml"
decode:
num-worker: 1
tp: 8
ep: 8
dp-attn: false

# 1p2d DEP4+DEP8, 5n: conc 1024,4096
- conc-list: [1024, 4096]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/1k1k/1p2d-dep4-dep8-1k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: true

# 1p2d DEP4+TEP8, 5n: conc 4,16,64
- conc-list: [4, 16, 64]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/1k1k/1p2d-dep4-tep8-1k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: false

# 1p4d DEP4+TP4 Marlin, 5n: conc 32
- conc-list: [32]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/1k1k/1p4d-dep4-tp4-marlin-1k1k.yaml"
decode:
num-worker: 4
tp: 4
ep: 1
dp-attn: false

- isl: 8192
osl: 1024
search-space:
# 1p2d DEP4+DEP8, 5n: conc 512
- conc-list: [512]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/8k1k/1p2d-dep4-dep8-8k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: true

# 1p2d DEP4+TEP4, 3n: conc 4
- conc-list: [4]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/8k1k/1p2d-dep4-tep4-8k1k.yaml"
decode:
num-worker: 2
tp: 4
ep: 4
dp-attn: false

# 1p2d DEP4+TEP8, 5n: conc 4,16,32,64,128
- conc-list: [4, 16, 32, 64, 128]
prefill:
num-worker: 1
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/8k1k/1p2d-dep4-tep8-8k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: false

# 2p2d DEP4+DEP8, 6n: conc 512,1024
- conc-list: [512, 1024]
prefill:
num-worker: 2
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/8k1k/2p2d-dep4-dep8-8k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: true

# 3p2d DEP4+DEP8, 7n: conc 4096
- conc-list: [4096]
prefill:
num-worker: 3
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/8k1k/3p2d-dep4-dep8-8k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: true

# 5p2d DEP4+DEP8, 9n: conc 4096
- conc-list: [4096]
prefill:
num-worker: 5
tp: 4
ep: 4
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3-gb200-fp8/8k1k/5p2d-dep4-dep8-8k1k.yaml"
decode:
num-worker: 2
tp: 8
ep: 8
dp-attn: true

qwen3.5-fp4-b200-trt-mtp:
image: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc18
model: nvidia/Qwen3.5-397B-A17B-NVFP4
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euo pipefail

python3 - <<'PYEOF'
from importlib.util import find_spec
from pathlib import Path

spec = find_spec("vllm")
if not spec or not spec.origin:
raise RuntimeError("vllm is not installed")
root = Path(spec.origin).parent
patches = {
root / "distributed/device_communicators/flashinfer_all_reduce.py": [
(
" comm_backend=comm_backend,\n"
" group=group,\n",
" comm_backend=comm_backend,\n"
' force_oneshot_support=backend == "mnnvl",\n'
" group=group,\n",
),
],
root / "models/minimax_m3/nvidia/sparse_attention_msa.py": [
(
" prefill_topk = topk[:, nd:num_tokens, :]\n",
" prefill_topk = topk[:, nd:num_tokens, :].contiguous()\n",
),
],
}
for path, edits in patches.items():
source = path.read_text()
for old, new in edits:
if new in source:
continue
if source.count(old) != 1:
raise RuntimeError(f"missing or ambiguous patch anchor in {path}")
source = source.replace(old, new, 1)
path.write_text(source)
PYEOF
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: "minimax-m3-vllm-disagg-gb200-1p1d-dep4-dep8-fp8-1k1k"

# 1P DEP4 prefill (TP1 DP4 EP, 4 GPU/worker) + 1D DEP8 decode (TP1 DP8 EP, 8 GPU/worker = 2 nodes each).
# GB200 has 4 GPUs/node.
# Nodes: 1 prefill + 2 decode (+ head/infra).

model:
path: "minimax-m3-mxfp8"
container: "vllm/vllm-openai:minimax-m3-perf-arm64-13.0.1-7a67223"
precision: "fp8"


dynamo:
install: true
version: 1.3.0.dev20260614

health_check:
max_attempts: 720
interval_seconds: 10

sbatch_directives:
mem: "0"
cpus-per-task: "72"

srun_options:
mem: "0"

resources:
gpu_type: "gb200"
gpus_per_node: 4
prefill_nodes: 1
decode_nodes: 2
prefill_workers: 1
decode_workers: 1
gpus_per_prefill: 4
gpus_per_decode: 8

frontend:
type: dynamo
enable_multiple_frontends: false

backend:
type: vllm
connector: null

prefill_environment:
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_FLOAT32_MATMUL_PRECISION: "high"
VLLM_FLASHINFER_ALLREDUCE_BACKEND: "mnnvl"
UCX_CUDA_IPC_ENABLE_MNNVL: "y"
NCCL_CUMEM_ENABLE: "1"
NCCL_MNNVL_ENABLE: "1"
NCCL_NVLS_ENABLE: "1"

decode_environment:
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_FLOAT32_MATMUL_PRECISION: "high"
VLLM_FLASHINFER_ALLREDUCE_BACKEND: "mnnvl"
UCX_CUDA_IPC_ENABLE_MNNVL: "y"
NCCL_CUMEM_ENABLE: "1"
NCCL_MNNVL_ENABLE: "1"
NCCL_NVLS_ENABLE: "1"

vllm_config:
prefill:
kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}'
attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}'
tensor-parallel-size: 1
data-parallel-size: 4
data-parallel-rpc-port: 13345
enable-expert-parallel: true
trust-remote-code: true
no-enable-prefix-caching: true
block-size: 128
gpu-memory-utilization: 0.90
max-model-len: 2304
language-model-only: true
kv-cache-dtype: fp8
stream-interval: 100
max-cudagraph-capture-size: 2048
max-num-batched-tokens: 2048

decode:
kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}'
attention-config: '{"backend": "FLASHINFER", "use_trtllm_attention": true, "indexer_kv_dtype": "fp8"}'
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
block-size: 128
gpu-memory-utilization: 0.90
max-model-len: 2304
language-model-only: true
kv-cache-dtype: fp8
stream-interval: 100
max-num-seqs: 4096
max-num-batched-tokens: 16384
max-cudagraph-capture-size: 2048

benchmark:
type: "sa-bench"
isl: 1024
osl: 1024
concurrencies: "1024x4096"
req_rate: "inf"
Loading
Loading