[AMD][AgentX] DeepSeek V4 multi-node Agentic framework and recipe / DeepSeek V4 多节点 Agentic 框架与配方#2127
[AMD][AgentX] DeepSeek V4 multi-node Agentic framework and recipe / DeepSeek V4 多节点 Agentic 框架与配方#2127ichbinblau wants to merge 8 commits into
Conversation
|
Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase For PR verification, add the 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. See GitHub's docs on re-running failed jobs 感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 如需进行 PR 验证,请为此 PR 添加 PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档 |
| - { tp: 8, ep: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: native, conc-list: [24, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 96] } | ||
|
|
||
| dsv4-fp4-mi355x-sglang-disagg-agentic-hicache: | ||
| image: rocm/sgl-dev:v0.5.14-rocm720-mi35x-20260706 |
There was a problem hiding this comment.
We have bumped the image to lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260706
There was a problem hiding this comment.
Yes we will switch to lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260710 where included all 4 patches
|
The patches in this PR are derived from the following upstream SGLang PRs. |
3f0a1f9 to
da1084d
Compare
86da4cc to
a34c27e
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29052264020 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29052670710 |
a34c27e to
b0088c8
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29054064553 |
b0088c8 to
4e557d0
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29056644716 |
4e557d0 to
fce18af
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29057082376 |
fce18af to
b6a9877
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29057275526 |
| ) | ||
| kv_manager._staging_handler = self.staging_handler | ||
|
|
||
| + def _agree_and_order_queue(self) -> Tuple[List["DecodeRequest"], List["DecodeRequest"]]: |
There was a problem hiding this comment.
We will not accept any patches. I have removed all patches that have since been merged into upstream sglang main. Please update nightly image tomorrow.
However, this patch remains. Please remove it / open upstream pr.
There was a problem hiding this comment.
We will not accept any patches. I have removed all patches that have since been merged into upstream sglang main. Please update nightly image tomorrow.
However, this patch remains. Please remove it / open upstream pr.
This patch file has not been used as its caller func has been commented out. I have remove it.
|
@ichbinblau Thank you for this awesome work. Please see the changes I requested. Also, please re run full-sweep-enabled after making these changes. +viz @chunfangamd |
matrix.config.conc for multi-node agentic is already a JSON array
(e.g. [16,32,64] from generate_sweep_configs.py). Wrapping it in a
string literal as '[${{ matrix.config.conc }}]' can't correctly
interpolate an array into a string, producing a malformed conc-list
so fromJson(inputs.conc-list) in the reusable template ended up with
an empty/wrong CONC_LIST. Use toJson(matrix.config.conc) instead,
matching the pattern already used for the other two conc-list inputs
in this file.
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29065983132 |
matrix.config.conc for multi-node agentic entries is a JSON array
(chunked concurrencies per allocation), but sweep-multi-node-agentic
passed it directly into benchmark-multinode-tmpl.yml's `conc` input,
which is declared `type: string` ("First concurrency for
agentic-coding scenarios; CONC_LIST carries the full batch"). GitHub
Actions' reusable-workflow input validator rejects a sequence value
for a string-typed input at evaluation time, so the whole job failed
to even load:
evaluate reusable workflow inputs: .github/workflows/run-sweep.yml
(Line: 554, Col: 19): A sequence was not expected
Since the job never materializes when this happens, sweep-multi-node-
agentic silently disappeared from run summaries entirely instead of
showing as failed. Slice to the first element (matching the intended
"first concurrency" semantics and the same fix already applied
elsewhere, e.g. PR #2122) to restore a scalar value.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29066428461 |
e9aa46a to
55a7983
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29066543853 |
Multi-node agentic sweeps batched up to 4 concurrencies per SLURM allocation, running them sequentially against one shared server session. A slow/hung conc could block the rest of the batch from ever producing results, which is why run #6719 only reported c16 despite a 16/32/48/64 conc-list. Drop the batch size to 1 so each concurrency gets its own task/allocation, matching the granularity already used for single-node agentic sweeps. Cherry-picked from backup/agentx-v1.0-rebase-pre-upstream-rewrite-20260710 (082a59d), adapted for the current test suite. Co-authored-by: Cursor <cursoragent@cursor.com>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29066685174 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29067272731 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29078166951 |
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
patch_decode_tp_queue_agree()'s invocation was already commented out (dead code with no runtime effect), and the reference-only patches/decode_tp_queue_agree.patch it mirrored had no other callers. Drop both plus the README bullet pointing at it. Co-authored-by: Cursor <cursoragent@cursor.com>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=29078166951 |
Summary
Add end-to-end agentic benchmarking for DeepSeek-V4-Pro FP4 on MI355X using multi-node disaggregated SGLang and HiCache host-DRAM KV offloading.
This PR now focuses on the recipe and runtime implementation:
Dependency
Depends on #2141, which separately enables
kv-offloadingandkv-offload-backendpropagation for multi-node Agentic sweep matrices. The sharedutils/matrix_logicchanges are intentionally not included in this PR.Until #2141 is merged, the configuration in this PR declares
kv-offloading: dramandkv-offload-backend: hicache, but currentmainstill forces multi-node Agentic matrix entries tokv-offloading: none.Patch policy
Patch and overlay code corresponding to merged upstream SGLang changes has been removed. The remaining patch artifacts are limited to code without a merged upstream equivalent, including the disaggregated prefill bootstrap desynchronization fix and the reference-only decode TP queue agreement patch.
Validation
bash -n.configs/amd-master.yamlandperf-changelog.yamlparse successfully.PYTHONPATH=. pytest -q utils/agentic/aggregation/test_process_agentic_result.py— 26 passed.git diff --checkpasses.中文说明
本 PR 为 MI355X 上的 DeepSeek-V4-Pro FP4 增加端到端 Agentic 基准测试能力,采用多节点 SGLang 分离式推理,并通过 HiCache 使用主机 DRAM 进行 KV 缓存卸载。
本 PR 当前仅聚焦配方和运行时实现:
依赖关系
本 PR 依赖 #2141。#2141 单独为多节点 Agentic 扫描矩阵增加
kv-offloading和kv-offload-backend的透传能力。本 PR 已移除所有共享的utils/matrix_logic改动。在 #2141 合并之前,本 PR 的配置虽然声明了
kv-offloading: dram和kv-offload-backend: hicache,但当前main仍会把多节点 Agentic 矩阵项强制转换为kv-offloading: none。补丁策略
与已合并 SGLang 上游改动对应的补丁和 overlay 代码均已移除。当前仅保留尚无已合并上游等价实现的本地补丁,包括分离式 prefill bootstrap 不同步修复,以及仅作参考、默认不启用的 decode TP queue agreement 补丁。
验证
Shell 和 Slurm 脚本均通过
bash -n;configs/amd-master.yaml与perf-changelog.yaml可正常解析;Agentic 聚合测试 26 项全部通过;相关 Python 文件编译检查和git diff --check均通过。