Skip to content

[AMD] Add DSv4-FP4-MI355X ATOMMESH MTP #1855

Open
seungrokj wants to merge 21 commits into
mainfrom
amd/atom_mesh_0619_mtp
Open

[AMD] Add DSv4-FP4-MI355X ATOMMESH MTP #1855
seungrokj wants to merge 21 commits into
mainfrom
amd/atom_mesh_0619_mtp

Conversation

@seungrokj

@seungrokj seungrokj commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add dsv4-fp4-mi355x-atom-disagg-mtp recipe to amd-master.yaml: multi-node disaggregated prefill+decode on MI355X via ATOM with MTP speculative decoding (2P1D DPA+TBO+MTP1 at ISL8192, 1P1D TP8+MTP3, 1P1D DPA+MTP1)
  • Improve server_atom.sh config print block: replace individual echo lines with a cat <<INFO heredoc that shows EP/DP flags, KV cache settings (dtype, block size, mem fraction), xP/yD topology, and all parallel/spec/opt args
  • Minor fix in dsv4_fp4_mi355x_atom-disagg.sh

Test plan

  • Verify dsv4-fp4-mi355x-atom-disagg-mtp sweep launches correctly on MI355X
  • Confirm config print output is correct on a live run

🤖 Generated with Claude Code


Note

Medium Risk
Touches multi-node ATOM server command construction and Slurm/Docker env plumbing; mistakes could break disagg+MTP sweeps or change serving flags, but scope is benchmark infrastructure only.

Overview
Adds dsv4-fp4-mi355x-atom-disagg-mtp to amd-master.yaml and documents it in perf-changelog.yaml: multi-node disaggregated prefill/decode on MI355X with ATOM + MTP, covering 2P1D DPA/TBO sweeps at ISL 8192 and 1P1D TP8 / DPA+MTP at 1k and 8k sequence lengths (rocm/atom-dev:nightly_202606181332).

ATOM disagg launch path is extended so recipe knobs reach the cluster: dsv4_fp4_mi355x_atom-disagg.sh exports SPEC_DECODING and DECODE_MTP_SIZE; job.slurm passes BENCH_REQUEST_RATE into containers and renames static GPU memory env to MEM_FRAC_STATIC.

server_atom.sh wires MTP (--method mtp --num-speculative-tokens), enables TBO on DP-attention prefill (and related GPU_MAX_HW_QUEUES / ATOM_CPU_AFFINITY), applies DeepSeek-V4-Pro --hf-overrides for index cache, sets IS_MTP for benchmarks, and replaces scattered echo logging with a single config summary block. Prefill/decode server commands now pass parallel/spec/HF flags through eval with expanded arg strings.

bench.sh uses --dsv4 (instead of --use-chat-template) when MTP benchmarking DeepSeek-V4-Pro.

Reviewed by Cursor Bugbot for commit 8b4a94c. Bugbot is set up for automated code reviews on this repo. Configure here.

- Replace individual echo lines with cat <<INFO heredoc showing
  EP/DP flags, KV cache settings alongside TP/port info
- Minor cleanup in parallel args setup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

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 联系核心维护者。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread benchmarks/multi_node/dsv4_fp4_mi355x_atom-disagg.sh Outdated
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh Outdated
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh Outdated
@seungrokj seungrokj changed the title [AMD] Add DSv4-FP4-MI355X atom-disagg MTP recipe and improve server_atom config print [AMD] Add DSv4-FP4-MI355X atom-disagg MTP Jun 19, 2026
seungrokj and others added 2 commits June 19, 2026 17:22
…disagg

- Export DECODE_MTP_SIZE and SPEC_DECODING in dsv4_fp4_mi355x_atom-disagg.sh
  so they reach server_atom.sh via submit.sh → job.slurm
- Add DECODE_MTP_SIZE to check_env_vars in dsv4_fp4_mi355x_atom-disagg.sh
- Pass BENCH_REQUEST_RATE into Docker container in job.slurm DOCKER_ENV_COMMON

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread benchmarks/multi_node/dsv4_fp4_mi355x_atom-disagg.sh Outdated
seungrokj and others added 2 commits June 19, 2026 17:27
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
DECODE_MTP_SIZE comes from additional-settings and has a default of 0,
so it should not be required.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh Outdated
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh
seungrokj and others added 2 commits June 19, 2026 17:37
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…h.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh Outdated
seungrokj and others added 9 commits June 19, 2026 18:44
Remove spaces from JSON value so it doesn't get word-split when
expanded inside the eval'd command string.

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>
OPT_ARGS array expansion inside eval'd string caused bash word-splitting,
breaking the --hf-overrides JSON argument. Inline the flag directly in all
three server commands and remove the now-unused OPT_ARGS definition.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Define once near SPEC_ARGS and reference in all three server commands
(prefill node 0, additional prefill nodes, decode nodes).

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>
"${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>
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh Outdated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@seungrokj seungrokj changed the title [AMD] Add DSv4-FP4-MI355X atom-disagg MTP [AMD] Add DSv4-FP4-MI355X ATOMMESH MTP Jun 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

…tp; add printenv dump and cudagraph-capture-sizes to server_atom.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread benchmarks/multi_node/amd_utils/server_atom.sh
@github-actions

Copy link
Copy Markdown
Contributor

@functionstackx

Copy link
Copy Markdown
Collaborator

requeueing this workflow to make room for m3 disagg

@functionstackx functionstackx left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

requeueing this workflow

image: rocm/atom-dev:nightly_202606181332
model: deepseek-ai/DeepSeek-V4-Pro
model-prefix: dsv4
runner: mi355x

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

plz use runner mi355x-disagg

@github-actions

Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8b4a94c. Configure here.

- "DECODE_NODES=1"
- "DECODE_MTP_SIZE=3"
# 1P1D TP8+DPA+TBO+MTP1
- isl: 1024

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing ISL8192 DPA MTP sweep

Medium Severity

The 1P1D TP8+DPA+TBO+MTP1 comment at ISL8192 is not followed by a search-space entry, so that configuration never runs. The ISL8192 block ends after 1P1D TP8+MTP3, unlike the ISL1024 block where the matching DPA+MTP1 sweep is defined.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 8b4a94c. Configure here.

image: rocm/atom-dev:nightly_202606181332
model: deepseek-ai/DeepSeek-V4-Pro
model-prefix: dsv4
runner: mi355x

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong CI runner for disagg

Medium Severity

The new multinode disaggregated recipe sets runner: mi355x, but disagg benchmarks on MI355X are scheduled on the mi355x-disagg pool per runners.yaml and other disagg recipes; PR review also requested mi355x-disagg.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 8b4a94c. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants