Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
7974728
minimaxm3-fp8-mi300x-vllm: enable AITER kernels for MXFP8 on MI300X
ZhengGong-amd Jun 16, 2026
bf80e0c
perf(minimaxm3-mi300x): async-scheduling + big-prefill, fix conc256 E…
ZhengGong-amd Jun 28, 2026
e733464
style(minimaxm3-mi300x): trim added comments to match surrounding style
ZhengGong-amd Jun 29, 2026
b989249
fix(perf-changelog): set minimaxm3-mi300x pr-link to pull/1951
ZhengGong-amd Jun 29, 2026
33c7e44
Merge remote-tracking branch 'upstream/main' into minimaxm3-mi300x-tu…
ZhengGong-amd Jun 30, 2026
b9186d7
chore(minimaxm3-mi300x): bump vLLM image to nightly-4559c43a9
ZhengGong-amd Jun 30, 2026
030b9ac
Merge remote-tracking branch 'upstream/main' into minimaxm3-mi300x-tu…
ZhengGong-amd Jun 30, 2026
48ab01e
Merge branch 'main' into minimaxm3-mi300x-tuning
chunfangamd Jul 1, 2026
9220b53
Merge remote-tracking branch 'origin/main' into minimaxm3-mi300x-tuning
ZhengGong-amd Jul 6, 2026
880ceb0
Merge branch 'main' into minimaxm3-mi300x-tuning
chunfangamd Jul 6, 2026
c3514f5
Merge branch 'main' into minimaxm3-mi300x-tuning
chunfangamd Jul 6, 2026
403ba1e
[AMD] minimaxm3-fp8-mi300x-vllm: drop --async-scheduling (GSM8K colla…
ZhengGong-amd Jul 7, 2026
7b7ca77
Revert "[AMD] minimaxm3-fp8-mi300x-vllm: drop --async-scheduling (GSM…
ZhengGong-amd Jul 7, 2026
e19163b
[AMD] minimaxm3-fp8-mi300x-vllm: drop EP8 from 8k1k (garbage output, …
ZhengGong-amd Jul 7, 2026
61b7b71
Merge branch 'main' into minimaxm3-mi300x-tuning
ZhengGong-amd Jul 7, 2026
b99d350
Merge branch 'main' into minimaxm3-mi300x-tuning
ZhengGong-amd Jul 8, 2026
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
4 changes: 2 additions & 2 deletions .github/configs/amd-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2895,8 +2895,8 @@ minimaxm3-fp8-mi300x-vllm:
- isl: 1024
osl: 1024
search-space:
- { tp: 8, conc-start: 1, conc-end: 128 }
- { tp: 8, ep: 8, conc-start: 256, conc-end: 256 }
# TP8/EP1 full conc range; the prior EP8 conc256 row regressed throughput.
- { tp: 8, conc-start: 1, conc-end: 256 }
- isl: 8192
osl: 1024
search-space:
Expand Down
12 changes: 12 additions & 0 deletions benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_mi300x.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
# is mandatory for MSA sparse attention. Keep the default BF16 KV cache on
# gfx942: the checkpoint has no calibrated q/prob scales for ROCm FP8
# attention, and vLLM's fallback scale of 1.0 corrupts model accuracy.
# --async-scheduling and --max-num-batched-tokens 16384 are accuracy-safe
# scheduling levers: the larger prefill batch amortizes the per-step
# BF16-emulated MoE weight read, lifting high-concurrency throughput.

source "$(dirname "$0")/../../benchmark_lib.sh"

Expand Down Expand Up @@ -34,6 +37,13 @@ SERVER_LOG=/workspace/server.log
export VLLM_ENGINE_READY_TIMEOUT_S=3600
export VLLM_USE_BREAKABLE_CUDAGRAPH=0

export VLLM_ROCM_USE_AITER=1
export VLLM_ROCM_USE_AITER_MHA=0

export TORCH_BLAS_PREFER_HIPBLASLT=1
export NCCL_MIN_NCHANNELS="${NCCL_MIN_NCHANNELS:-112}"
export GPU_MAX_HW_QUEUES="${GPU_MAX_HW_QUEUES:-2}"

if [ "${EVAL_ONLY}" = "true" ]; then
setup_eval_context
fi
Expand All @@ -59,6 +69,8 @@ vllm serve "$MODEL" --port "$PORT" \
--language-model-only \
--max-model-len "$MAX_MODEL_LEN" \
--attention-backend TRITON_ATTN \
--async-scheduling \
--max-num-batched-tokens 16384 \
--tool-call-parser minimax_m3 \
--reasoning-parser minimax_m3 \
--enable-auto-tool-choice > "$SERVER_LOG" 2>&1 &
Expand Down
16 changes: 16 additions & 0 deletions perf-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4302,3 +4302,19 @@
- "Update the MiniMax-M3 MXFP8 MI355X vLLM image from vllm/vllm-openai-rocm:minimax-m3 to vllm/vllm-openai-rocm:nightly-3f5a1e1733200760169ff31ebe60a271072b199e."
- "Benchmark serving flags and TP/EP/DP-attention search space are unchanged."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1942

- config-keys:
- minimaxm3-fp8-mi300x-vllm
Comment thread
chunfangamd marked this conversation as resolved.
description:
- "Enable AITER kernels for MiniMax-M3 MXFP8 on MI300X/gfx942 via the single master toggle VLLM_ROCM_USE_AITER=1: the stock image left it unset, so the hot decode GEMMs and fused MoE ran on the generic kernels. The per-component AITER flags (MoE, linear, RMSNorm, FP8 batched-GEMM) default to True and are gated behind the master flag, so they are left at their defaults. Keep attention on TRITON_ATTN (VLLM_ROCM_USE_AITER_MHA=0, which defaults to True) because the MXFP8 checkpoint lacks calibrated q/prob scales for ROCm FP8 attention."
- "Add AMD-recommended, numerically-inert MI300X runtime knobs: TORCH_BLAS_PREFER_HIPBLASLT=1, NCCL_MIN_NCHANNELS=112 (raises RCCL channels above the ~32-64 default for TP8), GPU_MAX_HW_QUEUES=2 (caps HIP streams below the default of 4)."
- "Measured uplift on 8xMI300X, 1k1k random sweep (total tok/s/gpu): conc256 782.7->856.1 (+9.4%), conc128 598.9->637.0 (+6.4%), conc64 365.1->392.0 (+7.4%), conc32 295.6->327.4 (+10.8%), conc16 203.1->216.5 (+6.6%), conc8 127.6->136.6 (+7.1%), conc4 80.1->84.6 (+5.6%); conc1-2 unchanged (latency-bound). GSM8K exact-match holds at ~0.95 (kernel-selection change only)."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1951

- config-keys:
- minimaxm3-fp8-mi300x-vllm
description:
- "Stack two accuracy-safe scheduling levers on the MiniMax-M3 MXFP8 MI300X vLLM recipe: --async-scheduling (overlaps CPU input-prep with GPU decode) and --max-num-batched-tokens 16384 (amortizes the per-step BF16-emulated MoE weight read of ~95 GB/rank over more prompt tokens, halving prefill weight-reads vs the 8192 default). Both are token-for-token identical (scheduling only); GSM8K exact-match holds at 0.959."
- "Switch the 1k1k conc256 search-space row from TP8/EP8 to TP8/EP1: the EP8 topology regressed high-concurrency throughput (434 vs 905 tok/s/gpu @ conc256, EP8 vs EP1) and EP1 matches the topology the prior AITER uplift was measured against."
- "Measured uplift on 8xMI300X, 1k1k random sweep vs the AITER baseline (total tok/s/gpu): conc256 434->905 (EP8->EP1 + scheduling levers, +108%), conc128 585->628 (+7.3%), conc64 364->429 (+18.0%); conc1-32 neutral (latency-bound). GSM8K exact-match 0.959."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1951
Loading