diff --git a/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b200.sh b/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b200.sh index 7ac314a09a..1b4e70fd9f 100755 --- a/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b200.sh +++ b/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b200.sh @@ -22,39 +22,6 @@ check_env_vars \ RANDOM_RANGE_RATIO \ RESULT_FILENAME -# The 0618 image keeps MiniMax M3 top-k indices in a persistent -# [head_kv, max_tokens, topK] buffer for CUDA graphs. Slicing that buffer to -# the actual prefill length is non-contiguous when TP leaves multiple local KV -# heads, and the MSA CSR builder rejects it. Materialize the slice until the -# image includes this fix. -python3 - <<'PYEOF' || { echo "MiniMax M3 MSA contiguity patch failed" >&2; exit 1; } -import importlib.util -import pathlib - -spec = importlib.util.find_spec("vllm") -if spec is None or not spec.submodule_search_locations: - raise RuntimeError("Could not locate the installed vllm package") - -target = ( - pathlib.Path(next(iter(spec.submodule_search_locations))) - / "models" - / "minimax_m3" - / "nvidia" - / "sparse_attention_msa.py" -) -src = target.read_text() -old = " prefill_topk = topk[:, nd:num_tokens, :]\n" -new = " prefill_topk = topk[:, nd:num_tokens, :].contiguous()\n" - -if new in src: - print(f"[minimax-m3-msa-patch] already applied: {target}") -elif src.count(old) == 1: - target.write_text(src.replace(old, new, 1)) - print(f"[minimax-m3-msa-patch] patched: {target}") -else: - raise RuntimeError(f"Expected exactly one patch anchor in {target}") -PYEOF - if [[ -n "$SLURM_JOB_ID" ]]; then echo "JOB $SLURM_JOB_ID running on $SLURMD_NODENAME" fi @@ -100,7 +67,7 @@ $PARALLEL_ARGS \ --language-model-only \ --max-cudagraph-capture-size 2048 \ --max-num-batched-tokens "$((ISL * 2 ))" \ ---stream-interval 20 --no-enable-prefix-caching \ +--stream-interval 32 --no-enable-prefix-caching \ --trust-remote-code > $SERVER_LOG 2>&1 & SERVER_PID=$! diff --git a/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b300.sh b/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b300.sh index c0ee15f1f0..e37d30c930 100755 --- a/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b300.sh +++ b/benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b300.sh @@ -23,39 +23,6 @@ check_env_vars \ RANDOM_RANGE_RATIO \ RESULT_FILENAME -# The 0618 image keeps MiniMax M3 top-k indices in a persistent -# [head_kv, max_tokens, topK] buffer for CUDA graphs. Slicing that buffer to -# the actual prefill length is non-contiguous when TP leaves multiple local KV -# heads, and the MSA CSR builder rejects it. Materialize the slice until the -# image includes this fix. -python3 - <<'PYEOF' || { echo "MiniMax M3 MSA contiguity patch failed" >&2; exit 1; } -import importlib.util -import pathlib - -spec = importlib.util.find_spec("vllm") -if spec is None or not spec.submodule_search_locations: - raise RuntimeError("Could not locate the installed vllm package") - -target = ( - pathlib.Path(next(iter(spec.submodule_search_locations))) - / "models" - / "minimax_m3" - / "nvidia" - / "sparse_attention_msa.py" -) -src = target.read_text() -old = " prefill_topk = topk[:, nd:num_tokens, :]\n" -new = " prefill_topk = topk[:, nd:num_tokens, :].contiguous()\n" - -if new in src: - print(f"[minimax-m3-msa-patch] already applied: {target}") -elif src.count(old) == 1: - target.write_text(src.replace(old, new, 1)) - print(f"[minimax-m3-msa-patch] patched: {target}") -else: - raise RuntimeError(f"Expected exactly one patch anchor in {target}") -PYEOF - # `hf download` creates the target dir if missing and is itself idempotent. # When MODEL_PATH is unset (stand-alone runs), fall back to the HF_HUB_CACHE. # Either way, MODEL_PATH is what the server is launched with. @@ -108,7 +75,7 @@ $PARALLEL_ARGS \ --language-model-only \ --max-cudagraph-capture-size 2048 \ --max-num-batched-tokens "$((ISL * 2 ))" \ ---stream-interval 20 --no-enable-prefix-caching \ +--stream-interval 32 --no-enable-prefix-caching \ --trust-remote-code > $SERVER_LOG 2>&1 & SERVER_PID=$! diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 6e4fc8d341..e7cf5b9e8e 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -7345,7 +7345,7 @@ qwen3.5-fp4-b200-trt-mtp: # sparse/index cache alignment). Weights are NOT SRE-staged; b300 falls back # to writable /data/models (see launch_b300-nv.sh MODEL_PATH split). minimaxm3-fp8-b300-vllm: - image: vllm/vllm-openai:minimax-m3-0618-x86_64-cu130 + image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 model: MiniMaxAI/MiniMax-M3-MXFP8 model-prefix: minimaxm3 runner: b300 @@ -7426,7 +7426,7 @@ minimaxm3-fp4-b300-vllm-mtp: # /lustre/fsw/gharunners/models/MiniMax-M3-MXFP8 (pre-downloaded, see # launch_b200-dgxc.sh). minimaxm3-fp8-b200-vllm: - image: vllm/vllm-openai:minimax-m3-0618-x86_64-cu130 + image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 model: MiniMaxAI/MiniMax-M3-MXFP8 model-prefix: minimaxm3 runner: b200-dgxc diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 0608a23b34..2c57c3c8a4 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5086,6 +5086,13 @@ - "Bump SGLang container image from lmsysorg/sglang:v0.5.12-cu130 to lmsysorg/sglang:v0.5.15.post1-cu130 (https://github.com/sgl-project/sglang/releases/tag/v0.5.15.post1)" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2313 +- config-keys: + - minimaxm3-fp8-b200-vllm + - minimaxm3-fp8-b300-vllm + description: + - "Bump image to vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9; set --stream-interval 32; drop the sparse_attention_msa contiguity patch (shipped in the nightly image)" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2336 + - config-keys: - dsv4-fp4-mi355x-sglang-disagg-mtp description: