Skip to content

[AgentX] vLLM DeepSeek-V4 B300 aggregate MTP#2258

Merged
cquil11 merged 28 commits into
mainfrom
agentx/dsv4-v300-vllm-mtp
Jul 21, 2026
Merged

[AgentX] vLLM DeepSeek-V4 B300 aggregate MTP#2258
cquil11 merged 28 commits into
mainfrom
agentx/dsv4-v300-vllm-mtp

Conversation

@majunze2001

@majunze2001 majunze2001 commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Adds DeepSeek-V4 B300 vLLM AgentX MTP coverage for GPU-resident, SimpleCPU-offloaded, and DEP topologies. Uses synthetic AL 2.49 for throughput, real verification for evals, and forwards DCP/PCP from the generated config.

cquil11 and others added 11 commits July 16, 2026 09:17
Carry the B300-only launcher, config search space, and changelog scope from PR #2202.

中文:拆分 DeepSeek-V4 B300 vLLM AgentX 配方,仅保留 PR #2202 中的 B300 启动器、配置搜索空间和变更日志范围。
Point the split B300 changelog entry to PR #2225.

中文:将拆分后的 B300 变更日志条目链接到 PR #2225
Signed-off-by: Jeff Ma <jeffjma@umich.edu>
Signed-off-by: Jeff Ma <jeffjma@umich.edu>
Signed-off-by: Jeff Ma <jeffjma@umich.edu>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjHXfE1FRN9c5XQqgeTdez
Restore upstream lines whitespace-for-whitespace and append the B300
entry so the changelog diff contains no deletions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjHXfE1FRN9c5XQqgeTdez
# Conflicts:
#	configs/nvidia-master.yaml
#	perf-changelog.yaml
@github-actions

Copy link
Copy Markdown
Contributor

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 As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

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 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

Comment thread configs/nvidia-master.yaml Outdated
Comment thread benchmarks/single_node/agentic/dsv4_fp4_b300_vllm_mtp.sh
… the recipe

Finalize the B300 AgentX vLLM search space (dsv4-fp4-b300-vllm-agentic):
- Add a TP8 GPU-resident arm at conc [1,2,4,6,8].
- Trim TP4 GPU-resident to conc [1,2,4,6,8,12,16,20]; extend TP4 SimpleCPU
  lazy-offload down to conc [20,24,28,32,36,40].
- Add an MTP speculative-decoding twin (num_speculative_tokens=3) for every
  topology (TP8/TP4 GPU-resident, TP4 SimpleCPU, DEP4, DEP8), each mirroring
  its non-MTP conc-list, routed via the launcher's spec-decoding=mtp suffix to
  dsv4_fp4_b300_vllm_mtp.sh.

MTP script: NUM_SPEC_TOKENS=3 -> TOKENS_PER_SEQ=4, so FULL_DECODE_ONLY
cudagraph capture sizes (num_seqs*TOKENS_PER_SEQ) scale to num_seqs*4. Sync the
tail with dsv4_fp4_b300_vllm.sh to restore the EVAL_ONLY branch (added upstream
by #1947) so MTP configs also run the SWE-bench Lite accuracy eval.

Add the perf-changelog entry for dsv4-fp4-b300-vllm-agentic (PR #2258).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tion

#1947 made single-node agentic recipes generate a SWE-bench eval row
(run_eval/eval_only + agentic fields) but never widened the changelog
matrix schema, so ChangelogMatrixEntry.evals (typed list[SingleNodeMatrixEntry],
fixed-seq-len only) rejects every agentic eval row -- breaking check-changelog
for any single-node agentic PR.

Widen evals to the same Union single_node already uses, and give
SingleNodeAgenticMatrixEntry optional run_eval/eval_only (None-default, so
benchmark rows are unchanged).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Restructure so the sweep runs only the new work, not the existing aggregate:
- Revert dsv4-fp4-b300-vllm-agentic to its main (#2241) search space (TP4
  [1..32], SimpleCPU [28..40], DEP4, DEP8) -- unchanged vs main, so it is not
  re-run.
- Add dsv4-fp4-b300-vllm-agentic-mtp: MTP twins of the aggregate arms
  (num_speculative_tokens=3), reshaped TP4 [1..20] / SimpleCPU [20..40].
- Add dsv4-fp4-b300-vllm-agentic-tp8: new TP8 GPU-resident topology at
  conc [1,2,4,6,8], both non-MTP and MTP.
- Point the perf-changelog entry at only the two new keys, so only they sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

majunze2001 and others added 3 commits July 17, 2026 13:39
Inject rejection_sample_method=synthetic + synthetic_acceptance_length=2.49
into the dsv4-fp4-b300-vllm MTP speculative-config, matching the dsv4-pro
golden AL (thinking_on, num_speculative_tokens=3) and the sglang gb300 MTP
recipe (SGLANG_SIMULATE_ACC_LEN=2.49).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
TP4, DEP4, and TP8 use gpu-memory-utilization 0.95 (down from 0.96); DEP8
stays at 0.92 for its larger prefill token budget.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Remove the dsv4-fp4-b300-vllm-agentic-tp8 config-key entirely; its TP8
GPU-resident MTP arm moves into dsv4-fp4-b300-vllm-agentic-mtp (the non-MTP
TP8 baseline is dropped). Also drop conc 64 and 72 from the DEP4 arm
(now [32,40,48,56]).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Oseltamivir added a commit that referenced this pull request Jul 18, 2026
Eval-only, agentic-coding-scoped entry for dsv4-fp4-b300-vllm-agentic so
the PR sweep (and the on-push main sweep after merge) runs exactly one
job: the DEP8 top-concurrency SWE-bench eval through the new
sweep-agentic-evals dispatch, confirming the fix for the eval-only
failures first seen on #2258/#2259.

中文:新增 changelog 条目以端到端验证 agentic 评估调度——针对
dsv4-fp4-b300-vllm-agentic 的 evals-only、仅 agentic-coding 场景条目,使
PR 扫描(及合并后 main 分支的 push 触发扫描)只运行一个任务:DEP8 最高并发
的 SWE-bench 评估经由新的 sweep-agentic-evals 调度执行,确认对 #2258/#2259
上首次出现的 eval-only 失败的修复。
@github-actions

Copy link
Copy Markdown
Contributor

Oseltamivir added a commit that referenced this pull request Jul 18, 2026
… sweep job / 修复 agentic SWE-bench 评估调度:新增 agentic_evals 独立分桶与扫描任务 (#2267)

* fix: dispatch agentic SWE-bench eval rows via a dedicated bucket and sweep job

Since #1947, generate_sweep_configs --evals-only marks the top-concurrency
agentic arm of each config as a SWE-bench eval row, but two consumers were
never taught about agentic eval rows, so any PR touching a single-node
agentic-coding config failed its sweep:

1. Schema: ChangelogMatrixEntry.evals only accepted SingleNodeMatrixEntry
   (fixed-seq-len), so process_changelog.py's final model_validate rejected
   the agentic row and check-changelog failed before any GPU work.
2. Dispatch: even with the schema widened, run-sweep.yml's sweep-evals job
   dispatches every eval row with fixed-seq-len inputs; an agentic row gets
   empty ISL/OSL/MAX_MODEL_LEN and scenario-type defaults to fixed-seq-len,
   so the launcher runs the fixed_seq_len benchmark script, which exits on
   check_env_vars.

Fix: route agentic eval rows into a new agentic_evals bucket (mirroring the
single_node['agentic'] design) dispatched by a new sweep-agentic-evals job
cloned from sweep-agentic's input block plus run-eval/eval-only, so an
agentic row can never reach the fixed-seq-len eval dispatch. The agentic
model accepts optional run-eval/eval-only carried by eval rows;
exclude_none keeps benchmark row output byte-identical.

中文:自 #1947 起,generate_sweep_configs --evals-only 会将每个配置中并发度最高的
agentic 搜索空间条目标记为 SWE-bench 评估行,但下游两个消费方并不认识 agentic
评估行,导致任何涉及单节点 agentic-coding 配置的 PR 扫描失败:其一,schema 层
ChangelogMatrixEntry.evals 仅接受固定序列长度条目,check-changelog 直接报错;
其二,调度层 sweep-evals 以固定序列长度的输入派发评估行,ISL/OSL/MAX_MODEL_LEN
为空且 scenario-type 回落为 fixed-seq-len,启动器因此运行错误的基准测试脚本并
在 check_env_vars 处退出。本修复新增 agentic_evals 独立分桶(与
single_node['agentic'] 设计一致),由新的 sweep-agentic-evals 任务按
sweep-agentic 的输入派发并附加 run-eval/eval-only,使 agentic 评估行不可能进入
固定序列长度的评估调度路径;基准测试行的输出保持逐字节不变。

* test: trim agentic eval bucket tests to essential coverage

Collapse fixtures into module constants, merge the accept/reject checks
into one test, and drop redundant cases; added test lines go from 212 to
100 with the two core guards kept (agentic rows validate only in
agentic_evals; realistic rows split end-to-end through the real schema).

中文:精简 agentic 评估分桶测试——fixture 合并为模块常量,接受/拒绝检查合并
为单个测试并移除冗余用例,新增测试行数从 212 降至 100,保留两项核心守卫
(agentic 行仅能通过 agentic_evals 校验;真实行形状端到端经过真实 schema
拆分)。

* chore: add changelog entry to validate agentic eval dispatch end-to-end

Eval-only, agentic-coding-scoped entry for dsv4-fp4-b300-vllm-agentic so
the PR sweep (and the on-push main sweep after merge) runs exactly one
job: the DEP8 top-concurrency SWE-bench eval through the new
sweep-agentic-evals dispatch, confirming the fix for the eval-only
failures first seen on #2258/#2259.

中文:新增 changelog 条目以端到端验证 agentic 评估调度——针对
dsv4-fp4-b300-vllm-agentic 的 evals-only、仅 agentic-coding 场景条目,使
PR 扫描(及合并后 main 分支的 push 触发扫描)只运行一个任务:DEP8 最高并发
的 SWE-bench 评估经由新的 sweep-agentic-evals 调度执行,确认对 #2258/#2259
上首次出现的 eval-only 失败的修复。

* ws
@github-actions

Copy link
Copy Markdown
Contributor

majunze2001 and others added 2 commits July 18, 2026 13:20
Make the MTP --speculative-config conditional on EVAL_ONLY: throughput points
pin synthetic acceptance length 2.49 (dsv4-pro golden AL), while the
auto-selected SWE-bench accuracy run (EVAL_ONLY=true) uses real MTP with normal
target verification. Synthetic acceptance bypasses verification and corrupts the
eval output (0.0000 score).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

@ivanium

ivanium commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

vllm recipe: vllm-project/recipes#645

@github-actions

Copy link
Copy Markdown
Contributor

@cquil11

cquil11 commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 29778042138

@cquil11

cquil11 commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

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.
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this.
  • 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 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 any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

Signed: cquil11

@cquil11
cquil11 merged commit d80f929 into main Jul 21, 2026
27 checks passed
@cquil11
cquil11 deleted the agentx/dsv4-v300-vllm-mtp branch July 21, 2026 17:04
@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — signer covered via @InferenceX/core (owns the catch-all and configs/nvidia-master.yaml); org MEMBER, team-membership API unreadable (403), which is not a failure; no ownership mismatch.
✅ Check 1 (passing sweep + evals on in-PR commit): PASS — commit 9e950fac (in this PR) has all 32 per-config agentic / benchmark jobs and the executed agentic eval / job green in run 29778042138; PR head 384a09a3 unchanged since sign-off, tip commit is the changelog-indent fix with a green reuse-sweep-gate/check-changelog run (29851097548).
✅ Check 2 (evals actually pass): PASS — SWE-bench Lite em_strict = 0.5367 (n=300) ≥ 0.50 bar, from that run's eval_results_all artifact, on the MTP DEP8 c224 config using this PR's exact image vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-904e4ec.
✅ Check 3 (recipe linked, merged, complete): PASS — vllm-project/recipes#645 MERGED 2026-07-16; the published DeepSeek-V4-Pro recipe documents the deployment-defining args: model on verified B300, TP-only and DEP (+--enable-expert-parallel) strategies, --kv-cache-dtype fp8, --block-size 256, 1M context, Blackwell FP4 indexer cache, mega-MoE backend on EP arms only, deepseek_v4 tool/reasoning parsers, MTP --speculative-config, and Simple/Mooncake KV offload. Draft length 3 (vs the recipe's 2-token example) is an explicitly permitted choice. Informational only: synthetic-acceptance knobs (required by the golden-AL policy), FULL_DECODE_ONLY token-granular cudagraph capture sizes, and the deep_gemm_amxf4_mega_moe/FLASHINFER_MLA_SPARSE_DSV4/--enable-ep-weight-filter kernel pins carried over unchanged from the merged baseline dsv4_fp4_b300_vllm.sh.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 29778042138 posted by cquil11 (MEMBER).
✅ Check 5 (latest checklist template): PASS — every current-template item present and checked; additional detail section filled in.
✅ Check 6 (upstream image / engine-first): PASS — vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-904e4ec is the upstream vLLM Docker Hub org on B300; vLLM entry, so no engine-first concern.
✅ Check 7 (no architecture hacks): PASS — no --hf-overrides/model-config edits; MTP is native to the DeepSeek-V4-Pro checkpoint and adds (not removes) computation.
✅ Check 8 (spec-decode chat template): PASS — agentic replay drives /v1/chat/completions (--endpoint-type chat) and the eval uses local-chat-completions --apply_chat_template.
✅ Check 9 (no engine patches): PASS — no patch files, heredoc rewrites of engine sources, or forked engine wheels; vllm-router==0.1.14 and the Mooncake connector package are upstream harness/connector deps the published recipe itself documents.
✅ Check 10 (agentic golden AL): PASS — throughput arms pin "rejection_sample_method":"synthetic","synthetic_acceptance_length":2.49, matching golden_al_distribution/dsv4_mtp.yaml (thinking_on, num_speculative_tokens=3 → 2.49); EVAL_ONLY correctly runs real target verification; no synthetic-acceptance knobs on any non-agentic config.

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

Projects

Development

Successfully merging this pull request may close these issues.

4 participants