Skip to content

perf(agentx): refresh Qwen3.5 GB300 recipes with correct metrics - #2477

Merged
cquil11 merged 10 commits into
mainfrom
nv-qwen35-agentx-gb300-pareto-recipes
Aug 7, 2026
Merged

perf(agentx): refresh Qwen3.5 GB300 recipes with correct metrics#2477
cquil11 merged 10 commits into
mainfrom
nv-qwen35-agentx-gb300-pareto-recipes

Conversation

@csahithi

@csahithi csahithi commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Refresh the Qwen3.5-397B-A17B NVFP4 GB300 AgentX frontier with the 14-point locally validated curve: seven aggregate TP2 points and seven disaggregated TP2/TP2 or TP4/TP4 points.
  • Upgrade the Qwen3.5 AgentX path to NVIDIA/srt-slurm v1.0.38 so AIPerf receives every logical SGLang worker's metrics endpoint, and enable metrics on all 21 aggregate, prefill, and decode engine roles.
  • Require non-empty AIPerf JSON/CSV exports containing sglang: backend metrics before publishing trace artifacts, preventing another successful-but-incomplete run.
  • Synchronize generated metadata with the recipes' deployed topology: HiCache host-DRAM offload on all 14 points and Dynamo router commit 5a638087 on the seven disaggregated points.

Validation

  • Local 30-minute re-sweep: 33 steady-state samples, zero request errors, and zero retract events; the selected 14 points are the strict non-dominated set under the historical output-token-throughput-per-user p50 metric.
  • Generated-matrix audit: 14/14 points use dram + hicache; TP2 allocates 405 GB CPU DRAM, TP4 allocates 811 GB; all seven disaggregated points carry the exact Dynamo router commit and aggregate points carry no router.
  • Recipe audit: 14 recipes, 21/21 engine roles with metrics enabled, and all 14 benchmarks require the sglang: metric prefix.
  • Tests: utils/test_process_result.py (50 passed), utils/matrix_logic/ (224 passed), and shell syntax checks passed.

@github-actions

github-actions Bot commented Aug 3, 2026

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 force-pushed the nv-qwen35-agentx-gb300-pareto-recipes branch from 4360f90 to f211f95 Compare August 3, 2026 17:59
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Comment thread perf-changelog.yaml
Comment thread configs/nvidia-master.yaml
Comment thread perf-changelog.yaml Outdated
Refresh the Qwen3.5-397B-A17B NVFP4 GB300 AgentX frontier with the
fourteen-point locally-validated curve: aggregate TP2 (c1/c24/c32/c40/
c48/c52/c64), disaggregate TP2/TP2 (c72), and disaggregate TP4/TP4
(c8/c16/c32/c64/c96/c128), all MTP/NEXTN + hicache with
X-Dynamo-Session-ID affinity.
@csahithi
csahithi force-pushed the nv-qwen35-agentx-gb300-pareto-recipes branch from f211f95 to a020236 Compare August 3, 2026 18:42
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

The 7 aggregated (disagg: false) agg entries run a single 2-GPU worker
serving both prefill and decode. With decode.num-worker: 1,
process_agentic_result.py counts num_gpus=4/tp=4 instead of 2/2 —
halving reported per-GPU throughput and mislabeling TP4. Set decode
num-worker back to 0 to match the sibling aggregated configs.
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

…0-pareto-recipes

# Conflicts:
#	perf-changelog.yaml
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

…0-pareto-recipes

# Conflicts:
#	perf-changelog.yaml
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

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

