Skip to content

Add GB300 DeepSeek-V4 Dynamo-SGLang AgentX aggregated and disaggregated recipes / 新增 GB300 DeepSeek-V4 Dynamo-SGLang AgentX 聚合式与分离式配方#2157

Merged
cquil11 merged 21 commits into
mainfrom
nv-sglang-dsv4-agentx-gb300
Jul 16, 2026
Merged

Add GB300 DeepSeek-V4 Dynamo-SGLang AgentX aggregated and disaggregated recipes / 新增 GB300 DeepSeek-V4 Dynamo-SGLang AgentX 聚合式与分离式配方#2157
cquil11 merged 21 commits into
mainfrom
nv-sglang-dsv4-agentx-gb300

Conversation

@csahithi

@csahithi csahithi commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add one aggregated TP4 and five disaggregated DEP8 Pareto GB300 DeepSeek-V4 AgentX recipes
  • enable MTP for the aggregated worker and for both prefill and decode workers in the disaggregated recipes
  • add the matching NVIDIA master-config entries, GB300 launcher support, batched AgentX concurrency handling, and correct aggregated GPU accounting
  • use the upstream lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8 image, NVIDIA/srt-slurm v1.0.10, and Dynamo 1.3.0.dev1
  • use simulated acceptance length 2.49, matching the committed DeepSeek-V4 thinking-on golden curve for MTP level 3

Validation

  • Run Sweep #29385297092 succeeded on head 77822f3efd43dab3d8223d685869907f3e018825
  • all six applicable multi-node AgentX lanes passed
  • regular eval and result-comparison jobs are not applicable to this AgentX-only submission
  • the AgentX client uses the /v1/chat/completions endpoint

中文说明

概述

  • 新增 1 个聚合式 TP4 和 5 个分离式 DEP8 Pareto GB300 DeepSeek-V4 AgentX recipe(配方)
  • 聚合式 worker 启用 MTP,分离式配置的预填充和解码 worker 均启用 MTP
  • 新增对应的 NVIDIA 主配置、GB300 启动器支持、AgentX 批量并发处理,并修正聚合式部署的 GPU 计数
  • 使用上游 lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8 镜像、NVIDIA/srt-slurm v1.0.10 和 Dynamo 1.3.0.dev1
  • 使用模拟接受长度 2.49,与已提交的 DeepSeek-V4 思考模式开启、MTP level 3 金标准曲线一致

验证

  • Run Sweep #29385297092 已在 head 77822f3efd43dab3d8223d685869907f3e018825 上成功完成
  • 6 个适用的多节点 AgentX 任务全部通过
  • 本 PR 仅包含 AgentX 工作负载,因此常规评估和结果对比任务不适用
  • AgentX 客户端使用 /v1/chat/completions 端点

Add aggregated (TP4) and disaggregated (DEP8 pareto) GB300 DeepSeek-V4
agentic-coding recipes with prefill-side MTP to match decode, along with
the master-config sweep entries, GB300 launcher support, and the
sgl-deep-gemm downgrade helper.
@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 关于重新运行失败任务的文档

2 similar comments
@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 关于重新运行失败任务的文档

@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 关于重新运行失败任务的文档

@csahithi csahithi added NVIDIA full-sweep-enabled agentx AgentX benchmarks, recipes, and infrastructure labels Jul 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

