Skip to content

Bump DSpark draft length to 6 on dsv4 agentic low-concurrency arms / 将 dsv4 agentic 低并发臂的 DSpark 草稿长度提升至 6 - #3256

Open
ichbinblau wants to merge 4 commits into
mainfrom
amd/agentx-v1.0-th-dspark-gamma6-lowcon
Open

ichbinblau wants to merge 4 commits into
mainfrom
amd/agentx-v1.0-th-dspark-gamma6-lowcon

Conversation

@ichbinblau

@ichbinblau ichbinblau commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

Description

  • configs/amd-master.yaml: raise DECODE_MTP_SIZE from 3 to 6 on the two low-concurrency arms of dsv4-fp4-mi355x-sglang-disagg-agentic-umbp-dspark (conc-list: [4] and conc-list: [16]). The conc-list: [32, 48] HiCache arm and the conc-list: [128, 192, 256] UMBP-linker arm are untouched (still draft length 3).
  • benchmarks/multi_node/amd_utils/server_sglang.sh: wire a DeepSeek-V4-Pro-0813:6 case into the golden-AL table (DSV4_GOLDEN_AL=3.77, sourced from golden_al_distribution/dsv4-pro-0813-dspark.yaml, thinking_on). Without this, an agentic (non-eval) decode node at draft length 6 falls into the DeepSeek-V4-Pro-0813:* catch-all and exit 1s before sglang.launch_server ever runs.
  • perf-changelog.yaml: appended an entry documenting both changes at the physical end of the file, per docs/configuration-procedures.md.

Type of Change

  • Configuration change

Checklist

  • I have completed the AI model disclosure and kept it current
  • I have tested my changes locally
  • I have updated documentation if necessary (none required)
  • For every change that can affect benchmark performance and every recipe addition or modification, I have appended a new entry to the physical end of perf-changelog.yaml and have not edited historical entries
  • Before merging via reuse, an authorized maintainer (OWNER/MEMBER/COLLABORATOR) has commented /use <run_id> (or the legacy /reuse-sweep-run) on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the sweep label will no longer automatically kick off new sweeps. Remove and re-add the label to force one.
中文

改动说明

  • configs/amd-master.yaml:将 dsv4-fp4-mi355x-sglang-disagg-agentic-umbp-dspark 两条低并发臂(conc-list: [4]conc-list: [16])的 DECODE_MTP_SIZE 由 3 提升到 6;conc-list: [32, 48] 的 HiCache 臂与 conc-list: [128, 192, 256] 的 UMBP-linker 臂保持草稿长度 3 不变。
  • benchmarks/multi_node/amd_utils/server_sglang.sh:在黄金 AL 表中新增 DeepSeek-V4-Pro-0813:6 分支(DSV4_GOLDEN_AL=3.77,取自 golden_al_distribution/dsv4-pro-0813-dspark.yamlthinking_on)。否则草稿长度为 6 时,agentic(非 eval)decode 节点会落入 DeepSeek-V4-Pro-0813:* 兜底分支,在 sglang.launch_server 启动前就 exit 1
  • perf-changelog.yaml:按照 docs/configuration-procedures.md 的要求,在文件末尾追加了记录以上两项改动的条目。

改动类型

  • 配置变更

检查清单

  • 已完成并保持 AI 模型使用说明的更新
  • 已在本地测试改动
  • 已根据需要更新文档(本次无需更新)
  • 对任何可能影响基准测试性能的改动以及配方的新增或修改,已在 perf-changelog.yaml 文件末尾追加新条目,且未编辑历史条目
  • 通过复用方式合并前,需由授权维护者(OWNER/MEMBER/COLLABORATOR)在本 PR 下评论 /use <run_id>(或旧版 /reuse-sweep-run。仅当已有一次全绿并通过 evals 的完整 sweep 时才这样做,因为评论后 sweep 标签将不再自动触发新的 sweep;移除并重新添加标签可强制触发一次。

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps only run on labeled PRs. Add full-sweep-fail-fast (strongly recommended); use full-sweep-enabled only when matrix jobs should continue after a failure.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**扫描仅在带有标签的 PR 上运行。强烈建议添加 full-sweep-fail-fast;仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明

configs/amd-master.yaml: DECODE_MTP_SIZE 3->6 on the conc-list [4] and
conc-list [16] arms of dsv4-fp4-mi355x-sglang-disagg-agentic-umbp-dspark.
The conc-list [32, 48] HiCache arm and conc-list [128, 192, 256]
UMBP-linker arm are untouched.

server_sglang.sh: wire a DeepSeek-V4-Pro-0813:6 case into the golden-AL
table (DSV4_GOLDEN_AL=3.77, from golden_al_distribution/dsv4-pro-0813-dspark.yaml
thinking_on). Without it, agentic (non-eval) decode nodes at draft
length 6 hit the DeepSeek-V4-Pro-0813:* catch-all and exit 1 before
sglang.launch_server ever runs.

perf-changelog.yaml: append entry per docs/configuration-procedures.md
(pr-link: TBD until the PR exists).

Co-authored-by: Cursor <cursoragent@cursor.com>
@ichbinblau
ichbinblau force-pushed the amd/agentx-v1.0-th-dspark-gamma6-lowcon branch from 96452d0 to 2eb25cf Compare September 18, 2026 09:09
@ichbinblau ichbinblau added AMD full-sweep-enabled agentx AgentX benchmarks, recipes, and infrastructure labels Sep 18, 2026

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM — straightforward config bump with a correctly wired golden-AL fallback.

  • Confirmed the DECODE_MTP_SIZE 3->6 change in configs/amd-master.yaml touches only the two stated low-concurrency arms (conc-list [4] and [16]); the HiCache and UMBP-linker arms are untouched.
  • Verified the new DeepSeek-V4-Pro-0813:6 case's DSV4_GOLDEN_AL=3.77 matches golden_al_distribution/dsv4-pro-0813-dspark.yaml's thinking_on:6 entry exactly.
  • Checked DECODE_MTP_SIZE is still validated via check_env_vars, not defaulted with a ${VAR:-...} fallback.
  • perf-changelog.yaml diff is purely additive at the physical tail (no historical bytes touched).
Extended reasoning...

Overview

The diff touches three files: a two-line numeric bump (DECODE_MTP_SIZE 3->6) on two arms of one recipe in configs/amd-master.yaml, a one-line case-statement addition wiring a golden acceptance-length value for draft length 6 in benchmarks/multi_node/amd_utils/server_sglang.sh, and one appended entry in perf-changelog.yaml documenting both. No logic, control flow, or other recipes/arms are touched.

Security risks

None. This is a numeric configuration change and a static lookup-table addition in a benchmark launcher script; no user input, auth, or crypto paths are involved.

Level of scrutiny

Low-to-moderate is warranted given the repo's stated fairness policy (golden AL values must come from the committed curve, not be hand-picked) and byte-sensitivity of perf-changelog.yaml. I independently verified both: golden_al_distribution/dsv4-pro-0813-dspark.yaml lists thinking_on: {6: 3.77} exactly matching the new DSV4_GOLDEN_AL=3.77 case, and the perf-changelog.yaml diff only adds lines after the prior tail with no modification to existing bytes. I also confirmed DECODE_MTP_SIZE is still required via check_env_vars in server_sglang.sh (line 11) rather than given a silent ${VAR:-default} fallback, consistent with the repo's bash conventions.

Other factors

The PR conversation timeline shows a single commit event with no recorded CHANGES_REQUESTED review or unresolved third-party objection. The bug-hunting system reported zero findings; the one candidate issue it investigated (pr-link: TBD potentially failing CI's validate_perf_changelog.py) was already ruled out by that run, and I confirmed the placeholder-acceptance logic in validate_added_pr_link/PR_LINK_PLACEHOLDERS exists to handle exactly this case on PR runs. The change is small, self-contained, mechanical, and internally consistent, so I'm approving.

This review covers commit 96452d0, which is no longer the latest commit on this pull request; later commits are not covered by it.

@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

@billishyahao billishyahao 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.

As a PR reviewer and CODEOWNER, I have reviewed this and have:

  • Verified that as of the moment of typing this, this is the latest version of PR_REVIEW_CHECKLIST.md
  • Verified that the general code quality meets the InferenceX standard and does not make the code quality any worse.
  • Verified that this PR has passed PR validation. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/35328216206
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/35328216206
  • Verified that speculative decoding PRs uses chat templates to align the AL distribution to real world
  • For agentic workloads: verified that speculative-decoding configs (EAGLE / MTP / draft models) run with simulated synthetic acceptance, with the acceptance-length value taken from the committed golden AL curve in golden_al_distribution/ for that model, thinking mode, and draft length. A submission may choose any supported draft length, but it may not substitute a different acceptance target.
  • Verified against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • Verified that the model architecture isn't changed with benchmark hacks like using --hf-overrides to skipping indexer for every x layers on models that don't natively support this. As a general rule, we won't accept optimizations that reduces the number of model architecture FLOPs. Anything that makes that same computation run faster is fair game; FLOPs at lower precisions is fine, given that the config passes private evals. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
  • If an company claims that they support vLLM/SGLang as first class LLM inference engines on their hardware, I have verified that the respective vLLM submission made using upstream https://hub.docker.com/u/vllm docker repo, upstream SGLang https://hub.docker.com/u/lmsysorg docker repo. The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
  • If an company claims that they support vLLM/SGLang as first class upstream in-tree LLM inference engines on their hardware, I have have verified that the respective vLLM/SGLang submission has been made before additional frameworks (TRT-LLM, ATOM, etc.). The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet.
  • Verified that every single-node vLLM/SGLang recipe in this PR is documented in the official vLLM recipes and/or the SGLang cookbook:
    • I linked the corresponding upstream PR in the vLLM recipe repo or SGLang repo and verified that it is MERGED before this InferenceX PR merges. An opened, draft, or closed-without-merge upstream PR does not satisfy this requirement. If the matching recipe was already published, I linked the published recipe/cookbook page in the additional detail section below.
  • Verified that this PR does not patch the inference engine or serving stack — the pinned image must run as shipped. This covers .patch files / git apply / patch, inline patches embedded in benchmark scripts (e.g. a python3/sed heredoc that rewrites installed engine sources before serving), in-place edits of site-packages, monkey-patching, overwriting container files, and installing forked/rebuilt engine wheels on top of the pinned image. The only exception is a patch covered by a filled-out waiver at docs/waiver/<PR_NUMBER>.md — named after the PR that introduces the patch and filed in that same PR, stating what is patched, why the unmodified upstream image cannot run this benchmark, the upstream PR/issue link, and the removal plan — which I have linked below in the additional detail section.
  • If this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

  • insert any additional info here

Signed: billishyahao

@billishyahao

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 35328216206

@github-actions

github-actions Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

❌❌❌ REJECTED ❌❌❌

@billishyahao — two blockers remain on c00e95d0: the sign-off is still a stale copy of the checklist template (missing the draft-model-precision and Pareto-coverage items), and its additional detail section is still the untouched placeholder, so the DSpark draft-precision evidence required by Check 13 is absent. The /use blocker from the previous verdict is now resolved. The sweep itself is green with passing evals on in-PR commit 2eb25cfb (run 35328216206). Please edit the existing review (id 5259254761) rather than posting a new one.

❌ Check 5 (Latest checklist template): FAIL — The sign-off omits two items from the current PR_REVIEW_CHECKLIST.md: (1) "Verified that all draft models and heads retain their original weights and precision, with evidence in the additional detail section…" and (2) "Reported measured throughput/E2EL Pareto counts and evidence per affected curve (≥5 points strongly recommended)…". Re-copy the current template into the existing review and check both items with evidence.

❌ Check 13 (Draft weights and precision): FAIL — Draft precision could not be verified: the additional detail section reads "insert any additional info here" and identifies no draft checkpoint/revision, native vs effective precision, or supporting metadata, which CONTRIBUTING.md § Draft-model precision requires for any spec-decode change (this PR changes the DSpark draft length on the c4/c16 arms). Independent inspection of the c16 decode log in run 35328216206: the draft is the DSpark head bundled in /models/DeepSeek-V4-Pro-0813 (speculative_draft_model_path = model path, revision: None), loaded as DeepseekV4ForCausalLMDSpark quant=fp8 fmt=e4m3 with speculative_draft_model_quantization: None, speculative_draft_kv_cache_dtype: None, dtype: auto, and "Finished streaming dequant fp8 wo_a" during the draft load. Because the draft KV dtype is unset it inherits --kv-cache-dtype fp8_e4m3 (the draft load logs "Using FP8 KV cache but no scaling factors provided"). SGLang also logged "DSpark gamma mismatch: using gamma=6 … but draft config block_size=5". No native-precision baseline for the DSpark head (weights, activations, draft KV cache) from the original release or reference implementation was supplied, so preservation cannot be confirmed. Provide the checkpoint revision, native draft dtype per module including draft KV cache, the pinned-image code path that loads it, and confirm gamma 6 is a supported draft length for a block_size-5 head.

Non-blocking: the new perf-changelog.yaml entry sits before the glm5.2-fp4-mi355x-sglang-agentic-mtp entry rather than at the physical end of the file at c00e95d0, as @edwingao28 already requested.

Passed and not applicable checks

✅ Check 0 (CODEOWNER): PASS — @billishyahao is a named owner of configs/amd-master.yaml; benchmarks/multi_node/amd_utils/server_sglang.sh and perf-changelog.yaml fall under the * catch-all only, which any listed CODEOWNER satisfies.

✅ Check 1 (Passing sweep on in-PR commit): PASS — PR tip c00e95d0 equals the pinned SHA. In-PR commit 2eb25cfb carries run 35328216206 (attempt 2) with all 7 multi-node agentic / jobs (c4, c16, c32, c48, c128, c192, c256) and all 3 multi-node agentic eval / jobs (c16, c48, c256) at success. This is a multi-node submission, so those are the executed per-config checks; single-node */ and eval / are correctly skipped. The later merge commits bf68de67 (run 35486388642, cancelled) and c00e95d0 (run 35499219002, all skipped) executed nothing.

✅ Check 2 (Evals pass): PASS — eval_results_all/agg_eval_all.json from run 35328216206: GSM8K em_strict 0.9651 (c16, the draft-length-6 arm), 0.9712 (c48), 0.9712 (c256), n=1319 each, all above the dsv4 bar of 0.91 in infx/evals/thresholds.yaml. Evals ran on lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260913, the same image as the config, via /v1/chat/completions.

➖ Check 3 (Recipe linked/merged): N/A — disaggregated/multi-node submission (multinode: true, disagg: true, framework: sglang-disagg, files under benchmarks/multi_node/**); the recipe-link requirement applies to single-node recipes only.

✅ Check 4 (Reuse-sweep command): PASS — /use 35328216206 posted as a whole-line comment by ichbinblau (COLLABORATOR) on 2026-09-20; the earlier /reuse-sweep-run 35328216206 by billishyahao (COLLABORATOR) names the same run.

✅ Check 6 (Upstream image, engine-first): PASS — the only touched entry dsv4-fp4-mi355x-sglang-disagg-agentic-umbp-dspark runs lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260913 (upstream lmsysorg org) on MI355X; framework is SGLang, so engine-first ordering does not apply.

✅ Check 7 (Deprecated models/scenarios): PASS — dsv4 Agentic coding "including the MTP and DSpark arms" is active per MODELS.md (review date 2026-09-20); only single-turn 8k1k was retired.

✅ Check 8 (No architecture hacks): PASS — no --hf-overrides / --json-model-override-args (decode server_args show json_model_override_args: '{}'); the change only raises the DSpark draft length from 3 to 6 on two arms.

✅ Check 9 (Spec-decode via chat template): PASS — benchmark_command.txt in the c16 server logs runs aiperf with --endpoint /v1/chat/completions --endpoint-type chat.

✅ Check 10 (No engine patches): PASS — the diff adds one case line and two YAML value changes; no .patch, git apply, sed -i on engine sources, site-packages edits, or engine wheel installs.

✅ Check 11 (Agentic golden AL): PASS — both changed arms (c4, c16) launched decode with SGLANG_SIMULATE_ACC_LEN=3.77 SGLANG_SIMULATE_ACC_METHOD=match-expected SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token and --speculative-dspark-block-size 6 --speculative-num-steps 1 --speculative-num-draft-tokens 7; golden_al_distribution/dsv4-pro-0813-dspark.yaml thinking_on: 6: 3.77. Eval jobs ran real acceptance, as required.

➖ Check 12 (Append-only): N/A — the new perf-changelog.yaml entry has no append-only: true.

✅ Check 14 (Pareto coverage): PASS — one affected curve: dsv4 / agentic-coding / cluster:mi355x-amds / fp4 sglang-disagg / run 35328216206 attempt 2 (source SHA 2eb25cfb) / p90_e2el / lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260913. From the bmk_agentic_* artifacts (request_metrics.throughput.per_gpu.total_tput_tps vs request_metrics.latency.e2el.p90): 7 measured points, 6 on the upper-right frontier (c16 13.72s/6391, c32 20.66s/12406, c48 23.82s/16522, c128 39.18s/31488, c192 51.31s/43885, c256 63.81s/51446; c4 20.21s/3166 is dominated). Reproduced with infx.workflows.pareto_coverage (pinned to app d507f36): frontierPoints: 6, status: PASS, no invalid points, no canonical flag stamped. No P75 submitted. Live app revision was not independently inspected; helper semantics per its pinned source.

Assessed commit: c00e95d08a332509e55f9fa4d2b5c4582b5aa4ae.

@ichbinblau

Copy link
Copy Markdown
Collaborator Author

/use 35328216206

@edwingao28

Copy link
Copy Markdown
Collaborator

Hey @ichbinblau @billishyahao

  1. Could you add the DSpark checkpoint revision and show that the draft precision, including KV cache, matches the original? Please include the relevant code from the pinned image.
  2. Please update the existing CODEOWNER sign-off with the latest draft-precision and Pareto-coverage checks and evidence.
  3. After syncing with main, please move only this PR’s new changelog entry to the physical end of perf-changelog.yaml

ichbinblau and others added 2 commits September 20, 2026 16:18
…log.yaml

Merging main moved other PRs' entries past ours, breaking the
append-only-at-tail invariant. Restore it: remove our entry from its
old position and re-append it unchanged at the true tail, per
docs/configuration-procedures.md's merge-conflict procedure. No other
entry's bytes are touched.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ichbinblau

Copy link
Copy Markdown
Collaborator Author

Thanks for the comments, @edwingao28

Could you add the DSpark checkpoint revision and show that the draft precision, including KV cache, matches the original? Please include the relevant code from the pinned image.

this PR changes only the DSpark draft length — DECODE_MTP_SIZE 3 → 6 on the two low-conc arms (conc-list [4], [16]). It touches no model, checkpoint, draft architecture, weights, quantization, or KV-cache setting — so draft precision is identical to the original/unchanged arms by construction.

After syncing with main, please move only this PR’s new changelog entry to the physical end of perf-changelog.yaml

Done

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

Labels

agentx AgentX benchmarks, recipes, and infrastructure AMD full-sweep-enabled

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants