Repository navigation
[NVIDIA][AgentX] Move GB300 DSV4.1-Flash Dynamo + SGLang to the bonus-fixed nightlies with prefill-HiCache disagg points and TP4 c1 megakernel / [NVIDIA][AgentX] GB300 DSV4.1-Flash Dynamo + SGLang 升级到含 bonus 修复的 nightly,分离式改用 prefill HiCache,TP4 c1 启用 megakernel - #4595
Conversation
…HiCache Root cause: at c7480 the Mooncake external linker reads L3 hits layer by layer on the forward path; after the AgentX turn burst, prefill stalls on those reads (about 40 % of wall time), device prefixes age out, and the deployment does not recover. Fix: a new config key on nightly-dev-cu13-20261027-5884e4fe (Dynamo 1.7.0.dev20261026) with 9 and 10 DEP2 prefill workers and one DEP16 decode. Prefill keeps evicted prefixes in a local host-DRAM HiCache tier (ratio 1.8, write-back, direct I/O); decode keeps SGLang's default polling interval of 1. Dynamo 1.7 backend admission limits are raised so turns queue in the scheduler, and NVIDIA/srt-slurm#629 is backported so the readiness wait asks /health?instances=true when /health is status-only. The agg and dspark-disagg keys are listed so they rerun in the same sweep. Validation: on GB300 with the same recipe and AgentX client, 10 x DEP2 batch 128 gave 924,652 tok/s/GPU at p90 117.2 tok/s/user over 3600 s.
…6-hicache # Conflicts: # inferencex-e2e/perf-changelog.yaml
| - spec-decoding: mtp | ||
| conc-list: [7480] | ||
| srt-recipe: disagg-dep16-hicache-variants.yaml:override_10p1d_dep2_dep16_b160_c7480 | ||
| kv-offloading: dram | ||
| kv-offload-backend: { name: hicache } | ||
| prefill: | ||
| num-worker: 10 | ||
| tp: 2 | ||
| ep: 2 | ||
| dp-attn: true | ||
| decode: | ||
| num-worker: 1 | ||
| tp: 16 | ||
| ep: 16 | ||
| dp-attn: true |
There was a problem hiding this comment.
🔴 If either 10-prefill c7480 job of a sweep is rerun, the other 10-prefill job's result is dropped. Klaud's coverage check then fails the sweep. Rows override_10p1d_dep2_dep16_c7480 and override_10p1d_dep2_dep16_b160_c7480 differ only by recipe. They share every field of agentic_key (infx/results/artifacts.py:123), so superseded_attempt_files treats one as a retry of the other. Fix: give each row its own result identity, e.g. key superseded_attempt_files on recipe_fingerprint plus conc, the identity check_coverage already uses.
Why this was flagged
The two rows at nvidia-master.yaml:9752-9781 have the same prefill (10 x tp2 ep2 dpa), decode (1 x tp16 ep16 dpa), conc 7480, spec mtp and kv-offload-backend {name: hicache}. agentic_key (infx/results/artifacts.py:123-168) is built only from those fields, so both point results get the same key. superseded_attempt_files (artifacts.py:197-215) drops any file whose rows all have an older run_attempt than the latest attempt for that key. Klaud recovery POSTs rerun-failed-jobs (infx/klaud/lifecycle.py:705) after a failure or preemption, and only the failed job reruns. Say the b160 job reruns as attempt 2 while the b128 point finished in attempt 1. agentic_point_files (artifacts.py:188-194) then discards the b128 file. check_coverage (infx/klaud/validation.py:307-320) expects (recipe_fingerprint, 7480, image) for both rows and raises "Full-sweep result coverage or consistency failed". RESULT_FILENAME adds the recipe fingerprint, which keeps artifact names distinct, but the superseding logic never reads that fingerprint.
Verification: The rows override_10p1d_dep2_dep16_c7480 and override_10p1d_dep2_dep16_b160_c7480 in configs/nvidia-master.yaml differ only in srt-recipe. agentic_key (infx/results/artifacts.py:123-168) leaves out recipe_fingerprint. On the base branch these rows do not exist, so the failure is new.
|
Thanks for the contribution!
中文感谢你的贡献!
|
…6-hicache # Conflicts: # inferencex-e2e/perf-changelog.yaml
…ightly and drop TP2/EP2 c16 nightly-dev-cu13-20261028-586355a8 includes sgl-project/sglang#46404. Raise the Dynamo 1.7 backend admission limits as on the disagg rows. TP2/EP2 c16 sits far below the line from TP4 c16 to the disaggregated points, so it is removed with its override.
|
[by Claude Code] The SGLang cookbook integration of this PR's AgentX configs ( This PR has no authorized |
|
[by Claude Code] sgl-project/sglang#47027 has been merged. This PR's AgentX configs ( This PR has no authorized |
… 20261028 nightly and retire the Mooncake-linker disagg key The hicache key now runs on nightly-dev-cu13-20261028-586355a8, which includes sgl-project/sglang#46404. On that image the KV pool sizes at 890 B/token, so hicache-ratio drops to 1.2 (1.8 exceeds host memory) and decode mem-fraction-static to 0.75 (0.85 runs out of memory at graph capture). Points: 5P c2884 (bs40), 8P c4096 (bs64) and 10P c7480 (bs160). The 9P and 10P bs128 c7480 points are dropped; bs160 is higher at the same interactivity. The dspark-disagg key on 65633129 and its recipe are retired.
At decode batch 160, 9 x DEP2 reaches the same p90 interactivity as 10 x DEP2 with two fewer GPUs, so its throughput per GPU is higher.
…recipe in the changelog
…6-hicache # Conflicts: # inferencex-e2e/perf-changelog.yaml
…ightly and use the megakernel runtime-optimization switch at TP4 c1 nightly-dev-cu13-20261029-c10e0e17 bundles sgl-nvidia-mega 54b428921749 (megakernel API 2, sgl-project/sglang#47145), so TP4 c1 starts with --enable-nvidia-megakernel again. SGLANG_ENABLE_NV_MEGA_RUNTIME_OPTIMIZATION (sgl-project/sglang#47105) replaces the 16 runtime-optimization variables the recipe set one by one.
|
[by Claude Code] The SGLang cookbook update of this PR's AgentX configs ( This PR has no authorized |
|
[by Claude Code] sgl-project/sglang#47214 has been merged. This PR's AgentX configs ( This PR has no authorized |
…6-hicache # Conflicts: # inferencex-e2e/perf-changelog.yaml
…2.65.2 Main bumped inferencex-e2e/utils/srt-slurm to v2.65.2 (#4601), which includes NVIDIA/srt-slurm#629, so runners/srt-slurm/patches/629-dynamo-health-instances.patch and its README row are removed and the changelog entry no longer mentions it.
|
View unofficial run (performance): https://inferencex.semianalysis.com/inference?unofficialRun=40989481011 View unofficial run (accuracy): https://inferencex.semianalysis.com/evaluation?unofficialRun=40989481011 |
|
[by Claude Code] The SGLang cookbook update of this PR's AgentX configs ( This PR has no authorized |
|
/use 40989481011 |
|
@nvpohanh staged run 40989481011. This run remains available across future |
|
[by Claude Code] sgl-project/sglang#47464 has been merged. This PR's AgentX configs ( This PR's |
|
As a PR reviewer and CODEOWNER, I have reviewed this and have:
Additional detail section:
Signed: |
✅✅✅ Verdict: PASS ✅✅✅Passed and not applicable checks✅ Check 0 (CODEOWNER): PASS — ✅ Check 1 (Sweep on in-PR commit): PASS — Pinned head ✅ Check 2 (Evals): PASS — All 6 gsm8k rows in ✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#47464 is MERGED (2026-10-30T11:23:25Z). Its ✅ Check 4 (Reuse command): PASS — ✅ Check 5 (Checklist template): PASS — All 20 current template items, plus the upstream-PR sub-item, are present and checked. ✅ Check 6 (Upstream images): PASS — Both images are upstream ✅ Check 7 (Deprecated models): PASS — On 2026-10-30, MODELS.md lists ✅ Check 8 (Benchmark hacks): PASS — There is no ✅ Check 9 (Chat template): PASS — Both recipes drive the Dynamo chat frontend with ✅ Check 10 (Engine patches): PASS — At ✅ Check 11 (Golden AL): PASS — Job logs for the c1 canary and c7480 show ➖ Check 12 (Append-only): N/A — The new changelog entry does not set ✅ Check 13 (Draft precision): PASS — The draft is the embedded DSpark head of ✅ Check 14 (Pareto coverage): PASS — There is one curve, dsv41flash / agentic-coding / gb300_dynamo-sglang / fp4 / run 40989481011 ( ✅ Check 15 (PR description): PASS — Images, Dynamo versions, worker counts, batch sizes, removed points and retired-key measurements match the pinned code and run 40153045152. The 1200 s and 3600 s cluster figures are labeled as out-of-sweep. ✅ Check 16 (NVIDIA overview): PASS — The NVIDIA overview Framework Recipes table has a DeepSeek-V4.1-Flash row with a populated SGLang cell linking to the cookbook. ➖ Check 17 (Metrics publication): N/A — These are ✅ Check 18 (Recipe/image/sweep consistency): PASS — There are no generation errors, master worker, TP, EP and DPA values match the recipe overrides (26/32/34 GPUs), and both digests resolve. The changelog matches the field inventory. Using run 40153045152 measurements, old c2884 (573,579 @ 195.5) and old c4096 (654,247 @ 156.1) are dominated by 5P c2884 (714,534 @ 218.3), and old c1228 (367,046 @ 248.0) and TP2/EP2 c16 (58,177 @ 401.6) lie under the TP4 c16 → 5P c2884 segment. Re-tuned deltas for agg TP4 c1/c4/c16: tput −0.65% / +0.66% / +0.26%, interactivity −1.9% / −3.66% / −3.78%. Assessed commit: |
|
follow up #4679 |
# Conflicts: # inferencex-e2e/perf-changelog.yaml
|
/use 40989481011 |
|
@cquil11 staged run 40989481011. This run remains available across future |
|
Ingest report — ✅ Results ingested into the Ingest workflow · Merge Ingest run · Benchmark source run
benchmarkFiles 7, rawBenchmarkRows 12, coveredByPerJobFiles 6, purgedPoints 0, failedRunRows 0, runStatsNew 0, runStatsDuplicate 0, evalSamplesNew 7914, gpuMetricSamplesNew 0, powerPublicationPoints 6, changelogEntriesWritten 1 Counts cover only this run. Rows: benchmark_results, eval_results, agentic rows linked to a trace, gpu_metrics series. This comment updates if the ingest is rerun. 中文Ingest 报告 — ✅ 结果已写入 上表仅统计本次运行写入的数据,各行单位依次为 benchmark_results 行、eval_results 行、已关联 trace 的 agentic 行和 gpu_metrics 序列。重新运行 ingest 时本评论会原地更新。 |
…6 and 3P1D c1228 points (append-only, follows #4595) / [NVIDIA][AgentX] 追加 GB300 DSV4.1-Flash Dynamo + SGLang TP2/EP2 c16 和 3P1D c1228 点(仅追加,接续 #4595) (#4679) * Add GB300 DSV4.1-Flash SGLang DEP16 disagg c7480 points with prefill HiCache Root cause: at c7480 the Mooncake external linker reads L3 hits layer by layer on the forward path; after the AgentX turn burst, prefill stalls on those reads (about 40 % of wall time), device prefixes age out, and the deployment does not recover. Fix: a new config key on nightly-dev-cu13-20261027-5884e4fe (Dynamo 1.7.0.dev20261026) with 9 and 10 DEP2 prefill workers and one DEP16 decode. Prefill keeps evicted prefixes in a local host-DRAM HiCache tier (ratio 1.8, write-back, direct I/O); decode keeps SGLang's default polling interval of 1. Dynamo 1.7 backend admission limits are raised so turns queue in the scheduler, and NVIDIA/srt-slurm#629 is backported so the readiness wait asks /health?instances=true when /health is status-only. The agg and dspark-disagg keys are listed so they rerun in the same sweep. Validation: on GB300 with the same recipe and AgentX client, 10 x DEP2 batch 128 gave 924,652 tok/s/GPU at p90 117.2 tok/s/user over 3600 s. * Set perf-changelog pr-link to #4595 * Restore historical perf-changelog entries; set only this entry's pr-link * Move the GB300 DSV4.1-Flash Dynamo + SGLang agg row to the 20261028 nightly and drop TP2/EP2 c16 nightly-dev-cu13-20261028-586355a8 includes sgl-project/sglang#46404. Raise the Dynamo 1.7 backend admission limits as on the disagg rows. TP2/EP2 c16 sits far below the line from TP4 c16 to the disaggregated points, so it is removed with its override. * Move the GB300 DSV4.1-Flash Dynamo + SGLang HiCache disagg key to the 20261028 nightly and retire the Mooncake-linker disagg key The hicache key now runs on nightly-dev-cu13-20261028-586355a8, which includes sgl-project/sglang#46404. On that image the KV pool sizes at 890 B/token, so hicache-ratio drops to 1.2 (1.8 exceeds host memory) and decode mem-fraction-static to 0.75 (0.85 runs out of memory at graph capture). Points: 5P c2884 (bs40), 8P c4096 (bs64) and 10P c7480 (bs160). The 9P and 10P bs128 c7480 points are dropped; bs160 is higher at the same interactivity. The dspark-disagg key on 65633129 and its recipe are retired. * Use 9 prefill workers for the c7480 HiCache point At decode batch 160, 9 x DEP2 reaches the same p90 interactivity as 10 x DEP2 with two fewer GPUs, so its throughput per GPU is higher. * Name the KV layout, precision and Engram changes against the retired recipe in the changelog * Move the GB300 DSV4.1-Flash Dynamo + SGLang agg row to the 20261029 nightly and use the megakernel runtime-optimization switch at TP4 c1 nightly-dev-cu13-20261029-c10e0e17 bundles sgl-nvidia-mega 54b428921749 (megakernel API 2, sgl-project/sglang#47145), so TP4 c1 starts with --enable-nvidia-megakernel again. SGLANG_ENABLE_NV_MEGA_RUNTIME_OPTIMIZATION (sgl-project/sglang#47105) replaces the 16 runtime-optimization variables the recipe set one by one. * Drop the srt-slurm #629 backport patch now that main pins srt-slurm v2.65.2 Main bumped inferencex-e2e/utils/srt-slurm to v2.65.2 (#4601), which includes NVIDIA/srt-slurm#629, so runners/srt-slurm/patches/629-dynamo-health-instances.patch and its README row are removed and the changelog entry no longer mentions it. * Add back GB300 DSV4.1-Flash Dynamo+SGLang TP2/EP2 c16 and 3P1D c1228 points (append-only) Fill the interactivity/E2EL gap between agg TP4 c16 and disagg 5P1D c2884 on each config's existing image: agg TP2/EP2 c16 with its previous per-point settings, and a 3 x DEP2 / 1 x DEP16 c1228 point on the prefill HiCache disagg recipe with the previous c1228 decode sizing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Set the append-only changelog pr-link to #4679 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore: drop history clauses from DSV4.1-Flash hicache decode comments --------- Co-authored-by: weireweire <20922698+weireweire@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: cquil11 <60715037+cquil11@users.noreply.github.com>


Move the GB300 DeepSeek-V4.1-Flash Dynamo + SGLang AgentX curve to nightlies that include sgl-project/sglang#46404: the disaggregated points to digest-pinned
lmsysorg/sglang:nightly-dev-cu13-20261028-586355a8and the aggregated points tonightly-dev-cu13-20261029-c10e0e17(below). The 586355a8 image bundles Dynamo1.7.0.dev20261027and SGLang0.0.0.dev1+g586355a83. #46404 draws the DSpark simulated-acceptance bonus at the simulated row instead of the real mismatch row. No SGLang engine patch is added.The disaggregated points move to a new key,
dsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disagg-hicache, whose prefill uses a local host-DRAM HiCache tier instead of the Mooncake external linker. The existingdsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disaggkey (nightly-dev-cu13-20261025-65633129, which predates #46404) and itsdisagg-variants.yamlrecipe are retired.Removed points. The retired key's published points were measured on
65633129, before #46404. Each one is covered by this PR's points on the same Dynamo + SGLang curve (tput_per_gpu@mean_intvty; head values are our 1200 s runs, which understate the sweep):c1228 is not carried over. It also sat under the published curve's own line from agg TP2/EP2 c16 (58,177 @ 401.6) to c2884 (about 442,000 at 247.5).
Why this recipe:
hicache-ratio 1.2, write-back, direct I/O,mem-fraction-static 0.85, 64 running requests per DP rank) instead of the Mooncake external linker.hicache-ratio 1.8, the host mirror of that larger pool exceeds node memory.mem-fraction-static 0.85, decode runs out of memory during CUDA graph capture; 0.75 leaves the headroom capture needs.disaggregation-decode-polling-intervalof 1; the retired key set 8. At 8, each admission batch stalled the decode loop about 2 ms.Aggregated row:
dsv41flash-fp4-gb300-dynamo-sglang-agentic-aggmoves to digest-pinnednightly-dev-cu13-20261029-c10e0e17(Dynamo1.7.0.dev20261028, SGLang0.0.0.dev1+gc10e0e177).54b428921749([Fix] docker: update NVIDIA megakernel pin to tested commit sgl-project/sglang#47145), which implements megakernel API 2, so TP4 c1 runs with--enable-nvidia-megakernelagain. Target and draft megakernels are active on all four TP ranks.SGLANG_ENABLE_NV_MEGA_RUNTIME_OPTIMIZATION=1([Feat] [NVIDIA] runtime: Add a master switch for megakernel runtime optimizations sgl-project/sglang#47105). The switch also turns on the Qwen3.5/EAGLE runtime group, most of which is inactive on this path.SGLANG_OPT_DSV41_DSPARK_SIM_DRAW_AHEAD, the simulation settings,SGLANG_NVIDIA_MEGAKERNEL_SLOTS, the Engram host table and the NCCL settings stay explicit.Throughput gain at the same p90 interactivity (tok/s/GPU). Our points were measured on our GB300 cluster with the bound recipes of this PR and the AgentX client, not in this PR's sweep. The vLLM column linearly interpolates the currently published GB300 DeepSeek-V4.1-Flash Dynamo + vLLM and vLLM points on their Pareto frontier at our p90 interactivity. A blank cell means no gain.
At p90 107.1, the vLLM frontier lies between 1,011,514 @ 75.5 and 993,521 @ 145.6, which gives 1,003,413. The 1200 s values understate a 3600 s run by a factor of about 1.17-1.20 at these concurrencies, but even after that, c2884 and c4096 stay below vLLM's c10888 point (954,146 @ 196.5).
Validation details
All runs used the image above through srt-slurm on GB300 with the AgentX client (
reasoning_efforthigh, temperature 1) and the golden acceptance length 3.51. Each run's resolved recipe matches the recipe thatinfx generatebinds for this PR, apart from cluster NIC names, scheduler directives and the unused Mooncake services. The 1200 s runs had 0 request errors; the 3600 s run had 3 empty responses out of about 1.05M requests.中文
将 GB300 DeepSeek-V4.1-Flash Dynamo + SGLang AgentX 曲线换到包含 sgl-project/sglang#46404(DSpark 模拟接受的 bonus 改在模拟位置采样)的 nightly:分离式点用固定 digest 的
lmsysorg/sglang:nightly-dev-cu13-20261028-586355a8(Dynamo1.7.0.dev20261027、SGLang0.0.0.dev1+g586355a83),聚合式点用nightly-dev-cu13-20261029-c10e0e17(见下)。不添加 SGLang 引擎补丁。dsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disagg-hicache,DEP2 prefill 加一个 DEP16 decode。dspark-disaggkey(65633129,早于 #46404)及其disagg-variants.yamlrecipe 退役。它已发布的三个点都被本 PR 的点覆盖(按tput_per_gpu与mean_intvty):c4096 和 c2884 分别被 8 × DEP2 和 5 × DEP2 支配;c1228(367,046 @ 247.5)低于 agg TP4 c16 到 5 × DEP2 c2884 的连线(在 247.5 处约 573,000),因此不保留。hicache-ratio 1.2、write-back、direct I/O、mem-fraction-static 0.85、每个 DP rank 64 个运行请求)替代 Mooncake external linker。hicache-ratio 1.8时主机镜像超出节点内存,改为 1.2。mem-fraction-static 0.85时,CUDA graph capture 阶段 OOM,改为 0.75。nightly-dev-cu13-20261029-c10e0e17(Dynamo1.7.0.dev20261028)。该镜像自带 sgl-nvidia-mega54b428921749(megakernel API 2,[Fix] docker: update NVIDIA megakernel pin to tested commit sgl-project/sglang#47145),TP4 c1 重新启用--enable-nvidia-megakernel,4 个 TP rank 上 target 和 draft megakernel 均生效。TP4 c1 原先逐个设置的 16 个 megakernel 运行时优化变量改为SGLANG_ENABLE_NV_MEGA_RUNTIME_OPTIMIZATION=1([Feat] [NVIDIA] runtime: Add a master switch for megakernel runtime optimizations sgl-project/sglang#47105);该开关同时打开 Qwen3.5/EAGLE 那组优化,在此路径上大多不生效。SIM_DRAW_AHEAD、模拟设置、megakernel slots、Engram 和 NCCL 设置仍显式指定。放开 admission 上限;删除 TP2/EP2 c16,TP4 c4/c16 配置不变。同交互性(p90 interactivity)下相对 vLLM 的吞吐提升: 数据在我们的 GB300 集群上用本 PR 的配方测得,不是本 PR 的 sweep;在这些并发下,3600 s 结果约为 1200 s 的 1.17-1.20 倍。vLLM 用已发布的 Dynamo + vLLM 与 vLLM 点的 Pareto 前沿,在相同交互性处线性插值。
c2884 和 c4096 即使换算到 3600 s,也低于 vLLM 的 c10888 点(954,146 @ 196.5)。
AI model disclosure
aws/anthropic/eccn-claude-opus-5-5) investigated the bottleneck, ran the cluster experiments through delegated agents on the same model, wrote the recipe, master config, changelog entry and this description, and ran an independent review of the diff through a separate delegated agent on the same model.