@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 current diff — PR may have been updated during review):

  • 🔴 runners/launch_gb300-nv.sh:7-8 — The launcher's SLURM_PARTITION/SLURM_ACCOUNT exports at lines 7-8 are unconditional — they flip every gb300-nv job (glm5, dsr1, dsv4-trt/vllm, minimaxm3, kimik2.5, and ~11 others in configs/nvidia-master.yaml) from (batch_1, benchmark) to (batch_2, restricted), not just the new DSv4 sglang agentic recipes. If this cluster-wide migration is intentional it should be called out in the PR description; otherwise please gate it inside the same $IS_AGENTIC == 1 && $FRAMEWORK == dynamo-sglang && $MODEL_PREFIX == dsv4 branch used later in the file.

    Extended reasoning...

    What changes and where

    At runners/launch_gb300-nv.sh lines 7-8, the launcher unconditionally exports:

    export SLURM_PARTITION="batch_2"     # was batch_1
    export SLURM_ACCOUNT="restricted"    # was benchmark

    These are at the top of the file, before any framework/model branching. Every job whose GHA runner name starts with gb300-nv_ invokes this launcher (via bash ./runners/launch_${RUNNER_NAME%%_*}.sh in the benchmark templates), so these values are inherited by all gb300-nv jobs.

    Blast radius

    Grepping configs/nvidia-master.yaml for runner: (cluster:)?gb300-nv returns ~15 pre-existing config keys that will silently switch to the new partition/account after this PR merges:

    • glm5-fp4-gb300-dynamo-trt (and MTP variants)
    • glm5-fp4/fp8-gb300-dynamo-sglang (and MTP variants)
    • glm5.1-fp4/fp8-gb300-dynamo-sglang
    • dsr1-fp8-gb300-dynamo-trt
    • dsv4-fp4-gb300-dynamo-vllm, -trt, -trt-mtp, -vllm-agentic
    • minimaxm3-fp8-gb300-dynamo-vllm
    • kimik2.5-fp4-gb300-dynamo-vllm

    Sibling launchers (launch_b300-nv.sh still uses batch_1/benchmark, launch_gb200-nv.sh uses batch/benchmark) were not touched, so this isn't a repo-wide cluster migration.

    Inconsistency with the rest of the diff

    The same PR gates its srt-slurm repo checkout with if [[ "$IS_AGENTIC" == "1" && $FRAMEWORK == "dynamo-sglang" && $MODEL_PREFIX == "dsv4" ]] (line ~136), acknowledging the new stack is DSv4-agentic-specific. The partition/account exports ignore that pattern.

    Failure modes

    1. Submission fails. If the restricted account has no scheduling permission on batch_2 for the pre-existing non-DSv4 recipes, they all fail submission with a SLURM ACCOUNT_LIMIT/QOS_JobLimit error on their next sweep run.
    2. Silent baseline shift. Even if submission succeeds, if batch_2 differs from batch_1 in QoS/time-limit/node-count/interconnect topology, the ingested benchmark numbers for those 12 pre-existing configs will diverge from the pre-PR baseline already in the DB — attributed to this PR but caused by an unrelated infra change.

    Step-by-step proof of scope leak

    1. Merge this PR to main.
    2. A push-to-main sweep triggers because perf-changelog.yaml changed.
    3. The unchanged config glm5-fp4-gb300-dynamo-trt (routes to cluster:gb300-nv) is in the matrix.
    4. GHA schedules it on a gb300-nv_* runner; the runner invokes bash ./runners/launch_gb300-nv.sh.
    5. Line 7 exports SLURM_PARTITION=batch_2; line 8 exports SLURM_ACCOUNT=restricted.
    6. srtctl apply reads these via default_partition/default_account in the generated srtslurm.yaml and submits to (batch_2, restricted) — even though nothing about the glm5 recipe changed and the PR description never mentions this partition move.

    How to fix

    If the change is intentionally cluster-wide — please call it out in the PR description (why the migration, and confirmation that all pre-existing recipes have permission on batch_2/restricted).

    If it is DSv4-agentic-only, guard it with the same predicate the srt-slurm checkout already uses:

    if [[ "$IS_AGENTIC" == "1" && $FRAMEWORK == "dynamo-sglang" && $MODEL_PREFIX == "dsv4" ]]; then
        export SLURM_PARTITION="batch_2"
        export SLURM_ACCOUNT="restricted"
    else
        export SLURM_PARTITION="batch_1"
        export SLURM_ACCOUNT="benchmark"
    fi

    The full-sweep-enabled label on this PR will catch scenario (1) if it fires, but (2) is silent — the CI can't distinguish "the recipe got slower" from "a different partition served it".

