Skip to content

test: validate upstream-native vLLM Router topologies - #2731

Open
cquil11 wants to merge 6 commits into
mainfrom
agent/vllm-router-upstream-native-validation
Open

test: validate upstream-native vLLM Router topologies#2731
cquil11 wants to merge 6 commits into
mainfrom
agent/vllm-router-upstream-native-validation

Conversation

@cquil11

@cquil11 cquil11 commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

Validate SemiAnalysisAI/srt-slurm #6 through InferenceX AgentX on GB200 using only topologies where a request Router is materially required.

The integration pins srt-slurm f7b5fe5f08740667d756785086d5a3e9800ce060 and vllm-router==0.1.15. It also restores the missing single-node eval-matrix assignment in e2e-tests.yml, preventing no-eval dispatches from evaluating fromJson('') and failing the workflow wrapper after otherwise successful jobs.

Validation matrix

Config Topology Router behavior exercised
dsr1-fp4-gb200-vllm-router-agentic-agg Single-node aggregate DEP4 Four native DP ranks behind one advertised vLLM base
dsr1-fp4-gb200-vllm-router-agentic-agg-dep8 Two-node aggregate DEP8 Eight DP ranks across two physical bases
dsr1-fp4-gb200-vllm-router-agentic-disagg 1P/2D, DEP4 per pool P/D selection, decode distribution, NIXL transfer, and session affinity
dsr1-fp4-gb200-vllm-router-agentic-disagg-2p2d 2P/2D, DEP4 per pool Four independently routable bases and all-base readiness

Single-worker DP1 cases are excluded because they do not demonstrate Router selection or KV-aware/session-affine routing.

All cases use DeepSeek R1 NVFP4 with vLLM 0.25.1, the 256k AgentX corpus, a 163,840-token model/AIPerf context limit, consistent_hash, and AgentX correlation IDs forwarded as X-Session-ID. AIPerf receives every logical backend metrics URL and requires the vllm: metric family.

Hardware validation

Exact-head workflow: 32923452280 (success)

  • InferenceX: fec5884c03b9bfab36025411e6ea24e7e9c57c2a
  • srt-slurm: f7b5fe5f08740667d756785086d5a3e9800ce060
Topology Job Slurm Profile Readiness and metrics Affinity
DEP4 98041566329 24190, COMPLETED 0:0 420/420, 0 errors 1/1 bases; Router + backend metrics; vllm: passed 4/4 ranks; 45 sessions; 0 violations
DEP8 98041566321 24188, COMPLETED 0:0 422/422, 0 errors 2/2 bases; Router + both backend metrics; vllm: passed 8/8 ranks; 46 sessions; 0 violations
1P/2D DEP4 98041566361 24189, COMPLETED 0:0 516/516, 0 errors 3/3 bases; all backend metrics; vllm: passed 4P+8D ranks; 50 sessions; 0 P/D violations
2P/2D DEP4 98041566410 24191, COMPLETED 0:0 514/514, 0 errors 4/4 bases; all backend metrics; vllm: passed 8P+8D ranks; 51 sessions; 0 P/D violations

The disaggregated jobs completed 555 two-stage requests each. All four jobs passed TTFT/ITL coverage, uploaded nonempty profile and server-metrics exports plus Router/backend logs, and had empty fatal-log scans. The vLLM Router does not expose the optional auto-discovered metrics endpoint in P/D mode; every explicitly configured backend endpoint was reachable and exported.

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

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

Beyond the inline findings, I also checked the ci-priority.yaml framework-prefix change for a vllm/vllm-router collision — _first_prefix_adjustment in utils/ci_priority.py resolves by first match in dict insertion order, and vllm-router is listed ahead of vllm with an identical 0.5 weight, so there's no scoring conflict.

Extended reasoning...

Findings were already reported as CONFIRMED inline comments (missing perf-changelog.yaml entry for the four new recipes, and a stale comment in launch_gb200-nv.sh). I independently verified one of the ruled-out candidate issues from the diff: the new vllm-router: 0.5 entry added to configs/ci-priority.yaml's framework-prefix map, ahead of the existing vllm: 0.5 entry. Reading utils/ci_priority.py, _first_prefix_adjustment iterates the adjustments dict in insertion order and returns on first match (value == prefix or value.startswith(f"{prefix}-")), so placing vllm-router before vllm correctly ensures a vllm-router framework value matches its own entry first — and since both entries carry the same 0.5 adjustment, there is no scoring divergence today regardless of order. This confirms the added inline comment ("Match the explicit Router runtime before the broader vLLM prefix") is accurate and the ordering is intentional, not a latent bug.

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

  • 🔴 perf-changelog.yaml — PR adds four new multi-node srt-slurm recipes (vllm-router agg/agg-dep8/disagg/disagg-2p2d in configs/nvidia-master.yaml) but does not append a perf-changelog.yaml entry, violating AGENTS.md's non-negotiable rule that every recipe addition requires a new perf-changelog.yaml entry. [also at: configs/nvidia-master.yaml:2617 - AGENTS.md requires every recipe addition to append a perf-changelog.yaml entry ("Every change that can affect…]

    Extended reasoning...

    Downstream consumers of perf-changelog.yaml (e.g. dashboards or release notes generated from it) will have no record of these four new GB200 DeepSeek-R1 vLLM-Router benchmarks, and CI/reviewers relying on this changelog for coverage tracking will silently miss the addition; a correct fix appends a changelog entry at the tail for this recipe/master-config addition.

    Verification: normal (per the repo's non-negotiable invariant). AGENTS.md line 21 states an absolute rule: "Every change that can affect benchmark performance and every recipe addition or modification requires a new perf-changelog.yaml entry. The file is append-only and byte-sensitive... append only at the tail." The diff adds four new recipes — configs/nvidia-master.yaml gains `dsr1-fp4-gb200-vllm-router-a

Comment on lines 403 to 405

# GLM-5.2 and MiniMax-M3 AgentX use v1.0.50 for complete logical-worker
# metrics discovery across aggregate, DP-attention, and disaggregated topologies.

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 pre-existing comment "GLM-5.2 and MiniMax-M3 AgentX use v1.0.50 for complete logical-worker metrics discovery..." was left in place while a new if [[ ... FRAMEWORK == "vllm-router" ]] branch was inserted above the elif it used to document, so the comment now sits over the wrong block (nit).

Extended reasoning...

A maintainer reading the vllm-router branch sees a comment claiming it's about GLM-5.2/MiniMax-M3 v1.0.50 pinning, which is misleading since that block actually pins the SemiAnalysisAI/srt-slurm commit for vllm-router; future edits risk being made in the wrong place based on the stale comment context.

Verification: nit. In runners/launch_gb200-nv.sh the pre-existing comment at lines 404-405 ("GLM-5.2 and MiniMax-M3 AgentX use v1.0.50 for complete logical-worker metrics discovery across aggregate, DP-attention, and disaggregated topologies.") was left in place while the diff inserted a new if [[ "$IS_AGENTIC" == "1" && "$FRAMEWORK" == "vllm-router" ]] branch immediately below it (cloning SemiAnaly

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d643611. Configure here.

dp-attn: true
additional-settings:
- "SRT_SLURM_REPOSITORY=https://github.com/SemiAnalysisAI/srt-slurm.git"
- "SRT_SLURM_REF=f7b5fe5f08740667d756785086d5a3e9800ce060"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Validated srt-slurm pin replaced

High Severity

This commit replaces the PR-documented and hardware-validated SRT_SLURM_REF (20e4762a…) with f7b5fe5f… across all four router configs and the GB200 launcher default. The PR’s purpose is to validate srt-slurm PR #6 at that exact head, so jobs now exercise a different checkout than the cited evidence.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit d643611. Configure here.

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

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant