Repository navigation
Add B300 Dynamo+SGLang AgentX configs for DeepSeek V4 with NIXL KV transfer / 添加使用 NIXL KV 传输的 DeepSeek V4 B300 Dynamo+SGLang AgentX 配置 - #3817
Conversation
将 B300 Dynamo+SGLang AgentX 变更日志条目的 pr-link 指向 #3817。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
新增基于 Mooncake 的 B300 DeepSeek V4 AgentX 配方,并适配 Python 启动器。
移除配方中与集群级每 GPU CPU 配置冲突的任务级 CPU 参数。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gentX The pluggable launcher resolves DeepSeek-V4-Pro-0813 on b300-dsxe to the shared /data/models copy for every non-vLLM framework, including multi-node Dynamo+SGLang, which previously read the node-local /scratch/models copy. With several points loading concurrently from shared storage, the TP8 c1 agg worker spent ~2.9h in weight loading and lost its etcd lease; the TP4 c4 agg worker never became healthy within the 4h window on the previous head. Pin every point of both configs to /scratch/models/DeepSeek-V4-Pro-0813 via the MODEL_PATH additional-setting, restoring the storage path under which this recipe set last passed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oint A point-level MODEL_PATH is opaque to the launcher, so srtctl's model preflight (srt-slurm v2.39.1) ran on the runner host and rejected the node-local /scratch/models path. Instead, add dynamo-sglang to the b300-dsxe override that already routes vLLM to DeepSeek-V4-Pro-0813@scratch: the checkpoint is then known to be node-local, model_paths maps the recipe alias to /scratch/models/DeepSeek-V4-Pro-0813, and preflight is skipped as it is for vLLM. Single-node SGLang keeps the shared /data/models copy. Drop the MODEL_PATH additional-settings added in the previous commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the disaggregated 2P1D DEP8 c480 point with a one-node aggregate DEP8 c384 Dynamo+SGLang recipe that follows the single-node SGLang DEP8 c384 point: attention DP8 + EP8 Mega-MoE, FP4 indexer, prefill delayer (interval 20), chunked prefill 65536, max-running-requests 768, cuda-graph-max-bs-decode 544, mem-fraction-static 0.88, swa-full-tokens-ratio 0.075 and a HiCache ratio 3 write_back DRAM tier with the page_first_direct layout. The recipe uses this PR's lmsysorg/sglang:nightly-dev-20260916-c9a8fba9 image and its arg names (tp-size/dp-size/ep-size, attention-backend dsv4 instead of the deprecated compressed alias, no deprecated SGLANG_ENABLE_UNIFIED_RADIX_TREE). The Dynamo frontend tokenizes and routes, so SGLang-server-only settings (tokenizer workers, parsers, chat template, server warmup, keep-alive) are dropped; per-DP-rank KV events feed the Dynamo KV router. Drop enable-w4a4-mxfp4-megamoe from every recipe, so Mega-MoE runs its default FP8xFP4 kernels. 将 B300 分离式 2P1D DEP8 c480 测试点替换为单节点聚合式 DEP8 c384 Dynamo+SGLang 配方,沿用单节点 SGLang DEP8 c384 测试点:注意力 DP8 + EP8 Mega-MoE、FP4 indexer、prefill delayer(间隔 20)、chunked prefill 65536、max-running-requests 768、cuda-graph-max-bs-decode 544、 mem-fraction-static 0.88、swa-full-tokens-ratio 0.075,以及 HiCache 比例 3、write_back、page_first_direct 布局的 DRAM 层。 配方使用本 PR 的 lmsysorg/sglang:nightly-dev-20260916-c9a8fba9 镜像及其参数 命名(tp-size/dp-size/ep-size、以 attention-backend dsv4 替代已弃用的 compressed 别名、不再设置已弃用的 SGLANG_ENABLE_UNIFIED_RADIX_TREE)。由于 Dynamo 前端负责分词与路由,移除仅适用于 SGLang 服务端的设置(tokenizer worker、解析器、聊天模板、服务端预热、keep-alive);各 DP rank 的 KV 事件 供 Dynamo KV 路由器使用。 所有配方移除 enable-w4a4-mxfp4-megamoe,Mega-MoE 使用默认的 FP8xFP4 kernel。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
将 B300 Dynamo+SGLang AgentX 变更日志条目的 pr-link 指向 #3631。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Set cuda-graph-max-bs-decode to 96, the per-DP-rank request cap (max-running-requests 768 / dp-size 8). SGLang already clamps captured decode batch sizes to the per-rank request pool, so 544 never captured more than this; the explicit value states the intended limit. 将 B300 聚合式 DEP8 c384 配方的 cuda-graph-max-bs-decode 设为 96,即每个 DP rank 的请求上限(max-running-requests 768 / dp-size 8)。SGLang 本就会把 捕获的 decode batch size 限制在每个 rank 的请求池以内,544 实际上从未捕获 超过该值;显式设置可明确预期的上限。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The c384 warmup burst hit Dynamo's 5 s default request-plane ack timeout while the worker ingested the large AgentX requests; the frontend then marked the only worker unreachable and returned 500/503 for every warmup request. Set DYN_TCP_REQUEST_TIMEOUT to 60 s, as in the disaggregated recipes of this PR. c384 预热突发请求期间,worker 接收大量 AgentX 大请求时触发了 Dynamo 请求平面 默认 5 秒的确认超时;前端随后将唯一的 worker 标记为不可达,所有预热请求均返回 500/503。与本 PR 的分离式配方一致,将 DYN_TCP_REQUEST_TIMEOUT 设为 60 秒。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fill the interactivity gap between agg TP4 c4 (~244 tok/s/user) and disagg 1P1D DEP8 c64 (~128 tok/s/user) with two points: - agg TP4 c8: the TP4 c4 recipe at max-running-requests 16 and cuda-graph-max-bs-decode 16, plus a HiCache DRAM tier (ratio 2.75, write_through, direct I/O, page_first_direct, as in the B200 TP8 AgentX recipe on the same image) because TP4 c4 already fills about 60% of the GPU KV pool. - disagg 1P2D DEP8 c64: the 1P1D c64 recipe with a second decode worker, which halves each decode rank's load. 在聚合式 TP4 c4(约 244 tok/s/user)与分离式 1P1D DEP8 c64(约 128 tok/s/user)之间增加两个测试点: - 聚合式 TP4 c8:基于 TP4 c4 配方,max-running-requests 16、 cuda-graph-max-bs-decode 16;由于 TP4 c4 已占用约 60% 的 GPU KV 池, 增加 HiCache DRAM 层(比例 2.75、write_through、direct I/O、 page_first_direct,与同一镜像上的 B200 TP8 AgentX 配方相同)。 - 分离式 1P2D DEP8 c64:即 1P1D c64 配方增加第二个 decode worker,使每个 decode rank 的负载减半。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The B300 DSXE disaggregated recipes replace the image's mooncake-transfer-engine-cuda13 0.3.13 with the public EFA build mooncake-transfer-engine-efa-cuda13 0.3.13.post1 at container setup, as SGLang's AWS EFA documentation prescribes, because the nodes connect over AWS EFA and the standard build lacks the EFA transport. Document what is changed, why the unmodified image cannot run the disaggregated points, the upstream links, and the removal plan. B300 DSXE 分离式配方在容器初始化时,按照 SGLang 的 AWS EFA 文档,将镜像中的 mooncake-transfer-engine-cuda13 0.3.13 替换为公开的 EFA 版本 mooncake-transfer-engine-efa-cuda13 0.3.13.post1:节点之间通过 AWS EFA 互联, 而标准版本不包含 EFA 传输。本豁免说明所做的改动、未经修改的镜像无法运行分离式 测试点的原因、上游链接以及移除计划。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Switch the B300 DeepSeek-V4-Pro-0813 disaggregated recipes (1P1D DEP8 c64/c240 and 1P2D DEP8 c64) from Mooncake to NIXL with the LIBFABRIC backend for the DSXE EFA fabric. The NIXL build already in the pinned lmsysorg/sglang:nightly-dev-20260916-c9a8fba9 image provides the libfabric plugin, so the container runs as shipped: drop the install-mooncake-efa-cu13.sh setup script, which replaced the image's Mooncake package with the EFA wheel, along with its waiver and the Mooncake-only MOONCAKE_PROTOCOL, MC_MS_FILTERS and WITH_NVIDIA_PEERMEM settings. Prefill and decode both set SGLANG_DISAGGREGATION_NIXL_BACKEND=LIBFABRIC, and the master config reports kv-p2p-transfer: nixl. 将 B300 DeepSeek-V4-Pro-0813 分离式配方(1P1D DEP8 c64/c240 与 1P2D DEP8 c64)的 KV 传输由 Mooncake 改为使用 LIBFABRIC 后端的 NIXL,以适配 DSXE 的 EFA 网络。固定镜像 lmsysorg/sglang:nightly-dev-20260916-c9a8fba9 中自带的 NIXL 已包含 libfabric 插件,容器可按原样运行:移除用 EFA wheel 替换镜像内 Mooncake 包的 install-mooncake-efa-cu13.sh 初始化脚本及其豁免文件,并移除仅 供 Mooncake 使用的 MOONCAKE_PROTOCOL、MC_MS_FILTERS 与 WITH_NVIDIA_PEERMEM 设置。Prefill 与 decode 均设置 SGLANG_DISAGGREGATION_NIXL_BACKEND=LIBFABRIC, 主配置中的 kv-p2p-transfer 改为 nixl。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g AgentX entry 更新 B300 Dynamo+SGLang AgentX 变更日志条目,说明分离式 KV 传输改用 NIXL。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
将 B300 Dynamo+SGLang AgentX 变更日志条目的 pr-link 指向 #3817。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fbea025 to
b8bafb3
Compare
|
View unofficial run (performance): https://inferencex.semianalysis.com/inference?unofficialRun=38339272863 View unofficial run (accuracy): https://inferencex.semianalysis.com/evaluation?unofficialRun=38339272863 |
|
/use 37715955859 |
|
@nvpohanh staged run 37715955859: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-10-08~r37715955859 This run remains available across future |
|
doc migration: sgl-project/sglang#43083 |
AGENTS.md requires new perf-changelog entries to be English-only, so drop the Simplified Chinese description bullets from this PR's entry. Also drop the b300-dsxe aiperf-cache volume from runners.yaml: no b300-dsxe launch lane or srt-slurm volume-mounts entry mounts it, so it had no effect on any job. 按照 AGENTS.md,新增的 perf-changelog 条目须仅用英文,因此删除本 PR 条目中的 简体中文描述。另删除 runners.yaml 中 b300-dsxe 的 aiperf-cache 卷:b300-dsxe 的启动路径与 srt-slurm volume-mounts 均未挂载该卷,它对任何任务均无影响。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
functionstackx
left a comment
There was a problem hiding this comment.
does the nixl package itself has the efa userspace lib? curious how thsi works cuz sglang container doesnt install the efa userspace yet
|
@functionstackx Yes, I think NIXL packages the libfabric along with the NIXL so it does not rely on user-provided or container environment libfabric or EFA. The Mooncake + EFA hassle is because Mooncake does not package the libfabric along with it and it instead dynamically load the .so file at runtime, so all kinds of incompatibility issue shows up. Correct me if I am wrong |
|
[by Claude Code] sgl-project/sglang#43083 has been merged. This PR's AgentX configs ( The commands mirror the launch measured in run 37715955859, pinned by 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 (Passing sweep on in-PR commit): PASS — Run Sweep 37715955859 (attempt 1, success) ran on in-PR commit ✅ Check 2 (Evals): PASS — gsm8k ✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#43083 is MERGED (2026-10-09T05:55:37Z). At merge commit ✅ Check 4 (Reuse command): PASS — ✅ Check 5 (Latest checklist template): PASS — all 17 items in the current PR_REVIEW_CHECKLIST.md template, including the recipe sub-item, are present and checked. ✅ Check 6 (Upstream image / engine order): PASS — both new entries ( ✅ Check 7 (Deprecated models): PASS — MODELS.md (as of 2026-10-09) lists ✅ Check 8 (No architecture hacks): PASS — the diff has no ✅ Check 9 (Chat template): PASS — ✅ Check 10 (No engine patches): PASS — no ✅ Check 11 (Agentic golden AL): PASS — the launcher injected ➖ Check 12 (Append-only): N/A — the new ✅ Check 13 (Draft as shipped): PASS — the draft is the embedded DSpark head of ✅ Check 14 (Pareto coverage): PASS — one curve, ✅ Check 15 (PR description): PASS — the body's claims (NIXL/LIBFABRIC on prefill and decode, Assessed commit: |
|
@functionstackx Any updates on this? Thanks! |
|
commented on slasck |
There was a problem hiding this comment.
to test reproducibability, i deleted the existing cached squash file and rebased the main and resweeped it from main but it doesnt seem to work #3932
…sglang-agentx-nixl # Conflicts: # inferencex-e2e/perf-changelog.yaml
Move all seven B300 DeepSeek-V4-Pro-0813 Dynamo+SGLang AgentX recipes and both master-config keys to lmsysorg/sglang:nightly-dev-20261013-7224fce1. - DEP8 workers use attn-dp-size 8 in place of the deprecated dp-size 8 + enable-dp-attention. - Install Dynamo from commit b208989fbe, which carries ai-dynamo/dynamo#16005. The image's Dynamo 1.6.0.dev20261010 predates it and registers one DP rank for an attention-DP worker of this SGLang, so the KV router would send every request to DP rank 0. b208989fbe is the first commit after the fix whose aisimulate pin matches the image. - Drop env vars and args that have no effect on this image: names it no longer reads, settings only SGLang's HTTP server reads, values equal to their defaults or set automatically for DeepSeek-V4, DSpark or Dynamo, and the Dynamo router rejection thresholds, which are off by default. - Rename SGLANG_OPT_SWA_RELEASE_LEAF_LOCK_AFTER_WINDOW to SGLANG_OPT_RELEASE_PREFILL_SWA. 将 B300 DeepSeek-V4-Pro-0813 Dynamo+SGLang AgentX 的七个配方及两个主配置项 更新为 lmsysorg/sglang:nightly-dev-20261013-7224fce1。 - DEP8 worker 改用 attn-dp-size 8,取代已弃用的 dp-size 8 + enable-dp-attention。 - 从 Dynamo 提交 b208989fbe 安装 Dynamo,其中包含 ai-dynamo/dynamo#16005。镜像 自带的 Dynamo 1.6.0.dev20261010 早于该修复,对该版本 SGLang 的注意力 DP worker 只注册一个 DP rank,KV 路由器会把所有请求发往 DP rank 0。b208989fbe 是该修复 之后第一个 aisimulate 版本约束与镜像一致的提交。 - 删除在该镜像中不起作用的环境变量与参数:镜像不再读取的名称、仅 SGLang 自身 HTTP 服务端读取的设置、等于默认值或由 DeepSeek-V4、DSpark、Dynamo 自动设置的值,以及 默认关闭的 Dynamo 路由拒绝阈值。 - 将 SGLANG_OPT_SWA_RELEASE_LEAF_LOCK_AFTER_WINDOW 重命名为 SGLANG_OPT_RELEASE_PREFILL_SWA。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Generally most InferenceX submissions don't need to add changes to the infx package. On the off chance they do, generally the diff is small. Please prompt your agent to clean your PR to keep your diff to only necessary & minimal changes too. We have an increased code quality bar for changes to the infx package. 中文大多数 InferenceX 提交通常不需要修改 infx 包。即使确实需要,改动通常也很小。请让你的 agent 清理 PR,使改动只包含必要且最小的内容。infx 包的改动有更高的代码质量要求。 |
|
[by Claude Code] The SGLang cookbook update of this PR's AgentX configs ( The commands mirror the launch measured in run 37715955859, pinned by this PR's |
|
[by Claude Code] sgl-project/sglang#43983 has been merged. This PR's AgentX configs ( The commands mirror the launch measured in run 37715955859, pinned by this PR's |
|
Need more fixes |
[by Claude Code]
Summary
Adds DeepSeek-V4-Pro-0813 FP4 B300 Dynamo+SGLang AgentX recipes. The recipes come from #3631, with disaggregated KV transfer over NIXL instead of Mooncake, and now run on
lmsysorg/sglang:nightly-dev-20261013-7224fce1.nightly-dev-20261013-7224fce1replacesnightly-dev-20260916-c9a8fba9.attn-dp-size: 8in place ofdp-size: 8+enable-dp-attention: true, which [Feature] Add --attn-dp-size and deprecate --enable-dp-attention sgl-project/sglang#41818 deprecated.b208989fbe, which is also the router version in the master config.1.6.0.dev20261010predates fix(sglang): count attention-DP ranks from attn_dp_size ai-dynamo/dynamo#16005. In this SGLang, both DP spellings resolve todp_size=1, attn_dp_size=8. That Dynamo reads onlydp_sizeandenable_dp_attention, so it would register one DP rank per DEP8 worker and subscribe only to rank 0's KV events. The KV router would then send every request to DP rank 0.b208989fbeis the first commit after #16005 whose dependency pins match the image (aisimulate==0.13.0.dev2). srt-slurm builds it at job start and caches the build on/configs, as forqwen3.5-fp8-b300-dynamo-sglang-agentic-disaggon the same cluster.SGLANG_DISAGGREGATION_NIXL_BACKEND=LIBFABRIC). The image's NIXL 1.5.0 ships the plugin, so there is no setup script, waiver or package change.b300-dsxe, Dynamo+SGLang serves DeepSeek-V4-Pro-0813 from the node-local NVMe copy (DeepSeek-V4-Pro-0813@scratch), as vLLM already does.Settings removed or renamed for the 1013 image
Checked against the SGLang source at
7224fce1and the Dynamo source atb208989fbe. Topology declarations (tp-size,ep-size, anddp-size: 1on TP points) are kept.SGLANG_OPT_SWA_SPLIT_LEAF_ON_INSERT,SGLANG_OPT_USE_JIT_NORM,SGLANG_OPT_USE_DEEPGEMM_MEGA_MOE,SGLANG_DSV4_MHC_PREWARMmoe-a2a-backend: megamoeselects Mega-MoE, and MHC prewarm always runs.SGLANG_OPT_DEEPGEMM_MEGA_MOE,NCCL_TIMEOUTSGLANG_DEFAULT_THINKING,SGLANG_DSV4_REASONING_EFFORT,SGLANG_REQUEST_STATE_WAIT_TIMEOUTSGLANG_RAGGED_VERIFY_MODE=static,SGLANG_JIT_DEEPGEMM_PRECOMPILE=1,SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1,SGLANG_OPT_USE_CUSTOM_ALL_REDUCE_V2=1,SGLANG_OPT_USE_ONLINE_COMPRESS=0,SGLANG_OPT_USE_JIT_INDEXER_METADATA=1,SGLANG_OPT_USE_TOPK_V2=Trueattention-backend: dsv4,page-size: 256speculative-num-steps: 1,speculative-eagle-topk: 1,speculative-num-draft-tokens: 7speculative-dspark-block-size: 6, which also selects the golden acceptance length.swa-full-tokens-ratio: 0.1,hicache-write-policy: write_throughcuda-graph-max-bs-prefilldisable-shared-experts-fusionSGLANG_OPT_DEEPGEMM_MEGA_MOE_FUSE_SHARED_EXPERTS, not by this flag.incremental-streaming-output,enable-cache-reportactive-decode-blocks-threshold,active-prefill-tokens-threshold,active-prefill-tokens-threshold-fracset to"None"SGLANG_OPT_SWA_RELEASE_LEAF_LOCK_AFTER_WINDOW→SGLANG_OPT_RELEASE_PREFILL_SWARecipe details (carried over from #3631)
Aggregate DEP8 c384
Ported from the single-node SGLang DEP8 c384 point (
dsv4-fp4-b300-sglang-agentic-hicache-mtp,benchmarks/single_node/srt-slurm-recipes/dsv4/sglang/b300-fp4-mtp/agentic.yaml,override_dep8_c384):prefill-decode-interval: 20,stream-interval: 20,chunked-prefill-size: 65536withSGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=8320,max-running-requests: 768(96 per DP rank, twice concurrency),mem-fraction-static: 0.88,swa-full-tokens-ratio: 0.075, HiCache ratio 3 (write_back,direct,page_first_direct), DSpark K=6.cuda-graph-max-bs-decode: 96, the per-rank request cap (768 / 8).X-Dynamo-Session-ID, and each DP rank publishes KV events (kv-events-config). The frontend setsDYN_TCP_REQUEST_TIMEOUT: "60", as the disaggregated recipes do, so the c384 warmup burst does not exceed Dynamo's 5 s request-plane ack timeout.tokenizer-worker-num, tool-call and reasoning parsers, chat template,skip-server-warmup,SGLANG_TIMEOUT_KEEP_ALIVE.Gap-filling points: agg TP4 c8 and disagg 1P2D DEP8 c64
max-running-requests: 16andcuda-graph-max-bs-decode: 16, plus a HiCache DRAM tier (hicache-ratio: 2.75,write_through,direct,page_first_direct), because TP4 c4 already fills about 60% of the GPU KV pool.NIXL instead of Mooncake
On AWS EFA, Mooncake needs the separate
mooncake-transfer-engine-efa-cuda13wheel in place of the image's Mooncake package, which #3631 installed during container setup (review). NIXL packages its own libfabric backend, so these recipes drop that setup script, its waiver and the Mooncake-only settings (MOONCAKE_PROTOCOL,MC_MS_FILTERS,WITH_NVIDIA_PEERMEM). The NIXL LIBFABRIC settings come from #3597.AI model disclosure
claude-opus-5-5, via Claude Code), including two delegated read-only sub-agents on the same model:main; audited every recipe flag and env var against SGLang7224fce1and the bundled and pinned Dynamo sources; moved the recipes tonightly-dev-20261013-7224fce1; switched DEP8 workers toattn-dp-size; pinned Dynamo; removed or renamed settings; updated the changelog entry and this description.main, switched the disaggregated recipes from Mooncake to NIXL, and removed the Mooncake setup script and waiver.PR checklist and change type
Type of Change
Checklist
inferencex-e2e/perf-changelog.yamland have not edited historical entriesfull-sweep-fail-fast(recommended),full-sweep-enabled, ornon-canary-full-sweep-enabled. Optional modifiersall-evals,evals-only, andagentx-fastrequire a primary label; the last two block reuse while applied.OWNER/MEMBER/COLLABORATOR) has commented/use <run_id>(or the legacy/reuse-sweep-run) on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the primary sweep label will no longer automatically kick off new sweeps. Remove and re-add the primary sweep label to force a new sweep.中文
摘要
新增 DeepSeek-V4-Pro-0813 FP4 B300 Dynamo+SGLang AgentX 配方。配方沿用 #3631,分离式 KV 传输由 Mooncake 改为 NIXL,现运行于
lmsysorg/sglang:nightly-dev-20261013-7224fce1。nightly-dev-20261013-7224fce1取代nightly-dev-20260916-c9a8fba9。attn-dp-size: 8,取代已被 [Feature] Add --attn-dp-size and deprecate --enable-dp-attention sgl-project/sglang#41818 弃用的dp-size: 8+enable-dp-attention: true。b208989fbe安装 Dynamo,主配置中的 router 版本也记为该提交。1.6.0.dev20261010早于 fix(sglang): count attention-DP ranks from attn_dp_size ai-dynamo/dynamo#16005。在该版本 SGLang 中,两种 DP 写法都会解析为dp_size=1, attn_dp_size=8。而该 Dynamo 只读取dp_size与enable_dp_attention,因此每个 DEP8 worker 只注册一个 DP rank,并且只订阅 rank 0 的 KV 事件,KV 路由器会把所有请求发往 DP rank 0。b208989fbe是 #16005 之后第一个依赖版本约束与镜像一致(aisimulate==0.13.0.dev2)的提交。srt-slurm 在作业启动时构建它,并把构建结果缓存在/configs,与同一集群上的qwen3.5-fp8-b300-dynamo-sglang-agentic-disagg做法相同。SGLANG_DISAGGREGATION_NIXL_BACKEND=LIBFABRIC)。镜像中的 NIXL 1.5.0 已自带该插件,因此无需初始化脚本、豁免文件或软件包改动。b300-dsxe上,Dynamo+SGLang 从节点本地 NVMe 副本(DeepSeek-V4-Pro-0813@scratch)加载 DeepSeek-V4-Pro-0813,与 vLLM 现有做法相同。针对 1013 镜像删除或重命名的设置
均已对照 SGLang
7224fce1与 Dynamob208989fbe源码核实。拓扑声明(tp-size、ep-size以及 TP 测试点上的dp-size: 1)予以保留。SGLANG_OPT_SWA_SPLIT_LEAF_ON_INSERT、SGLANG_OPT_USE_JIT_NORM、SGLANG_OPT_USE_DEEPGEMM_MEGA_MOE、SGLANG_DSV4_MHC_PREWARM。Mega-MoE 由moe-a2a-backend: megamoe选择,MHC 预热始终执行。SGLANG_OPT_DEEPGEMM_MEGA_MOE(拼写错误)与NCCL_TIMEOUT(并非 NCCL 变量)。SGLANG_DEFAULT_THINKING、SGLANG_DSV4_REASONING_EFFORT、SGLANG_REQUEST_STATE_WAIT_TIMEOUT。在 Dynamo 之后,前端按请求中的思考模式与推理强度套用聊天模板,worker 直接调用引擎。SGLANG_RAGGED_VERIFY_MODE=static、SGLANG_JIT_DEEPGEMM_PRECOMPILE=1、SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1、SGLANG_OPT_USE_CUSTOM_ALL_REDUCE_V2=1、SGLANG_OPT_USE_ONLINE_COMPRESS=0、SGLANG_OPT_USE_JIT_INDEXER_METADATA=1、SGLANG_OPT_USE_TOPK_V2=True。attention-backend: dsv4、page-size: 256。speculative-dspark-block-size: 6推导:speculative-num-steps: 1、speculative-eagle-topk: 1、speculative-num-draft-tokens: 7。golden 接受长度同样由 block size 选择。swa-full-tokens-ratio: 0.1与hicache-write-policy: write_through。cuda-graph-max-bs-prefill。disable-shared-experts-fusion:DeepSeek-V4 仅在强制时才把共享专家融合进路由专家权重;Mega-MoE 的 kernel 内融合由SGLANG_OPT_DEEPGEMM_MEGA_MOE_FUSE_SHARED_EXPERTS控制,而非此参数。incremental-streaming-output由 Dynamo 强制开启;enable-cache-report只影响 SGLang 的 OpenAI 服务端。"None"的active-decode-blocks-threshold、active-prefill-tokens-threshold、active-prefill-tokens-threshold-frac:Dynamo 路由拒绝阈值默认关闭。SGLANG_OPT_SWA_RELEASE_LEAF_LOCK_AFTER_WINDOW在镜像中重命名为SGLANG_OPT_RELEASE_PREFILL_SWA。新名称默认关闭,因此以新名称保留该设置。配方细节(沿用自 #3631)
聚合式 DEP8 c384:移植自单节点 SGLang DEP8 c384 测试点(
dsv4-fp4-b300-sglang-agentic-hicache-mtp,benchmarks/single_node/srt-slurm-recipes/dsv4/sglang/b300-fp4-mtp/agentic.yaml,override_dep8_c384)。prefill-decode-interval: 20的 prefill delayer、stream-interval: 20、chunked-prefill-size: 65536配合SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=8320、max-running-requests: 768(每个 DP rank 96,为并发数两倍)、mem-fraction-static: 0.88、swa-full-tokens-ratio: 0.075、HiCache 比例 3(write_back、direct、page_first_direct)、DSpark K=6。cuda-graph-max-bs-decode: 96,即每个 rank 的请求上限(768 / 8)。X-Dynamo-Session-ID保持亲和,各 DP rank 发布 KV 事件(kv-events-config)。前端与分离式配方一样设置DYN_TCP_REQUEST_TIMEOUT: "60",避免 c384 预热突发请求超过 Dynamo 请求平面默认 5 秒的确认超时。tokenizer-worker-num、工具调用与推理解析器、聊天模板、skip-server-warmup、SGLANG_TIMEOUT_KEEP_ALIVE。补充测试点:
max-running-requests: 16、cuda-graph-max-bs-decode: 16,并增加 HiCache DRAM 层(hicache-ratio: 2.75、write_through、direct、page_first_direct),因为 TP4 c4 已占用约 60% 的 GPU KV 池。**以 NIXL 取代 Mooncake:**在 AWS EFA 上,Mooncake 需要用单独的
mooncake-transfer-engine-efa-cuda13wheel 替换镜像自带的 Mooncake 包,#3631 在容器初始化时完成这一替换(review)。NIXL 自带 libfabric 后端,因此这些配方移除了该初始化脚本、其豁免文件以及仅供 Mooncake 使用的设置(MOONCAKE_PROTOCOL、MC_MS_FILTERS、WITH_NVIDIA_PEERMEM)。NIXL LIBFABRIC 设置来自 #3597。AI 模型披露
claude-opus-5-5,通过 Claude Code),包括两个使用同一模型的只读委派子代理:main;对照 SGLang7224fce1以及镜像自带与固定版本的 Dynamo 源码审查所有配方参数与环境变量;将配方迁移到nightly-dev-20261013-7224fce1;DEP8 worker 改用attn-dp-size;固定 Dynamo 版本;删除或重命名相关设置;更新变更日志条目与本说明。main,将分离式配方由 Mooncake 切换为 NIXL,并移除 Mooncake 初始化脚本与豁免文件。🤖 Generated with Claude Code