Skip to content

[AgentX] DeepSeek-V4-Pro-0813 llm-d on GB200 - #3741

Open
cquil11 wants to merge 10 commits into
chore/remove-llmd-launcherfrom
test/dnm-llm-d
Open

cquil11 wants to merge 10 commits into
chore/remove-llmd-launcherfrom
test/dnm-llm-d

Conversation

@cquil11

@cquil11 cquil11 commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Changes

  • Add DeepSeek-V4-Pro-0813 AgentX on GB200: aggregate TP8/DEP8 on 2 nodes, 1P-DEP8/1D-DEP8 on 4 nodes, and 2P-DEP8/1D-DEP16 on 8 nodes.
  • Build on srt-slurm's llm-d frontend (frontend.type: llm-d, feat(frontends): add the llm-d router NVIDIA/srt-slurm#588), which the submodule includes as of v2.49.0 (chore: bump srt-slurm to v2.49.0 #3882). The standalone llm-d launcher is removed in chore: remove the standalone llm-d launcher #3883, which this PR is stacked on. Each DEP worker is one vllm serve that balances its DP ranks itself, so the EPP routes to the worker.
  • Keep the pinned DSpark ARM64 image and its bundled llm-d router v0.10.0. All AgentX MTP throughput uses golden synthetic acceptance with adaptive verification disabled: K3 → AL 3.01 and K5 → AL 3.61, selected at runtime from the committed curve. Combined throughput/eval requests launch a fresh server with real block rejection for accuracy.
  • Declare Mooncake DRAM offloading for the corresponding variants: 45% of available node DRAM for aggregate and 66.6667% for disaggregated runs. Keep the existing topology, draft lengths, and memory tuning.

@github-actions

github-actions Bot commented Oct 5, 2026

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 run only when the PR appends an inferencex-e2e/perf-changelog.yaml entry and carries exactly one primary label: full-sweep-fail-fast (strongly recommended; canary plus per-matrix fail-fast), full-sweep-enabled (canary; matrix jobs continue after a failure), or non-canary-full-sweep-enabled (no canary or fail-fast). The modifiers all-evals, evals-only, and agentx-fast require a primary label. On fork PRs, a maintainer applies the label. See sweep labels and reuse.
  • 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 在 inferencex-e2e/perf-changelog.yaml 末尾追加了条目,并且恰好带有一个主标签时,才会运行扫描:full-sweep-fail-fast(强烈推荐;canary 加逐矩阵 fail-fast)、full-sweep-enabled(有 canary;矩阵任务在失败后继续运行)或 non-canary-full-sweep-enabled(无 canary,也无 fail-fast)。修饰标签 all-evals、evals-only 和 agentx-fast 必须与主标签一起使用。fork PR 的标签由维护者添加。参见扫描标签与复用。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

@cquil11 cquil11 added the full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures label Oct 9, 2026
@cquil11 cquil11 changed the title [DNM] Test the llm-d router through srt-slurm [AgentX] DeepSeek-V4-Pro-0813 llm-d on GB200 Oct 9, 2026
@cquil11
cquil11 marked this pull request as ready for review October 9, 2026 20:39
@cquil11
cquil11 requested a review from a team October 9, 2026 20:39
@cquil11
cquil11 changed the base branch from main to chore/remove-llmd-launcher October 9, 2026 20:39
@cquil11
cquil11 added this pull request to stack #3884 October 9, 2026 20:39
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

inferencex-e2e/infx diff: +7 -4

Generally most InferenceX submissions don't need to add changes to the infx package. On the off chance they do, generally the diff is small. Please prompt your agent to clean your PR to keep your diff to only necessary & minimal changes too. We have an increased code quality bar for changes to the infx package.

中文

大多数 InferenceX 提交通常不需要修改 infx 包。即使确实需要,改动通常也很小。请让你的 agent 清理 PR,使改动只包含必要且最小的内容。infx 包的改动有更高的代码质量要求。

@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @cquil11's task in 1m 2s —— View job


Review of PR #3741

  • Gather context (diff vs origin/chore/remove-llmd-launcher)
  • Review recipes, master config, lane change, changelog
  • Post findings

I found one blocking issue and posted it as an inline comment.

  • 🔴 2P1D decode GPU count (inferencex-e2e/configs/nvidia-master.yaml:6127): the DEP16 decode is declared as tp: 8, ep: 16, but the recipe runs it on 16 GPUs. Results count GPUs from tp, so this variant would record 24 GPUs instead of 32 and overstate throughput per GPU by about 33%. The node count is read from the recipe, so the job will still launch and the wrong numbers won't stand out. Fix: set tp: 16, ep: 16.

