[AMD] Add MiniMax-M3-FP8 MI355X ATOMMESH#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 |
| prefill: | ||
| num-worker: 1 | ||
| tp: 4 | ||
| ep: 1 | ||
| dp-attn: false | ||
| additional-settings: | ||
| - "PREFILL_NODES=1" | ||
| decode: | ||
| num-worker: 1 | ||
| tp: 4 | ||
| ep: 1 | ||
| dp-attn: false | ||
| additional-settings: |
There was a problem hiding this comment.
@seungrokj quick question out of curiousity: for TP4+TP4 is this over XGMI or RDMA?
There was a problem hiding this comment.
@functionstackx this is over RDMA across 2 nodes.
There was a problem hiding this comment.
@seungrokj thanks for your insight! this is with the mooncake kvcache transfer engine right?
|
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 |
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>
093756c to
fa89765
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27996171132 |
|
/reuse-sweep-run |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=28001429207 |
billishyahao
left a comment
There was a problem hiding this comment.
Please resolve conflict. LGTM
|
@chunfangamd can u properly review the PR & follow the checklist? codeowners r entrusted to properly review the PR following the checklist https://github.com/SemiAnalysisAI/InferenceX/blob/main/docs/PR_REVIEW_CHECKLIST.md |
|
plz ignore these as /reuse-sweep-run didnt work |
|
@billishyahao can u properly review the PR & follow the checklist? codeowners r entrusted to properly review the PR following the checklist https://github.com/SemiAnalysisAI/InferenceX/blob/main/docs/PR_REVIEW_CHECKLIST.md |


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, Slurm env) used by other disagg recipes; mis-gated env flags or server CLI changes could affect DeepSeek-V4-Pro runs, though changes are mostly additive with model-specific guards.Overview
Adds
minimaxm3-fp8-mi355x-atom-disaggto AMD CI: multi-node 1P1D TP4 prefill/decode on MI355X via ATOM + atomesh, sweeping 1k/1k and 8k/1k at conc 1–512, with a new launcherminimaxm3_fp8_mi355x_atom-disagg.shthat sets reference tuning (MEM_FRAC_STATIC=0.8,BLOCK_SIZE=128,MAX_MODEL_LEN=32768,KV_CACHE_DTYPE=auto, no MTP).ATOM disagg plumbing is generalized in
server_atom.sh,job.slurm,env_atom.sh, andbench.sh:MEM_FRACTION→MEM_FRAC_STATIC, optionalMAX_MODEL_LEN/MAX_NUM_BATCHED_TOKENS, skip--kv_cache_dtypewhen dtype isauto, MTP/spec args and model-specific flags (DeepSeek-V4-Pro TBO/HF overrides vsAITER_QUICK_REDUCE_QUANTIZATION=INT4for other models),BENCH_REQUEST_RATEinto containers, andmodels_atom.yamlentries for MiniMax-M3 MXFP4/MXFP8.Reviewed by Cursor Bugbot for commit 4beb48d. Bugbot is set up for automated code reviews on this repo. Configure here.