Comment on lines +11 to +27
# Runs via `setup_script: pin-sgl-deep-gemm.sh` (before dynamo install + worker
# startup, inside each worker's container). Prints before/after so the run log
# shows what the container shipped vs what we pinned.
set -euo pipefail
export PIP_BREAK_SYSTEM_PACKAGES=1

TARGET="${SGL_DEEP_GEMM_VERSION:-0.1.3}"

echo "[pin-sgl-deep-gemm] before:"
pip show sgl-deep-gemm 2>/dev/null | grep -iE '^(Name|Version):' || echo " (not installed)"

echo "[pin-sgl-deep-gemm] installing sgl-deep-gemm==${TARGET} ..."
pip install --force-reinstall --no-deps \
--extra-index-url https://www.piwheels.org/simple \
"sgl-deep-gemm==${TARGET}"

echo "[pin-sgl-deep-gemm] after:"

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.

🟡 The new downgrade-sgl-deep-gemm.sh script has stale pin-sgl-deep-gemm references left over from a rename that missed the file's internals: the header comment on line 11 still says Runs via setup_script: pin-sgl-deep-gemm.sh`` and the log prefixes on lines 19, 22, and 27 print [pin-sgl-deep-gemm]. No functional impact — the script runs correctly — but anyone grepping sweep logs for `downgrade-sgl-deep-gemm` will miss the actual before/after markers. Renaming those four occurrences to `downgrade-sgl-deep-gemm` restores log discoverability.

Extended reasoning...

What the bug is

The new script at benchmarks/multi_node/srt-slurm-recipes/configs/downgrade-sgl-deep-gemm.sh contains stale references to a previous name (pin-sgl-deep-gemm.sh) inside its own body. Specifically:

  • Line 11 header comment: # Runs via setup_script: pin-sgl-deep-gemm.sh (before dynamo install + worker
  • Line 19: echo "[pin-sgl-deep-gemm] before:"
  • Line 22: echo "[pin-sgl-deep-gemm] installing sgl-deep-gemm==${TARGET} ..."
  • Line 27: echo "[pin-sgl-deep-gemm] after:"

Everywhere else in the PR, the script is referenced by its actual filename downgrade-sgl-deep-gemm.sh:

  • All 6 new recipe YAMLs (agg-gb300-tp4-…, disagg-gb300-2p1d-…, 2p4d-…, 4p4d-…, 6p4d-…, 12p4d-…) set setup_script: downgrade-sgl-deep-gemm.sh
  • runners/launch_gb300-nv.sh:147 sets SRTCTL_SETUP_SCRIPT="downgrade-sgl-deep-gemm.sh" and copies the file under that name

Grepping the repo for pin-sgl-deep-gemm returns matches only inside this script itself — no file named pin-sgl-deep-gemm.sh exists anywhere. This is a clear stale-rename artifact: the file was renamed from pin-… to downgrade-… but the internal comment and log prefixes were not updated.

Impact

Purely cosmetic — the script still executes correctly because setup_script: wiring in srtctl and SRTCTL_SETUP_SCRIPT in the launcher both go by filename, and echo prefixes are only read by humans. The one real cost is log-grep discoverability: someone tailing a sweep log and searching for the string downgrade-sgl-deep-gemm (the recipe-declared script name) will miss the before/after installation markers, which are the whole reason the echos exist.

Step-by-step proof

  1. In the PR diff, the new file appears as new file mode 100644 at benchmarks/multi_node/srt-slurm-recipes/configs/downgrade-sgl-deep-gemm.sh — that is its final name on disk.
  2. Line 11 of that same file, still in the diff: # Runs via setup_script: pin-sgl-deep-gemm.sh (before dynamo install + worker — refers to a filename that does not exist in the tree.
  3. Lines 19, 22, 27 emit log lines prefixed [pin-sgl-deep-gemm].
  4. Every recipe YAML in this PR sets setup_script: downgrade-sgl-deep-gemm.sh — a user who reads the recipe, then greps the sweep log for that string, matches nothing except a possible copy step in the launcher output.

Fix