Additional detail section:

  • Head reviewed: b087b804be36e6d5403c02067e36e7ecb8cdc586.
  • Validation (item 3): run 30952941763 is a sweep pinned to this exact head and concluded success. All 14 agentic lanes executed non-skipped and succeeded, matching the fourteen-point curve this PR submits: aggregate TP2 at c1/c24/c32/c40/c48/c52/c64 (7), disaggregated TP4/TP4 at c8/c16/c32/c64/c96/c128 (6), and disaggregated TP2/TP2 at c72 (1).
  • Item 4 (passes evals) — UNCHECKED. That run produced no eval lanes at all and collect-evals is skipped, so there is no eval evidence at this head. This is consistent with the config rather than a regression: both qwen3.5-fp4-gb300-dynamo-sglang-agentic-agg and -disagg declare only the agentic-coding scenario with no eval selection, and this PR refreshes existing entries rather than adding new ones. I am not attesting to an eval result that was not produced.
  • Item 6 (agentic golden AL) — verified. Every added recipe sets SGLANG_SIMULATE_ACC_LEN: '3.39' with SGLANG_SIMULATE_ACC_METHOD: match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE: real-draft-token, i.e. simulated synthetic acceptance, and speculative-algorithm: NEXTN with speculative-num-steps: 3. That value is exactly golden_al_distribution/qwen3.5_mtp.yaml -> qwen3.5-397b-a17b-nvfp4.thinking_on[3] = 3.39. All 21 added acceptance blocks carry the identical value, so no lane substitutes a different acceptance target. Reviewer note: the recipes do not pin the thinking mode explicitly and rely on the model's default, while 3.39 is the thinking-on figure (thinking-off at the same draft length is 3.33). The recipes being replaced on main pin the same 3.39 with the same absence of an explicit thinking flag, so this matches merged precedent for this entry rather than changing behaviour here.
  • Item 5 (spec-decode chat templates) — verified: the benchmark is type: custom AgentX trace replay, which is natively chat-formatted, so acceptance length is measured against real conversation traffic rather than random-token prompts.
  • Item 7 (MODELS.md) — verified: MODELS.md lists Qwen3.5-397B-A17B active scenarios as "Single-turn 8k1k, Agentic coding; fp8/fp4 only", and its deprecation tables retire only the non-MTP agentic arm and all bf16 recipes. This submission is fp4 agentic coding with MTP/NEXTN, i.e. the published arm.
  • Items 11 / 11a (single-node recipe documentation) — not applicable: multi-node submission (multinode: true, framework dynamo-sglang); the recipe-documentation requirement is scoped to single-node vLLM/SGLang recipes.
  • Item 12 (no engine patches) — verified: no added recipe declares setup_script or any patch key, and the diff contains no .patch files, git apply/patch calls, sed or heredoc rewrites of engine sources, site-packages edits, or forked engine wheel installs. The launcher moves the Qwen3.5 agentic path from NVIDIA/srt-slurm tag v1.0.22 to tag v1.0.36 — an immutable tag, not a moving branch. No waiver is required.
  • Item 2 (code quality) — verified: the change replaces stale TP4 aggregate points with a TP2 frontier and keeps configs/nvidia-master.yaml in sync with the checked-in recipe filenames; the deleted recipes are the ones the config no longer references. The perf-changelog.yaml hunk is purely additive (no deletions, no whitespace changes).
  • Items 9 / 10 (upstream image and engine-first ordering): the image is lmsysorg/sglang:nightly-dev-cu13-20260724-433429b1 from the upstream lmsysorg Docker org, and this entry is itself the SGLang submission for Qwen3.5 on GB300.
  • CODEOWNER scope: evaluated every changed path against the live .github/CODEOWNERS with last-match-wins. configs/nvidia-master.yaml is the only specifically owned path and lists @ankur-singh; the 19 recipe files, perf-changelog.yaml, and runners/launch_gb300-nv.sh match only the catch-all * @InferenceX/core.

Signed: Ankur-singh

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — Ankur-singh is a listed owner of configs/nvidia-master.yaml (the only specifically-owned changed path); all other changed files match only the * @InferenceX/core catch-all, which any recognized CODEOWNER satisfies.
✅ Check 1 (passing sweep on in-PR commit): PASS — head b087b80 (still the PR tip) carries all 14 multi-node agentic / lanes with conclusion success, non-skipped, in run 30952941763, matching the fourteen submitted frontier points.
➖ Check 2 (evals pass): N/A — the sweep generated zero eval rows by design: eval selection covers 8k1k scenarios only and agentic evals are opt-in (mark_eval_entries in utils/matrix_logic/generate_sweep_configs.py), and this PR touches only agentic-coding scenarios. The sign-off honestly left the eval item unchecked and documented exactly this; agentic accuracy fairness is instead governed by the golden-AL simulated acceptance verified in Check 11.
➖ Check 3 (recipe link): N/A — disaggregated/multi-node submission (all benchmark files under benchmarks/multi_node/srt-slurm-recipes/**, entries 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 checklist): PASS — every current-template item is present; the two unchecked items (evals; single-node recipe link) are explained in the additional detail section, and the additional-reasoning item is checked.
✅ Check 6 (upstream image / engine-first): PASS — both touched entries run upstream lmsysorg/sglang:nightly-dev-cu13-20260724-433429b1 on GB300; the PR adds no new non-vLLM/SGLang framework entry (it refreshes the existing dynamo-sglang entries, which serve via the upstream SGLang engine image and are the SGLang submission for qwen3.5 on GB300).
✅ Check 7 (MODELS.md): PASS — Qwen3.5-397B-A17B agentic coding is active (fp8/fp4 only) and MTP is the published arm; this PR is fp4 agentic MTP, so no deprecated model/scenario/combination is submitted.
✅ Check 8 (no architecture hacks): PASS — no --hf-overrides/model-override args or model-config edits anywhere in the diff; changes are parallelism, kv-cache-dtype, scheduler, and hicache knobs.
✅ Check 9 (spec-decode via chat template): PASS — the AgentX trace replay drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh).
✅ Check 10 (no engine patches): PASS — no .patch files, heredoc/sed rewrites, site-packages edits, or forked engine wheels; the runners/launch_gb300-nv.sh change only bumps the NVIDIA/srt-slurm orchestration harness tag (v1.0.22 → v1.0.36), and the pinned engine image runs as shipped.
✅ Check 11 (agentic golden AL): PASS — all 14 recipes pin SGLANG_SIMULATE_ACC_LEN: '3.39' with match-expected + real-draft-token in the server/decode environments and use speculative-num-steps: 3, exactly golden_al_distribution/qwen3.5_mtp.yamlthinking_on[3] = 3.39; no synthetic-acceptance knob appears on any non-agentic config (the PR is agentic-only).

@cquil11

cquil11 commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 30952941763

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@cquil11 staged run 30952941763: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-04~r30952941763

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@cquil11 已将运行 30952941763 发布到预发布环境:https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-04~r30952941763

后续的 /stage-results 请求不会移除此运行;再次发布相同的运行 ID 会更新其预发布数据。预发布工作流

@cquil11

cquil11 commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Thanks for the PR! A couple comments here. +viz @xinli-sw @Ankur-singh

First of all, I notice perf isn't substantially better (besides higher interactivity achieved via disagg). I suppose this is expected since no real use of wide EP?

CleanShot 2026-08-05 at 14 11 11

Second, with AgentX we display server metrics on the frontend. Therefore, it's quite important to supply AIPerf with the correct --server-metric-urls (especially important in disagg). I think we can merge this and then re-open the PR accordingly to add these.

@xinli-sw

xinli-sw commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

it will at least refresh the existing submission which is even lower

cquil11 added a commit that referenced this pull request Aug 5, 2026
Resolve the append-only perf changelog by preserving main verbatim and re-appending PR #2477 at the tail.\n\n中文:将 origin/main 合并到 GB300 AgentX 刷新分支;保持 main 的 perf-changelog.yaml 内容不变,并将 PR #2477 的条目重新追加到文件末尾。
@cquil11

cquil11 commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

it will at least refresh the existing submission which is even lower

tbf, the old results used an outdated version of aiperf before our methodology changes. so they're not apples to apples anyway.

@cquil11 cquil11 changed the title perf(agentx): Refresh Qwen3.5 GB300 Pareto recipes perf(agentx): refresh Qwen3.5 GB300 recipes and trace metrics / 刷新 Qwen3.5 GB300 配方与 trace 指标 Aug 5, 2026
Use srt-slurm v1.0.38 and enable SGLang backend metrics for the 14-point Qwen3.5 GB300 sweep. Record the recipes' existing HiCache DRAM tier and pinned Dynamo router so generated metadata matches the deployed topology.

使用 srt-slurm v1.0.38,并为 Qwen3.5 GB300 的 14 个扫描点启用 SGLang 后端指标。记录配方中现有的 HiCache DRAM 层和固定的 Dynamo 路由器,使生成的元数据与实际部署拓扑一致。
@cquil11 cquil11 changed the title perf(agentx): refresh Qwen3.5 GB300 Pareto recipes / 刷新 Qwen3.5 GB300 Pareto 配方 perf(agentx): refresh Qwen3.5 GB300 recipes with correct metrics / 使用正确指标刷新 Qwen3.5 GB300 配方 Aug 5, 2026
@SemiAnalysisAI SemiAnalysisAI deleted a comment from csahithi Aug 5, 2026
@cquil11 cquil11 changed the title perf(agentx): refresh Qwen3.5 GB300 recipes with correct metrics / 使用正确指标刷新 Qwen3.5 GB300 配方 perf(agentx): refresh Qwen3.5 GB300 recipes with correct metrics Aug 5, 2026
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@cquil11

cquil11 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 31042542308

@cquil11

cquil11 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 31042542308

@cquil11

cquil11 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 31042542308

@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. Please link to GitHub Action workflow that shows this. — https://github.com/SemiAnalysisAI/InferenceX/actions/runs/31042542308
  • 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 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 any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

  • Scope. Refreshes the Qwen3.5 GB300 AgentX frontier for qwen3.5-fp4-gb300-dynamo-sglang-agentic-agg and -agentic-disagg: replaces the stale nine-point curve with a fourteen-point set (aggregate TP2 at c1/c24/c32/c40/c48/c52/c64, disaggregated TP4/TP4 at c8/c16/c32/c64/c96/c128, disaggregated TP2/TP2 at c72). Reviewed at head 01b54253996ac7516d8686e980d733bd3bca7dd3.
  • Validation evidence, and why it is linked at an in-PR commit rather than the tip. Run 31042542308 executed at in-PR commit eb1e4107a and is a real sweep, not a reuse no-op: setup = success with reuse-sweep-gate skipped, and 14/14 multi-node agentic lanes concluded success, matching the fourteen submitted frontier points one-for-one. The only two commits after it are 027c23ed6 (a merge of main) and 01b542539 (which adds nothing but a missing trailing newline to perf-changelog.yaml) — neither touches a recipe, configs/nvidia-master.yaml, benchmarks/benchmark_lib.sh, or runners/launch_gb300-nv.sh, so the measured configuration is byte-identical to the submitted one. /reuse-sweep-run 31042542308 is already on record from cquil11 (COLLABORATOR), pinning exactly this run.
    • Caution for anyone re-checking this: a second run at the same SHA, 31042450810, also reports success but is a reuse no-op — reuse-sweep-gate = success, setup skipped, 9 leaves skipped and zero executed. It is not evidence. The genuine run is 31042542308.
  • Evals (unchecked). Not applicable by design, and left unchecked rather than papered over. Eval selection covers 8k1k scenarios only and agentic evals are opt-in (mark_eval_entries in utils/matrix_logic/generate_sweep_configs.py); this PR touches only agentic-coding scenarios, so the sweep generated zero eval rows. Accuracy fairness for this submission is instead carried by the golden-AL synthetic acceptance item below.
  • Agentic golden AL. Verified directly at head, not assumed. The recipes pin SGLANG_SIMULATE_ACC_LEN: '3.39' with SGLANG_SIMULATE_ACC_METHOD: match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE: real-draft-token, at speculative-num-steps: 3 — exactly golden_al_distribution/qwen3.5_mtp.yamlqwen3.5-397b-a17b-nvfp4.thinking_on[3] = 3.39. On disaggregated points the pin is present in both the prefill and decode environments. No substituted acceptance target anywhere.
  • Chat template (spec decode). The AgentX trace replay drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh), so the acceptance distribution is measured against real chat-templated traffic.
  • KV-offload metadata is now truthful. This is the substance of eb1e4107a. The master entries declare kv-offloading: dram with kv-offload-backend: { name: hicache }, and the recipes really do enable that tier — enable-hierarchical-cache: true, hicache-ratio: 0.9, hicache-io-backend: kernel, hicache-mem-layout: page_first_direct, hicache-write-policy: write_back. Disaggregated points additionally carry router-mode: kv with router-session-affinity-ttl-secs: 3600. Before this fix the generated artifacts reported kv_offloading=none, allocated_cpu_dram_gb=0 and a null router while the deployed topology used all three — i.e. published metadata described a run that did not happen. That is exactly the master↔recipe parity failure mode this checklist exists to catch, and it is now corrected.
  • MODELS.md. Qwen3.5-397B-A17B agentic coding is active on fp8/fp4, and MTP is the published arm of the spec-decode A/B. This PR is fp4 agentic MTP, so no deprecated model, scenario, or combination is submitted.
  • Model architecture. No --hf-overrides, model-override arguments, or model-config edits anywhere in the diff. Changes are parallelism, KV-cache dtype, scheduler, HiCache and router knobs only.
  • Upstream image and framework ordering. Both entries run upstream lmsysorg/sglang:nightly-dev-cu13-20260724-433429b1 from the official https://hub.docker.com/u/lmsysorg org — no fork, no vendor rebuild. This is the SGLang submission for qwen3.5 on GB300 (Dynamo is the disagg frontend), so engine-first ordering is satisfied by construction; no new non-vLLM/SGLang entry is added.
  • Recipe documentation (unchecked). Not applicable. Every benchmark file lives under benchmarks/multi_node/srt-slurm-recipes/, and both entries are multinode: true; the requirement is scoped to single-node recipes, of which this PR adds none.
  • No engine patching. No .patch files, git apply, sed -i rewrites of engine sources, site-packages edits, monkey-patching, or forked/rebuilt engine wheels; the pinned image runs as shipped and no waiver is needed. runners/launch_gb300-nv.sh only moves the orchestration harness to NVIDIA/srt-slurm v1.0.38 — note specifically that this is the upstream NVIDIA repository, not a personal fork: the two features the branch was previously pinned to a fork for are now merged upstream, which the launcher comment records.
  • Mergeability (separate from this review). The PR is currently CONFLICTING, on both perf-changelog.yaml and configs/nvidia-master.yaml. That is a merge-time concern being handled separately and is deliberately not folded into any checklist judgment above; this sign-off attests to the submission's content and evidence, not to its merge state.

Signed: Ankur-singh

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — Ankur-singh is a listed owner of configs/nvidia-master.yaml (the only specifically-owned changed path); all other changed files match only the * @InferenceX/core catch-all, which a recognized CODEOWNER satisfies.
✅ Check 1 (Passing sweep on in-PR commit): PASS — run 31042542308 executed at in-PR commit eb1e4107a with setup=success, reuse-sweep-gate skipped (real run, not a reuse no-op), and all 14 multi-node agentic / lanes success, matching the 14 submitted frontier points. The two later commits (027c23ed6 merge of main; 01b542539 +2/−1 on perf-changelog.yaml) touch no recipe/config, verified from the commit diffs.
➖ Check 2 (Evals pass): N/A — eval selection covers 8k1k only and agentic evals are opt-in (mark_eval_entries in utils/matrix_logic/generate_sweep_configs.py), so this agentic-only sweep generated zero eval rows; the skipped eval / lanes are structural, not a failure. The run's lanes used the PR's exact pinned image (lmsysorg/sglang:nightly-dev-cu13-20260724-433429b1); accuracy fairness is carried by the golden-AL simulated acceptance verified in Check 11.
➖ Check 3 (Recipe linked & merged): N/A — disaggregated/multi-node submission; all benchmark files are under benchmarks/multi_node/srt-slurm-recipes/** and both master entries are multinode: true; the recipe-link requirement applies to single-node recipes only.
✅ Check 4 (Reuse command): PASS — /reuse-sweep-run 31042542308 posted by cquil11 (MEMBER), pinning the validated run.
✅ Check 5 (Latest checklist): PASS — every current-template item is present; the two unchecked items (evals, single-node recipe link) are each explained in the additional detail section, as the template's final item allows.
✅ Check 6 (Upstream image / engine-first): PASS — both entries run upstream lmsysorg/sglang:nightly-dev-cu13-20260724-433429b1; no new non-vLLM/SGLang framework entry is added (SGLang is the engine; Dynamo is the disagg frontend on pre-existing dynamo-sglang entries).
✅ Check 7 (Deprecated models): PASS — per MODELS.md (review date 2026-08-07), qwen3.5 agentic coding is active on fp4, and MTP is the published arm of the spec-decode A/B; this PR is fp4 agentic MTP.
✅ Check 8 (No architecture hacks): PASS — no --hf-overrides, model-override args, or model-config edits anywhere in the diff; changes are parallelism, KV-cache dtype, HiCache, scheduler, and router knobs.
✅ Check 9 (Spec-decode chat template): PASS — the agentic replay drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh:1865-1866).
✅ Check 10 (No engine patches): PASS — no .patch/git apply/sed -i/site-packages edits or engine wheel installs; runners/launch_gb300-nv.sh only bumps the orchestration harness to upstream NVIDIA/srt-slurm v1.0.38, and the benchmark_lib.sh change is client-side artifact validation.
✅ Check 11 (Agentic golden AL): PASS — all 14 recipes pin SGLANG_SIMULATE_ACC_LEN: 3.39 with match-expected/real-draft-token at speculative-num-steps: 3 (disagg recipes pin it in both prefill and decode environments), matching golden_al_distribution/qwen3.5_mtp.yaml thinking_on[3] = 3.39; no simulate knobs appear on any non-agentic config.

@cquil11

cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 31042542308

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@cquil11 staged run 31042542308: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-05~r31042542308

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@cquil11 已将运行 31042542308 发布到预发布环境:https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-05~r31042542308

后续的 /stage-results 请求不会移除此运行;再次发布相同的运行 ID 会更新其预发布数据。预发布工作流

@cquil11

cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 31042542308

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@cquil11 staged run 31042542308: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-05~r31042542308

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@cquil11 已将运行 31042542308 发布到预发布环境:https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-05~r31042542308

后续的 /stage-results 请求不会移除此运行;再次发布相同的运行 ID 会更新其预发布数据。预发布工作流

@cquil11

cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 31042542308

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.

5 participants