The other checks passed:

  • The perf-changelog.yaml entry is appended at the end of the file.
  • The image is on the public registry quay.io and pinned by digest.
  • The dsv4 prefix is valid.
  • Adding vllm to the gb200-nv frameworks in lanes.py only enables the new configs.
  • The Mooncake segment sizes match the declared DRAM shares: 4 × 150 GB is about 2/3 and 4 × 101 GB is about 45% of each ~900 GB tray.

Comment thread inferencex-e2e/configs/nvidia-master.yaml Outdated

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

Additional findings (outside the current diff — GitHub can't attach inline comments there):

  • 🔴 inferencex-e2e/infx/launch/drivers/srt/lanes.py — New gb200-nv dsv4 'vllm' (llm-d) multi-node AgentX jobs never qualify for shared_run_root, so their srt-slurm checkout lands in the plain runner workspace instead of the Lustre shared-run-root. check_request (lanes.py:69) now lets FRAMEWORK=vllm dsv4 jobs onto this lane, but shared_run_root's Matches at lines 82-83 only list frameworks=any_of("dynamo-vllm") and dynamo-sglang+agentic, so shared stays False in run_multinode (srt/init.py:134) and compute_workspace (checkout.py:195) skips staging a node-visible copy. If GITHUB_WORKSPACE isn't visible to the extra GB200 compute nodes a job allocates, the worker nodes can't find the installed venv/checkout and the job fails at startup. Fix: add a dsv4+frameworks=any_of("vllm") (agentic) Match to gb200-nv's shared_run_root tuple alongside the existing dynamo-vllm/dynamo-sglang rows.

    Why this was flagged

    Trigger: a multinode AgentX launch with MODEL_PREFIX=dsv4, FRAMEWORK=vllm on cluster gb200-nv (the new agg-llm-d.yaml/disagg-llm-d.yaml recipes added in configs/nvidia-master.yaml, e.g. dsv4-fp4-gb200-vllm-llm-d-agentic-mtp-disagg using 2P-DEP8/1D-DEP16 over 8 nodes). lanes.py:69 now accepts framework 'vllm' for gb200-nv, but the shared_run_root Matches at lanes.py:82-83 require frameworks dynamo-vllm or dynamo-sglang exactly, so Match.call (policy.py:42) returns False for 'vllm'. run_multinode computes shared=False (srt/init.py:134), so checkout_dir (checkout.py:52) places the checkout under run.workspace rather than runners.yaml's gb200-nv shared-run-root (/mnt/lustre01/users-public/sa-shared/gha-runs, line 721). The existing dsv4+dynamo-vllm/dynamo-sglang rows were added specifically because this same cluster+model combo at multi-node scale needed the Lustre root; nothing in the new code gives 'vllm' that same treatment.

    Verification: The new dsv4-fp4-gb200-vllm-llm-d-agentic-mtp-disagg/agg jobs (nvidia-master.yaml, framework: vllm, runner: cluster:gb200-nv) are admitted to the gb200-nv SRT_MULTI lane because lanes.py:69 added "vllm" to frameworks. shared is computed at srt/init.py:134, and gb200-nv's shared_run_root matches (lanes.py:81-83) cover only dynamo-vllm and dynamo-sglang+agentic, not vllm, so shared=False.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

cquil11 and others added 4 commits October 9, 2026 15:56
Port #2719's llm-d submission to srt-slurm's llm-d frontend: disagg
1P1D DEP8/DEP8 and 2P1D DEP8/DEP16 with Mooncake on prefill, and agg
TP8, DEP8, and DEP8 with Mooncake. Drop the MiniMax-M3 smoke keys.

Co-authored-by: Ilya Markov <markovilya197@gmail.com>
Signed-off-by: Cam Quilici <cjquilici@gmail.com>
Signed-off-by: Cam Quilici <cjquilici@gmail.com>
Signed-off-by: Cam Quilici <cjquilici@gmail.com>
Signed-off-by: Cam Quilici <cjquilici@gmail.com>
@cquil11 cquil11 added non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim) and removed full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures labels Oct 9, 2026
Signed-off-by: Cam Quilici <cjquilici@gmail.com>
Signed-off-by: Cam Quilici <cjquilici@gmail.com>
… timeout

Signed-off-by: Cam Quilici <cjquilici@gmail.com>
… test/dnm-llm-d

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
Signed-off-by: Cam Quilici <cjquilici@gmail.com>

This branch has not been deployed

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

Labels

non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim)

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant