Skip to content

[NVIDIA][AgentX] Update GB300 DSV4.1-Flash disagg topology, caching and routing / [NVIDIA][AgentX] 更新 GB300 DSV4.1-Flash 分离式拓扑、缓存与路由 - #4303

Merged
cquil11 merged 14 commits into
mainfrom
weireweire/dsv41flash-gb300-sgl-disagg-1019
Oct 22, 2026
Merged

cquil11 merged 14 commits into
mainfrom
weireweire/dsv41flash-gb300-sgl-disagg-1019

Conversation

@weireweire

@weireweire weireweire commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Update the GB300 DeepSeek-V4.1-Flash Dynamo + SGLang disaggregated AgentX configuration: replace prefill HiCache with Mooncake external cache linking, revise the prefill topology, and separate prefill KV routing from decode round-robin routing.

Use digest-pinned lmsysorg/sglang:nightly-dev-cu13-20261021-c1c287a4 with bundled Dynamo 1.6.0.dev20261019 and SGLang 0.0.0.dev1+gc1c287a42. The image includes sgl-project/sglang#44623; no SGLang engine patch is added.

Concurrency Prefill change Decode Decode MRR (DP-global) Graph max BS (per rank) Extra decode slots
1228 4 → 3 × DEP2 1 × DEP16 384 24 36
2884 6 → 5 × DEP2 1 × DEP16 640 40 80
4096 Add 8 × DEP2 1 × DEP16 1024 64 128
  • Cache and routing: enable Mooncake external linking on both roles, with MOONCAKE_GLOBAL_SEGMENT_SIZE=80gb on prefill and 140gb on decode. Prefill retains KV routing with a 14400-second session-affinity TTL; decode uses round-robin routing and SGLang total_tokens load balancing. Keep prefill KV events, disable unused decode KV events, and retain metrics on both roles. Dynamo uses the ZMQ event plane.
  • Execution: use flashmla_mega, fastokens and local DP control broadcast on both roles; enable BF16 index logits on decode. Remove the NCCL DP-batch-sync environment override. BF16 index logits changes indexer precision and is covered by the eval sweep.
  • Scheduling and cache state: use SWA prefix tails of 2048 and decoder SWA bounded replay; set decode polling interval to 8 and stream interval to 32. Cap prefill batches at 32768 tokens for c2884/c4096.

Include the existing aggregated TP4 c1/c4/c16 and TP2 c16 points in the same sweep and eval selection to cover the low-latency portion of the curve. Their configurations and pinned October 15 image are unchanged.

中文

更新 GB300 DeepSeek-V4.1-Flash Dynamo + SGLang 的分离式 AgentX 配置,涵盖拓扑、缓存、路由和执行参数,而不只是升级镜像。

  • **镜像:**使用固定 digest 的 nightly-dev-cu13-20261021-c1c287a4,以及镜像自带的 Dynamo 1.6.0.dev20261019、SGLang 0.0.0.dev1+gc1c287a42,不添加 SGLang 引擎补丁。
  • **拓扑:**c1228 的 prefill 从 4 个 DEP2 减为 3 个;c2884 从 6 个减为 5 个;新增 c4096 的 8 个 DEP2。三档均配一个 DEP16 decode,MRR 分别为 384/640/1024,每 rank 的 graph max BS 为 24/40/64,extra decode slots 为 36/80/128。
  • **缓存与路由:**用两侧的 Mooncake external linker 替代 prefill HiCache,prefill/decode 的 segment size 分别为 80gb/140gb。Prefill 使用 KV 路由和 14400 秒会话亲和;decode 使用 round-robin 和 total_tokens DP 负载均衡。保留 prefill KV events,关闭 decode KV events,两侧 metrics 保留;Dynamo event plane 使用 ZMQ。
  • **执行与调度:**两侧使用 flashmla_mega、fastokens 和本地 DP control broadcast;decode 启用 BF16 index logits,移除 NCCL DP-batch-sync 环境覆盖。使用 2048 SWA prefix tails、decoder SWA bounded replay、decode polling interval 8 和 stream interval 32;c2884/c4096 的 prefill batch token 上限为 32768。BF16 index logits 的精度变化由 eval sweep 验证。

将现有 aggregated TP4 c1/c4/c16 和 TP2 c16 纳入同一轮 sweep 与 eval 选点,覆盖曲线的低延迟区间;其配置和固定的 10 月 15 日镜像保持不变。

AI model disclosure
  • Earlier preparation: Claude Opus 5.5 (claude-opus-5-5), as recorded in the previous PR description.
  • This update: GPT-6-based Codex and a delegated agent inspected the published image, updated the disaggregated configuration, reviewed the diff, and resolved the merge. Exact runtime model identifiers for this update were not exposed and could not be verified.

weireweire added a commit that referenced this pull request Oct 19, 2026
中文:将 changelog 条目的 pr-link 设置为 #4303。
weireweire added a commit that referenced this pull request Oct 20, 2026
…20 nightly

The 20261020 image (ab580b2e, ai-dynamo 1.6.0.dev20261019) contains
sgl-project/sglang#44580 and #45062, so the setup script now applies only
the external linker pools patch (#44623). Add the #4303 changelog entry on
top of the merged #4180 entry.
@weireweire
weireweire force-pushed the weireweire/dsv41flash-gb300-sgl-disagg-1019 branch from 9b7d62b to 974edc5 Compare October 20, 2026 06:23
@weireweire weireweire changed the title [NVIDIA][AgentX] GB300 DeepSeek-V4.1-Flash Dynamo+SGLang: DEP2/DEP16 disaggregated points on the 20261019 nightly with the Mooncake linker / [NVIDIA][AgentX] GB300 DeepSeek-V4.1-Flash Dynamo+SGLang:基于 20261019 nightly 与 Mooncake linker 的 DEP2/DEP16 分离式配置点 [NVIDIA][AgentX] GB300 DeepSeek-V4.1-Flash Dynamo+SGLang: DEP2/DEP16 disaggregated points on the 20261020 nightly with the Mooncake linker / [NVIDIA][AgentX] GB300 DeepSeek-V4.1-Flash Dynamo+SGLang:基于 20261020 nightly 与 Mooncake linker 的 DEP2/DEP16 分离式配置点 Oct 20, 2026
… nightly with the Mooncake linker

Move dsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disagg to
lmsysorg/sglang:nightly-dev-cu13-20261019-3c560089 (multiarch digest
pinned) and the ai-dynamo 1.6.0.dev20261018 it ships, with the ZMQ event
plane and no NATS service.

- c1228 keeps 4x DEP2 prefill + 1x DEP16 decode; c2884 moves from 6 to 5
  DEP2 prefill workers (3 prefill nodes, 26 GPUs) and caps prefill batches
  at 32768 tokens.
- Both roles use the flashmla_mega attention backend, local DP control
  broadcast and the Mooncake external cache linker with a Mooncake master
  service (high watermark 0.90, client TTL 60 s, 64 RPC threads). The
  linker replaces prefill HiCache, so the master rows declare Mooncake
  0.3.13.post1 as the KV offload backend.
- Decode adds late admission, stream interval 32, polling interval 8,
  2048 SWA prefix tails and decoder SWA bounded replay; the NCCL DP-batch
  sync env is dropped because the image exchanges MLP sync rows with gloo
  gather + broadcast (sgl-project/sglang#44622).
- A setup script applies four SGLang patches the image lacks, with git
  apply under a lock, idempotently, failing on any hunk that does not
  apply: sgl-project/sglang#44623 (open), #44580 (merged as 834bfe4ef0),
  #45062 (merged as 06342acad2) and decode late admission
  (weireweire/sglang@407e912a1e).
- Revise this PR's changelog entry to the final state.

中文:将 dsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disagg 迁移到
lmsysorg/sglang:nightly-dev-cu13-20261019-3c560089(固定 multiarch
digest)及镜像自带的 ai-dynamo 1.6.0.dev20261018,使用 ZMQ event plane,
不再启动 NATS 服务。

- c1228 保持 4 个 DEP2 prefill + 1 个 DEP16 decode;c2884 的 DEP2 prefill
  由 6 个减为 5 个(3 个 prefill 节点,共 26 个 GPU),并将 prefill 批次
  上限设为 32768 token。
- 两个角色均使用 flashmla_mega attention 后端、本地 DP control broadcast
  和 Mooncake external cache linker,并启动 Mooncake master 服务(高水位
  0.90,client TTL 60 秒,64 个 RPC 线程)。linker 取代了 prefill
  HiCache,因此 master 配置将 KV offload 后端声明为 Mooncake 0.3.13.post1。
- Decode 新增 late admission、stream interval 32、polling interval 8、
  2048 SWA prefix tails 与 decoder SWA bounded replay;镜像已通过 gloo
  gather + broadcast 交换 MLP 同步数据(sgl-project/sglang#44622),因此
  删除 NCCL DP batch 同步环境变量。
- 新增 setup 脚本,在锁保护下用 git apply 幂等地应用镜像缺少的四个
  SGLang 补丁,任一 hunk 无法应用即失败:sgl-project/sglang#44623(未合并)、
  #44580(已合并为 834bfe4ef0)、#45062(已合并为 06342acad2)以及 decode
  late admission(weireweire/sglang@407e912a1e)。
- 将本 PR 的 changelog 条目更新为最终状态。
…isagg points

A same-time A/B on the 20261019 nightly showed no effect from decode late
admission: P90 interactivity 230/232 without it and 230/228 with it at
c1228. The image already exchanges the scheduler's MLP sync rows with gloo
gather + broadcast (sgl-project/sglang#44622) and avoids blocking Engram
history copies during PD admission (#44787). Remove the patch, its setup
script entry and SGLANG_ENABLE_DISAGG_DECODE_LATE_ADMISSION.

中文:在 20261019 nightly 上的同时段 A/B 显示 decode late admission 没有
效果:c1228 下关闭时 P90 interactivity 为 230/232,开启时为 230/228。镜像
已通过 gloo gather + broadcast 交换调度器的 MLP 同步数据
(sgl-project/sglang#44622),并避免了 PD admission 期间阻塞的 Engram
历史拷贝(#44787)。因此删除该补丁、setup 脚本中的对应条目以及
SGLANG_ENABLE_DISAGG_DECODE_LATE_ADMISSION。
…20 nightly

The 20261020 image (ab580b2e, ai-dynamo 1.6.0.dev20261019) contains
sgl-project/sglang#44580 and #45062, so the setup script now applies only
the external linker pools patch (#44623). Add the #4303 changelog entry on
top of the merged #4180 entry.
…96 at 7P1D

With the Mooncake linker, three DEP2 prefill workers keep up at c1228
(364.5k/362.1k vs 336.7k tok/s/GPU at 4P1D, same interactivity). Add
c4096 with seven DEP2 prefill workers and 64 requests per decode rank
(630.1k tok/s/GPU, P90 137 tok/s/user). Both decode roles use a 140gb
Mooncake segment.
@weireweire
weireweire force-pushed the weireweire/dsv41flash-gb300-sgl-disagg-1019 branch from ffe8082 to 26be6a3 Compare October 20, 2026 06:58
Root cause: the previous image needed an external-linker patch and the
submitted recipe omitted supported routing and worker settings used locally.

Fix: pin the October 21 public image, remove the linker patch and setup script,
enable per-role routing, total-token balancing, worker fastokens and BF16
decode index logits, and use eight DEP2 prefill workers at c4096 within the
same four prefill nodes. Update only the disaggregated matrix and changelog.

Validation: the repository matrix generator resolves all three points with
3600-second measurements and evaluation enabled. The exact new image/config
combination has not yet completed a performance sweep or native evaluation.

原因:旧镜像需要外部缓存 linker 补丁,提交配置也未包含本地使用的部分原生配置项。
修复:固定 10 月 21 日公开镜像,删除补丁,补齐路由、负载均衡、tokenizer 和
decode index logits 配置;c4096 在原有四个 prefill 节点使用八个 DEP2 worker。
验证:三个配置点均通过矩阵生成,保留 3600 秒测量和 eval;新版完整组合尚未实跑。
Keep the complete upstream changelog and append the disaggregated configuration entry after it. 保留上游全部历史条目,将本 PR 的分离式配置条目追加到末尾。
@weireweire weireweire changed the title [NVIDIA][AgentX] GB300 DeepSeek-V4.1-Flash Dynamo+SGLang: DEP2/DEP16 disaggregated points on the 20261020 nightly with the Mooncake linker / [NVIDIA][AgentX] GB300 DeepSeek-V4.1-Flash Dynamo+SGLang:基于 20261020 nightly 与 Mooncake linker 的 DEP2/DEP16 分离式配置点 [NVIDIA][AgentX] Update GB300 DSV4.1-Flash disagg to patch-free Oct 21 nightly / 更新分离式配置至 10 月 21 日无补丁 nightly Oct 21, 2026
@weireweire

Copy link
Copy Markdown
Collaborator Author

cookbook pr: sgl-project/sglang#45495

@weireweire
weireweire marked this pull request as ready for review October 21, 2026 03:34
@weireweire
weireweire requested a review from a team October 21, 2026 03:34
@weireweire weireweire added the full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures label Oct 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps run only when the PR appends an inferencex-e2e/perf-changelog.yaml entry and carries exactly one primary label: full-sweep-fail-fast (strongly recommended; canary plus per-matrix fail-fast), full-sweep-enabled (canary; matrix jobs continue after a failure), or non-canary-full-sweep-enabled (no canary or fail-fast). The modifiers all-evals, evals-only, and agentx-fast require a primary label. On fork PRs, a maintainer applies the label. See sweep labels and reuse.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**只有当 PR 在 inferencex-e2e/perf-changelog.yaml 末尾追加了条目,并且恰好带有一个主标签时,才会运行扫描:full-sweep-fail-fast(强烈推荐;canary 加逐矩阵 fail-fast)、full-sweep-enabled(有 canary;矩阵任务在失败后继续运行)或 non-canary-full-sweep-enabled(无 canary,也无 fail-fast)。修饰标签 all-evals、evals-only 和 agentx-fast 必须与主标签一起使用。fork PR 的标签由维护者添加。参见扫描标签与复用。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

@claude

claude Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @weireweire's task in 49s —— View job


LGTM - no blocking issues found

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Root cause: prefill-only Prometheus counters were treated as deployment totals, preventing record-based token fallback and omitting decode KV metrics.

Fix: enable SGLang metrics on decode for all three disaggregated variants.

Validation: Ruff check and format checks passed; perf-changelog matrix validation passed. Full GPU sweep remains pending.

原因:仅 prefill 导出指标会使汇总缺少 decode 数据。修复:为三个 disagg 配置恢复 decode metrics。校验:Ruff 和 changelog 矩阵检查通过,GPU sweep 尚待验证。
Root cause: the launcher can assign port 5252 to a decode publisher, colliding with node monitoring listeners and aborting performance/eval startup.

Fix: backport NVIDIA/srt-slurm#617 to allocate KV-event blocks from 3000. The SGLang image and serving parameters are unchanged. Validation: patch applies cleanly to the pinned srt-slurm revision; Ruff checks pass.

修复 KV-event 端口与节点监控监听端口冲突,回移 srt-slurm #617;保持镜像及模型参数不变。
Retain only the port-base change and concise public descriptions. 简化端口补丁及说明。
@weireweire
weireweire requested a review from cquil11 as a code owner October 21, 2026 09:50
Round-robin decode routing does not consume KV events. Disable the decode publisher while retaining prefill events and metrics on both roles, and remove the srt-slurm #617 backport from this submission.

Validation: all three bound variants retain prefill events, omit decode events and retain metrics; Ruff and changelog checks pass. 关闭轮询解码侧的 KV-event 发布,保留预填充事件和双方指标,并移除端口补丁。
@weireweire weireweire changed the title [NVIDIA][AgentX] Update GB300 DSV4.1-Flash disagg to patch-free Oct 21 nightly / 更新分离式配置至 10 月 21 日无补丁 nightly [NVIDIA][AgentX] Update GB300 DSV4.1-Flash disagg topology, caching and routing / [NVIDIA][AgentX] 更新 GB300 DSV4.1-Flash 分离式拓扑、缓存与路由 Oct 21, 2026
将现有 TP4 c1/c4/c16 和 TP2 c16 纳入本 PR 的 sweep 与 eval 选点,覆盖低延迟区间;保留原有 agg 配置及镜像。矩阵校验生成 7 个性能点和 5 个 eval,Ruff 检查通过。
保留 main 的全部历史 changelog,并将本 PR 的 agg/disagg 选点条目置于末尾。确认 agg 配置未变化,矩阵仍生成 7 个性能点和 5 个 eval。
@nvpohanh

Copy link
Copy Markdown
Collaborator

[by Claude Code] The SGLang cookbook integration of this PR's AgentX config (dsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disagg) will happen in sgl-project/sglang#45749, in the Agentic Long-Context Deployment section of the DeepSeek-V4.1 cookbook page.

This PR has no authorized /use <run_id> comment yet, so the cookbook shows the recipe at this PR's head (a0e5be742) as "in progress". A later cookbook PR switches it to the measured run once a run is pinned or this PR merges.

@nvpohanh

Copy link
Copy Markdown
Collaborator

/use 39695060576

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

@nvpohanh staged run 39695060576.

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

@nvpohanh

Copy link
Copy Markdown
Collaborator

[by Claude Code] sgl-project/sglang#45749 has been merged. This PR's AgentX config (dsv41flash-fp4-gb300-dynamo-sglang-agentic-dspark-disagg) is now in the Agentic Long-Context Deployment section of the SGLang DeepSeek-V4.1 cookbook: https://docs.sglang.io/cookbook/autoregressive/DeepSeek/DeepSeek-V4_1#agentic-long-context-deployment

This PR's /use 39695060576 comment came after this cookbook round was synced, so the cookbook shows the recipe at a0e5be742 as "in progress". That is the commit run 39695060576 measured, so the commands are already the measured ones; a later cookbook PR marks them verified.

@nvpohanh

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.
  • 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
  • Verified that every draft model and draft head is served as it ships: the draft that ships with the served checkpoint, at its stored precision, through the pinned upstream image's default handling, with the shipped and effective draft precision recorded in the additional detail section. No submission-side quantization, dtype override, checkpoint substitution, or patch may lower draft precision below that default, regardless of eval results or AL. Explicitly verified that SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE is not enabled in the effective recipe, including inherited settings; enabling it is prohibited going forward, and historical runs do not grant an exception. See Draft-model precision for what counts as the default and the MLPerf comparison.
  • 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 infx/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; target/verifier FLOPs at lower precisions is fine, given that the config passes private evals, but this does not permit lowering draft-model or draft-head precision below what ships. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
  • For affected Dynamo TRT-LLM benchmarks, verified that iteration/KV-cache metrics are collected and published under the pinned Dynamo implementation and effective engine settings. Resolve the installed Dynamo version separately from the container tag; use supported metrics controls without requiring KV events. Record the version and configuration evidence in the additional detail section. See verifier Check 17. N/A for unaffected serving paths or frameworks without these Dynamo settings.
  • 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 affected vLLM/SGLang production serving configuration in this PR, including Dynamo deployments, is documented in the official vLLM recipes and/or the SGLang cookbook, for both single-node and multi-node aggregated and disaggregated serving. The documentation covers production-useful flags, environment variables, and launch commands (including prefill, decode, and router/frontend commands for disaggregation); InferenceX-only benchmark/harness settings are excluded with reasoning in the additional detail section:
    • I linked the corresponding upstream PR in the vLLM recipe repo or SGLang cookbook source 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 this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.
  • Reported measured throughput/E2EL Pareto counts and evidence per affected curve (≥5 points strongly recommended). Below 5 or unverifiable: tag a core maintainer for review; recorded admin bypass required before merge. N/A if no curves are affected. Details.

Additional detail section:

  • Pinned run: Run Sweep 39695060576 (attempt 1, pull_request, head a0e5be74248f09552f88904f90dc71e8f190a3e9, the current PR head), pinned by /use 39695060576. All 7 benchmark jobs and all 5 eval jobs succeeded; none were skipped. Result artifacts (results_bmk, eval_results_all, bmk_agentic_*) are unexpired.

    • Benchmarks: disagg 3P1D c1228, 5P1D c2884 and 8P1D c4096 on lmsysorg/sglang:nightly-dev-cu13-20261021-c1c287a4@sha256:b0473834…. Agg TP4 c1/c4/c16 and TP2/EP2 c16 on the unchanged lmsysorg/sglang:nightly-dev-cu13-20261015-a6a8c560@sha256:0a1ba33a….
  • Evals: gsm8k em_strict (n=1319) against the default threshold of 0.90 in infx/evals/thresholds.yaml (no dsv41flash override):

    Config Score
    disagg c1228 0.9757
    disagg c2884 0.9727
    disagg c4096 0.9727
    agg TP4 c16 0.9704
    agg TP2/EP2 c16 0.9750

    All infrastructure checks succeeded, and each eval job used the same image as the PR config.

  • Chat template: The agentx client runs with --scenario agentx, whose defaults use endpoint_type: chat (/v1/chat/completions, streaming), with chat_template_kwargs {"reasoning_effort":"high","thinking":true}.

  • Draft precision:

    • The DSpark draft is the checkpoint's embedded mtp.0-mtp.2 of deepseek-ai/DeepSeek-V4.1-Flash (num_nextn_predict_layers=3, dspark_block_size=5).

    • Shipped precision, from the safetensors headers:

      Draft tensors Stored as
      Attention, shared experts, main_proj FP8 E4M3 with E8M0 scales
      Routed experts FP4 with E8M0 scales
      Norms, gate, markov and confidence heads BF16
      hc_*, attn_sink F32
    • Effective precision: the same as shipped. The only exception is the draft wo_a, which the pinned SGLang loads FP8 to BF16 by default (deepseek_v4_dspark.py wo_a_fp8=False). That default is the checklist baseline, and it does not lower precision.

    • There is no draft-model path, draft quantization, dtype, KV-cache-dtype or load-format override.

    • SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE is not set in either recipe, inherited env, the launch commands or the worker env dumps of any job. It defaults to False in environ.py at both pinned SGLang commits (c1c287a42 and a6a8c5601).

    • SGLANG_OPT_DSV41_BF16_INDEX_LOGITS=1 (decode only) changes only the storage dtype of the target indexer's top-k scores. The draft has no indexer, so it does not touch the draft and removes no FLOPs. The evals above cover it.

  • Golden AL:

    • Source: infx/golden_al_distribution/dsv41flash_dspark.yaml, deepseek-v4.1-flash, thinking_on, 5 draft tokens (DSpark block size 5), giving 3.51.
    • infx/srt_slurm/synthetic_acceptance.py injects SGLANG_SIMULATE_ACC_LEN=3.51, SGLANG_SIMULATE_ACC_METHOD=match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token into every role.
    • Confirmed in the [INFO] Env: dumps of all prefill and decode workers (c1228, c2884, c4096) and all agg workers. Eval-only jobs correctly run real acceptance.
  • Model and scenario: dsv41flash agentic coding is active in MODELS.md. There are no --hf-overrides, json-model-override-args or config edits.

  • Image and ordering: Both configs use upstream lmsysorg/sglang images with framework: dynamo-sglang (open-source engine). Dynamo is the image's bundled 1.6.0.dev20261019 (dynamo.install: false).

  • Dynamo TRT-LLM metrics: N/A. These are Dynamo + SGLang configs, not Dynamo TRT-LLM.

  • No engine patches: no patch files, setup scripts, sitecustomize or engine wheel installs. The only srt-slurm runner patch (573-participating-gpus.patch) touches harness power telemetry, not the engine. No waiver is needed.

  • Append-only: N/A. No changelog entry uses append-only: true.

  • Recipe:

    • Merged upstream cookbook PR sgl-project/sglang#45749, merged 2026-10-22T06:15:20Z.
    • Published at DeepSeek-V4.1 cookbook, Agentic Long-Context Deployment.
    • Disagg c1228/c2884/c4096: covered by the cells sourced from this PR at a0e5be74. They cover the image, the etcd and Mooncake master services, the Dynamo frontend (KV router, session-affinity TTL 14400, ZMQ event plane, TCP request plane), and the prefill DEP2 and decode DEP16 launch commands. All engine flags and env vars are included (Mooncake external linker, MOONCAKE_*/MC_*, flashmla_mega, round-robin decode with total_tokens, BF16 index logits).
    • Agg TP4 c1/c4/c16 and TP2/EP2 c16: unchanged by this PR and covered by the same page.
    • Excluded InferenceX-only settings: logging and metrics collection (PYTHONUNBUFFERED, PYTHONNOUSERSITE, MC_STORE_CLIENT_METRIC_INTERVAL), cluster plumbing (HF_HUB_CACHE, tachometer and otel-collector, Slurm sbatch/srun, health check, placement, frontend numa_bind) and the AIPERF client env.
    • @fabric.rdma-devices and {node} appear in the cookbook as $IB_DEVICES and $NODE_IP.
  • Pareto:

    • Affected curve: dsv41flash / agentic-coding / gb300_dynamo-sglang / fp4 (agg and disagg form one series). Metrics: total_tput_tps per GPU vs E2EL, from run 39695060576 results_bmk.

    • P90: 7 measured points, 6 on the frontier. Only agg TP4 c1 is dominated.

    • P75: 6 frontier points.

    • Computed with infx.workflows.pareto_coverage.

    • Point values:

      Point tput/GPU P90 E2EL (s)
      agg TP4 c1 7862 8.14
      agg TP4 c4 10417 6.44
      agg TP4 c16 29149 6.83
      agg TP2/EP2 c16 56085 9.11
      disagg c1228 367164 11.43
      disagg c2884 589025 22.51
      disagg c4096 646432 25.56

Signed: nvpohanh

@github-actions

Copy link
Copy Markdown
Contributor

✅✅✅ Verdict: PASS ✅✅✅

Passed and not applicable checks

✅ Check 0 (CODEOWNER): PASS — @nvpohanh is a listed owner of inferencex-e2e/configs/nvidia-master.yaml and of the gb300-* srt-slurm recipe path; perf-changelog.yaml falls under the catch-all owner.

✅ Check 1 (Sweep on in-PR commit): PASS — head a0e5be74 (the pinned and current tip) has every executed multi-node agentic / (3 disagg plus 3 agg) and multi-node agentic eval / (5) check-run at success, and the canary TP4 c1 job also passed, in run 39695060576. This multi-node AgentX PR has no fixed-sequence jobs, so the skipped single-node jobs are irrelevant.

✅ Check 2 (Evals): PASS — eval_results_all reports gsm8k em_strict (n=1319) of 0.9757/0.9727/0.9727 for disagg c1228/c2884/c4096 and 0.9704/0.9750 for agg TP4/TP2EP2 c16, against the 0.90 default threshold (no dsv41flash override); all show infrastructure_success. Eval jobs ran on the same images as the configs (c1c287a4 disagg, a6a8c560 agg).

✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#45749 is MERGED (2026-10-22T06:15:20Z). Its deepseek-v4_1.jsx cookbook data at PR SHA a0e5be74 covers 3P1D/5P1D/8P1D with the image, etcd, Mooncake master, Dynamo frontend (KV router, TTL 14400, ZMQ/TCP planes), and full prefill DEP2 and decode DEP16 commands. The commands include every engine flag and env var: flashmla_mega, external linker, MOONCAKE_*/MC_*, per-point MRR/graph BS/extra slots, max-prefill-tokens 32768, round-robin with total_tokens, and BF16 index logits. The unchanged agg entries also appear on the page. The sign-off justifies its exclusions as InferenceX-only.

✅ Check 4 (Reuse command): PASS — @nvpohanh (COLLABORATOR) posted /use 39695060576 on its own line, naming the passing run from Check 1.

✅ Check 5 (Latest template): PASS — all 19 items of the current PR_REVIEW_CHECKLIST.md template are present and checked.

✅ Check 6 (Upstream image / ordering): PASS — both entries use upstream lmsysorg/sglang digest-pinned nightlies with framework: dynamo-sglang, an open-source engine, so the ordering rule does not apply.

✅ Check 7 (Deprecated models): PASS — the MODELS.md row for dsv41flash lists agentic coding as active, with no deprecation as of 2026-10-22.

✅ Check 8 (No architecture hacks): PASS — no --hf-overrides, json-model-override-args or model-config edits. SGLANG_OPT_DSV41_BF16_INDEX_LOGITS changes only the storage precision of the target indexer and removes no FLOPs; evals pass.

✅ Check 9 (Spec-decode chat template): PASS — the AgentX client drives the chat endpoint, with chat_template_kwargs {"reasoning_effort":"high","thinking":true} in AIPERF_EXTRA_INPUTS.

✅ Check 10 (No engine patches): PASS — the PR adds no patches, setup scripts, sitecustomize or wheel installs; the only srt-slurm patch, 573-participating-gpus.patch, touches srtctl/core/power/session.py (harness telemetry), not the engine.

✅ Check 11 (Agentic golden AL): PASS — synthetic_acceptance.py maps DSPARK speculative-dspark-block-size: 5 to golden dsv41flash_dspark.yaml thinking_on[5] = 3.51 and injects SGLANG_SIMULATE_ACC_LEN/match-expected/real-draft-token into every role; eval-only runs keep real acceptance.

➖ Check 12 (Append-only): N/A — no new changelog entry sets append-only: true.

✅ Check 13 (Draft precision): PASS — the draft is the checkpoint's embedded DSpark head, served with no draft path, quantization, dtype or KV-dtype override. Pinned SGLang c1c287a42 deepseek_v4_dspark.py sets wo_a_fp8=False, a load-time default that is the baseline. SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE is unset in both recipes and defaults to EnvBool(False) in environ.py.

✅ Check 14 (Pareto coverage): PASS — curve dsv41flash/agentic-coding/gb300_dynamo-sglang/fp4 (agg and disagg points combined) from results_bmk of run 39695060576 attempt 1: P90 E2EL 6/7 frontier points and P75 E2EL 6/7 frontier points (pareto_coverage PASS; only agg TP4 c1 is dominated).

✅ Check 15 (PR description): PASS — the claimed topology, MRR/graph BS/extra slots, Mooncake segment sizes, routing, KV events, scheduling flags, image digest and unchanged agg points all match the pinned recipe. sglang#44623 (merge 1ec902e0) is an ancestor of image commit c1c287a42.

✅ Check 16 (NVIDIA overview): PASS — DeepSeek-V4.1-Flash has a populated SGLang cell in the Framework Recipes table of the NVIDIA overview.

➖ Check 17 (Metrics publication): N/A — the affected configs are Dynamo + SGLang, not Dynamo TRT-LLM, so these Dynamo metrics settings do not apply (enable-metrics: true is set on both roles).

Assessed commit: a0e5be74248f09552f88904f90dc71e8f190a3e9.

@cquil11
cquil11 merged commit 36585df into main Oct 22, 2026
26 checks passed
@cquil11
cquil11 deleted the weireweire/dsv41flash-gb300-sgl-disagg-1019 branch October 22, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants