[AMD] Add MiniMax-M3-FP8 MI355X ATOMESH#1865
Conversation
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you
PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. 感谢你的贡献!对于 vLLM 与 SGLang,请确保你的 recipe 与官方 vLLM recipes 和/或 SGLang cookbook 保持一致 如果不一致,请先创建一个 PR,之后我们才能将你的单节点 PR 合并到 master 分支。让我们确保文档保持一流水准,使整个 ML 社区都能从你的辛勤工作中受益!谢谢
PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。如果选择重新运行失败的任务,PR 作者有责任确保其最终通过。参见 GitHub 关于重新运行失败任务的文档:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow 一般而言,PR 作者应先向相应公司的 CODEOWNERS 请求审阅并获得 PR 批准,然后再请求核心维护者审阅。 如需更多帮助,PR 作者可通过 Slack 联系核心维护者。 |
3 similar comments
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you
PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. 感谢你的贡献!对于 vLLM 与 SGLang,请确保你的 recipe 与官方 vLLM recipes 和/或 SGLang cookbook 保持一致 如果不一致,请先创建一个 PR,之后我们才能将你的单节点 PR 合并到 master 分支。让我们确保文档保持一流水准,使整个 ML 社区都能从你的辛勤工作中受益!谢谢
PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。如果选择重新运行失败的任务,PR 作者有责任确保其最终通过。参见 GitHub 关于重新运行失败任务的文档:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow 一般而言,PR 作者应先向相应公司的 CODEOWNERS 请求审阅并获得 PR 批准,然后再请求核心维护者审阅。 如需更多帮助,PR 作者可通过 Slack 联系核心维护者。 |
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you
PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. 感谢你的贡献!对于 vLLM 与 SGLang,请确保你的 recipe 与官方 vLLM recipes 和/或 SGLang cookbook 保持一致 如果不一致,请先创建一个 PR,之后我们才能将你的单节点 PR 合并到 master 分支。让我们确保文档保持一流水准,使整个 ML 社区都能从你的辛勤工作中受益!谢谢
PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。如果选择重新运行失败的任务,PR 作者有责任确保其最终通过。参见 GitHub 关于重新运行失败任务的文档:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow 一般而言,PR 作者应先向相应公司的 CODEOWNERS 请求审阅并获得 PR 批准,然后再请求核心维护者审阅。 如需更多帮助,PR 作者可通过 Slack 联系核心维护者。 |
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you
PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. 感谢你的贡献!对于 vLLM 与 SGLang,请确保你的 recipe 与官方 vLLM recipes 和/或 SGLang cookbook 保持一致 如果不一致,请先创建一个 PR,之后我们才能将你的单节点 PR 合并到 master 分支。让我们确保文档保持一流水准,使整个 ML 社区都能从你的辛勤工作中受益!谢谢
PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。如果选择重新运行失败的任务,PR 作者有责任确保其最终通过。参见 GitHub 关于重新运行失败任务的文档:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow 一般而言,PR 作者应先向相应公司的 CODEOWNERS 请求审阅并获得 PR 批准,然后再请求核心维护者审阅。 如需更多帮助,PR 作者可通过 Slack 联系核心维护者。 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27859909769 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27861799455 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27862212112 |
1 similar comment
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27862212112 |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cb168e4. Configure here.
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27874092441 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27874309402 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27874309402 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27874309402 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27894796811 |
"${ARRAY[@]}" inside a double-quoted assignment breaks bash -n's quote
parser. Since all three CMD strings are passed to eval, ${ARRAY[*]}
is equivalent — eval handles word splitting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- benchmarks/multi_node/minimaxm3_fp4_mi355x_atom-disagg.sh: new CI entry point for MiniMax-M3-MXFP4, mirroring dsv4_fp4_mi355x_atom-disagg.sh. No MTP (SPEC_DECODING=none), KV_CACHE_DTYPE=auto (no fp8), MAX_MODEL_LEN/MAX_NUM_BATCHED_TOKENS=32768. - server_atom.sh: make --kv_cache_dtype conditional (skipped when KV_CACHE_DTYPE is empty or "auto"); add MAX_MODEL_LEN, MAX_NUM_BATCHED_TOKENS, CUDAGRAPH_OPT support (prefill+decode for model-len args; decode-only for cudagraph). - job.slurm: pass MAX_MODEL_LEN, MAX_NUM_BATCHED_TOKENS, CUDAGRAPH_OPT through Docker env for atom-disagg engine. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…UCE_QUANTIZATION=INT4 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Also remove CUDAGRAPH_OPT from job.slurm (linter cleanup). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…isagg.sh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…r default) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e --enable-tbo for non-DSv4 models Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…YPE default to empty for minimaxm3 disagg Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ode node - Change runner from mi355x to mi355x-disagg in amd-master.yaml for minimaxm3-fp4 disagg - Add dynamic CUDAGRAPH_SIZES selection in server_atom.sh based on max concurrency thresholds (512/1024/2048) - Pass --cudagraph-capture-sizes to decode node server args Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…4-Pro only Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Use ${KV_CACHE_DTYPE-fp8} so empty string (set by minimaxm3 script) is
left as-is, avoiding unintended --kv-cache-dtype pass-through.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…dtype flag Set KV_CACHE_DTYPE to auto in minimaxm3_fp4_mi355x_atom-disagg.sh and revert server_atom.sh to use :- expansion (auto is explicitly excluded from KV_CACHE_ARG in server_atom.sh, so the flag is not passed). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- disagg.sh: export MEM_FRAC_STATIC=0.8 and MAX_NUM_SEQS=128 - server_atom.sh: fix missing _MAX_CONC assignment before cudagraph size check - amd-master.yaml: trim ISL=8192 to 1P1D only, cap conc at 512 for both ISLs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ove stale perf-changelog entry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e config Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- amd-master.yaml: bump image to rocm/atom-dev:MiniMax-M3-20260622 - minimaxm3_fp8_mi355x_atom-disagg.sh: unconditionally set MAX_MODEL_LEN=32768 - server_atom.sh: minor comment cleanup Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43ee069 to
c0a813b
Compare
|
hi @seungrokj @andyluo7 @chunfangamd vLLM FP8 Disagg M3 has merged so we can merge this PR once yall has followed the PR review process and properly filled in the PR review form so that the signoff CI verification can trigger https://github.com/SemiAnalysisAI/InferenceX/blob/main/.github/workflows/codeowner-signoff-verify.yml can u please use this PR CHECKLIST template for reviewing it https://github.com/SemiAnalysisAI/InferenceX/blob/main/docs/PR_REVIEW_CHECKLIST.md here is an example of how to do it #1891 (comment) If you don't follow the PR CHECKLIST template including the phrase |
|
@functionstackx BLOCKED — not a CODEOWNER for the AMD config changed here, no executed sweep/eval on any in-PR commit, and no recipe link. The signed comment is also a request to the AMD reviewers to fill in the checklist, not a completed sign-off.
|
|
As a PR reviewer and CODEOWNER, I have reviewed this and have:
Additional detail section:This is a multi-node FP8 disaggregated ATOMesh config (week-1 MI355X support); no single-node recipe PR required. vLLM equivalent merged in #1762. Signed: |
|
@functionstackx can you please approve this ? |
|
@billishyahao Not ready to merge: no passing sweep/eval exists on any commit in this PR, and the sign-off has no public recipe link.
|


Summary
minimaxm3-fp8-mi355x-atom-disaggCI recipe: multi-node disaggregated prefill-decode on MI355X via ATOM for MiniMax-M3-MXFP8MEM_FRAC_STATIC=0.8,MAX_NUM_SEQS=128,BLOCK_SIZE=128,MAX_MODEL_LEN=32768,KV_CACHE_DTYPE=autoserver_atom.sh: fix_MAX_CONCassignment before cudagraph size check; gateATOM_MOE_GU_ITLVandAITER_BF16_FP8_MOE_BOUNDon DeepSeek-V4-Pro only; use${KV_CACHE_DTYPE:-fp8}defaultTest plan
mi355x-disaggrunner triggers correctly--kv-cache-dtypeis not passed whenKV_CACHE_DTYPE=auto🤖 Generated with Claude Code
Note
Medium Risk
Touches shared multi-node ATOM launch paths (
server_atom.sh,env_atom.sh,job.slurm) used by other disagg recipes; behavior changes are mostly gated by model name but could affect non–DSv4 atom-disagg runs.Overview
Adds
minimaxm3-fp8-mi355x-atom-disaggto AMD CI: multi-node 1P1D prefill–decode on MI355X with ATOM + mooncake, TP4, 1k/1k and 8k/1k, concurrency 1–512, via new launcherminimaxm3_fp8_mi355x_atom-disagg.sh(reference tuning:MEM_FRAC_STATIC=0.8, block size 128,MAX_MODEL_LEN=32768,KV_CACHE_DTYPE=auto, no MTP).server_atom.shis generalized for non–DeepSeek-V4 models:MEM_FRACTION→MEM_FRAC_STATIC, optionalMAX_MODEL_LEN/MAX_NUM_BATCHED_TOKENS, MTP/spec args, KV dtype omitted whenauto, model-specific parallel flags (DSv4 TBO/HF overrides vsAITER_QUICK_REDUCE_QUANTIZATION=INT4elsewhere), andeval-built server commands.env_atom.shappliesATOM_MOE_GU_ITLV/AITER_BF16_FP8_MOE_BOUNDonly for DeepSeek-V4-Pro.job.slurmpassesBENCH_REQUEST_RATEand the new atom-disagg env vars;models_atom.yamlregisters MiniMax-M3 MXFP4/MXFP8.bench.shuses--dsv4for MTP on DeepSeek-V4-Pro.perf-changelog.yamldocuments the recipe.Reviewed by Cursor Bugbot for commit c363d91. Bugbot is set up for automated code reviews on this repo. Configure here.