Mechanical rename inside the script only — no callers change:

  • Line 11: pin-sgl-deep-gemm.shdowngrade-sgl-deep-gemm.sh
  • Lines 19, 22, 27: [pin-sgl-deep-gemm][downgrade-sgl-deep-gemm]

Severity

Nit — a doc/logging inconsistency with no runtime effect. Does not warrant blocking the PR.

Comment thread benchmarks/multi_node/srt-slurm-recipes/configs/downgrade-sgl-deep-gemm.sh Outdated
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

…-gemm patch

- Bump GB300 DeepSeek-V4 dynamo-sglang agentic image (agg + disagg) to
  lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8.
- Add concurrency 4 to the agg search-space (conc-list [1] -> [1, 4]).
- Drop the sgl-deep-gemm downgrade patch (downgrade-sgl-deep-gemm.sh setup
  script + its recipe setup_script: refs + launcher wiring); the regression
  (sglang #30399, cross-node DEP8 prefill grid-sync timeout) is fixed in the
  20260711 image.
@csahithi csahithi force-pushed the nv-sglang-dsv4-agentx-gb300 branch from df3011b to 11e9f7f Compare July 11, 2026 19:10
Resolve conflicts:
- run-sweep.yml: retain the multi-node-agentic conc fix (conc-list toJson +
  conc[0]). main reverted it as collateral of the #2127 revert (#2164), but our
  list-valued agentic conc still requires it (otherwise "A sequence was not
  expected" on the scalar conc input / mis-encoded conc-list).
- perf-changelog.yaml: drop the mi355x-disagg-agentic-hicache (#2127) entry
  whose config key main reverted out of the master config; keep the GB300
  agentic entry.
@github-actions

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

- Set the aggregated recipe's hierarchical-cache ratio to 6.
- Extend the agg search-space concurrencies to [1, 4, 8, 16].
@github-actions

Copy link
Copy Markdown
Contributor

enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"

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.

Question: why env var insteadof arg --router-temperature?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

No difference between the two (just cosmetic) - DYN_ROUTER_TEMPERATURE internally uses --router-temperature

# KV cache is reused across turns). Previously opted out because the
# frontend 400'd on aiperf's nvext.session_control actions; re-enabled
# to test with the current build.
AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "1"

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.

Should this just be set by default in the benchmark_lib ?

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.

Or even be hard coded into aiperf

@github-actions

Copy link
Copy Markdown
Contributor

@cquil11 cquil11 changed the title [WIP] Add GB300 DeepSeek-V4 dynamo-sglang agentic recipes [NVIDIA][AgentX] GB300 DeepSeek-V4 dynamo-sglang agentic recipes Jul 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

Root cause: the disaggregated recipes dropped the prefill speculative-decoding flags even though the pinned SGLang image already includes the DSV4 draft SWA transfer fix.

Fix: restore the EAGLE three-step, top-k 1, four-draft-token settings on every DSV4 disaggregated prefill worker while keeping the existing SGLang image unchanged.

Validation: generated the six-entry DSV4 agentic matrix, verified matching prefill/decode MTP settings in all five disaggregated recipes, and passed all 221 matrix-logic tests.

中文:恢复所有 DSV4 分离式配置的预填充端 MTP 参数。当前固定的 SGLang 镜像已经包含 DSV4 draft SWA 传输修复,因此无需升级镜像。已验证 6 个 AgentX 矩阵条目,且 221 项矩阵逻辑测试全部通过。
@github-actions

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@csahithi

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run

@csahithi

Copy link
Copy Markdown
Collaborator Author

@kedarpotdar-nv @csahithi After making changes can you guys please make any corresponding updates to sglang recipe as well as filling out the merge form?

@cquil11 - PR for the corresponding sglang recipe - sgl-project/sglang#31377

@Ankur-singh Ankur-singh changed the title [NVIDIA][AgentX] GB300 DeepSeek-V4 dynamo-sglang agentic recipes Add GB300 DeepSeek-V4 Dynamo-SGLang AgentX aggregated and disaggregated recipes / 新增 GB300 DeepSeek-V4 Dynamo-SGLang AgentX 聚合式与分离式配方 Jul 16, 2026
@Ankur-singh

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. Run Sweep #29385297092
  • 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:

  • This is an AgentX-only multi-node submission. All six applicable AgentX lanes passed; regular eval, collect-evals, collect-results, and compare-results jobs are not applicable and were skipped. / 本 PR 仅包含多节点 AgentX 工作负载。6 个适用的 AgentX 任务全部通过;常规评估、collect-evalscollect-resultscompare-results 任务不适用,因此被跳过。
  • The MTP configurations use AIPerf’s chat-completions endpoint and simulated acceptance length 2.49, matching the committed DeepSeek-V4 thinking-on golden curve for MTP level 3. / MTP 配置使用 AIPerf 的 chat-completions 端点和模拟接受长度 2.49,与已提交的 DeepSeek-V4 思考模式开启、MTP level 3 金标准曲线一致。
  • All changed recipes are multi-node, so the single-node upstream recipe requirement is not applicable. SGLang PR #31377 is informational and is not being used to satisfy that requirement. / 所有变更的 recipe 均为多节点配置,因此单节点上游 recipe 要求不适用。SGLang PR #31377 仅供参考,不用于满足该要求。

Signed: Ankur-singh

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — Ankur-singh is a named owner of configs/nvidia-master.yaml; all other changed paths are catch-all-only, covered by any recognized CODEOWNER.
✅ Check 1 (passing sweep on in-PR commit): PASS — run 29385297092 succeeded on head 77822f3 (in this PR); all six executed multi-node agentic / jobs are green, and the run carries the bmk_agentic_* artifacts validate_reusable_run requires. single-node */ / eval / jobs don't exist for this AgentX-only multi-node submission (agentic lanes are run-eval: false by workflow design).
➖ Check 2 (evals pass): N/A — agentic lanes run no accuracy evals by design; accuracy fairness is instead enforced via the golden-AL simulation verified in Check 10. Run image matches the PR config (lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8).
➖ Check 3 (recipe linked & merged): N/A — exclusively multi-node/disagg submission (benchmarks/multi_node/srt-slurm-recipes/**, multinode: true, framework dynamo-sglang); the recipe-link requirement applies to single-node recipes only.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run posted by csahithi (COLLABORATOR).
✅ Check 5 (latest template): PASS — all current-template items present; the one unchecked item (evals) is explained in the additional detail section (evals not applicable to AgentX-only).
✅ Check 6 (upstream image & ordering): PASS — image is upstream lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8; vLLM/SGLang-engine entries for dsv4 on gb300-nv already exist (dsv4-fp4-gb300-dynamo-sglang, dsv4-fp4-gb300-dynamo-vllm-agentic).
✅ Check 7 (no architecture hacks): PASS — no --hf-overrides/model-config edits; env toggles are engine kernel/runtime knobs that don't reduce model FLOPs.
✅ Check 8 (spec-decode via chat template): PASS — the agentic replay client drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh).
✅ Check 9 (no engine patches): PASS — no patches or engine-source rewrites; the dynamo 1.3.0.dev1 wheel install is the declared router framework, not an engine modification, and NVIDIA/srt-slurm v1.0.10 is orchestration tooling.
✅ Check 10 (golden AL simulation): PASS — all six agentic MTP configs pin SGLANG_SIMULATE_ACC_LEN=2.49 with match-expected/real-draft-token (agg env + disagg decode env); 2.49 equals the golden_al_distribution/dsv4_mtp.yaml thinking_on value for MTP level 3 (SGLANG_DEFAULT_THINKING=1, speculative-num-steps: 3).

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

LGTM

@cquil11 cquil11 merged commit 3355132 into main Jul 16, 2026
24 checks passed
@cquil11 cquil11 deleted the nv-sglang-dsv4-agentx-gb300 branch July 16, 2026 04:05
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 full-sweep-enabled NVIDIA

Projects

Development

Successfully merging this pull request may close these issues.

8 participants