Use DSpark6 for B200 DSV4 SGLang AgentX / B200 DSV4 SGLang AgentX 使用 DSpark6 - #2821
Use DSpark6 for B200 DSV4 SGLang AgentX / B200 DSV4 SGLang AgentX 使用 DSpark6#2821nvpohanh wants to merge 2 commits into
Conversation
|
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 For PR verification, add the 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 模板,包括保留英文语句 如需进行 PR 验证,请为此 PR 添加 PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档 |
1 similar comment
|
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 For PR verification, add the 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 模板,包括保留英文语句 如需进行 PR 验证,请为此 PR 添加 PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档 |
Backfill the public pull request URL in the DSV4 DSpark changelog entry.\n\n在 DSV4 DSpark changelog 条目中回填公开 pull request URL。
There was a problem hiding this comment.
Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.
Beyond the inline finding, I checked two other places touched by the mtp -> draft_model rename: enumerate.py's _mtp_factor already treats draft_model the same as mtp (line 43), so decode-step sizing there is unaffected; and the new dsv4/DeepSeek-V4-Pro-0813 branch in launch_b200-nscale-compat.sh omits SRT_SLURM_MODEL_PREFIX, but that variable is only consumed in the IS_MULTINODE branch of the script, and this benchmark runs single-node, so it's unused in this path.
Extended reasoning...
I independently verified the two ruled-out candidates rather than taking them at face value. For enumerate.py, _mtp_factor (experimental/operatorx/scripts/inferencex_testlist/enumerate.py:43) already lists ("mtp", "draft_model") together, confirming the decode-step-sizing logic downstream of nvidia-master.yaml's new spec-decoding: draft_model value is already compatible and not silently mis-sized to 1 draft token. For the missing SRT_SLURM_MODEL_PREFIX export in the new dsv4/fp4/DeepSeek-V4-Pro-0813 branch of runners/launch_b200-nscale-compat.sh, I traced its only use to line 337 inside the if [[ "$IS_MULTINODE" == "true" ]] block that generates srtslurm.yaml's model_paths map; the single-node else branch (line 541 onward), which is what benchmarks/single_node/agentic/dsv4_fp4_b200_sglang_mtp.sh runs through, never references it, so the omission has no observable effect for this recipe today (it would only matter if this MODEL_PATH combination were later reused for a multi-node launch). Neither of these rises to the level of the already-confirmed ci-priority.yaml spec-decoding gap, but they were concrete enough to be worth recording as ruled out rather than silently dropped.
| - { tp: 8, kv-offloading: none, spec-decoding: draft_model, conc-list: [1, 2, 3, 4, 5] } | ||
| - { tp: 8, kv-offloading: dram, kv-offload-backend: { name: hicache }, spec-decoding: draft_model, conc-list: [8, 10, 16] } | ||
| - { tp: 8, ep: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, spec-decoding: draft_model, conc-list: [64, 96, 128, 160], router: { name: sglang-router, version: "0.3.2" } } |
There was a problem hiding this comment.
🟡 (optional) These three search-space arms now set spec-decoding: draft_model, the first real usage of that value in nvidia-master.yaml, but configs/ci-priority.yaml's spec-decoding adjustments only list mtp/eagle/eagle3 (utils/ci_priority.py:163 does adjustments['spec-decoding'].get(value, 0)). CI priority scoring for this recipe's jobs silently drops by 0.75 (previously granted under spec-decoding: mtp) versus base branch, deprioritizing them in the run-sweep/e2e-tests/profile queues with no error. Fix: add draft_model to configs/ci-priority.yaml's spec-decoding adjustments (or otherwise ensure every spec-decoding value declared in nvidia-master.yaml has a matching CI-priority entry).
Extended reasoning...
utils/ci_priority.py calculate_priority() reads entry.get('spec-decoding','') and looks it up in policy['adjustments']['spec-decoding'] (configs/ci-priority.yaml lines 19-22: only mtp, eagle, eagle3 defined) via a plain dict .get(..., 0) fallback -- no validation/error for unknown values. Before this diff, these three search-space entries (tp:8 kv-offloading:none; tp:8 hicache; tp:8 ep:8 dp-attn hicache) declared spec-decoding: mtp and received +0.75. After the rename to draft_model, the same lookup returns 0, silently subtracting 0.75 from a total score of roughly 3.5-4.25 (base 1.0 + agentic 1.0 + precision fp4 0.75 + model-prefix dsv4 0.75 [+ multi-node 1.25 if applicable] + spec-decoding). This is invoked from .github/workflows/run-sweep.yml, e2e-tests.yml, profile.yml and speedbench-al.yml, so every CI run that schedules this recipe's jobs now ranks them lower relative to siblings still labeled mtp, with no warning that the policy file was not updated alongside the recipe rename.
Verification: nit. The mechanism is real and reachable, but its only consequence is CI queue-ordering, not a functional break. configs/nvidia-master.yaml:943-945 changes three agentic-coding search-space arms from spec-decoding: mtp to spec-decoding: draft_model. configs/ci-priority.yaml:19-22 defines spec-decoding adjustments only for mtp: 0.75, eagle: 0.75, eagle3: 0.75 — draft_model is not…
Move the DeepSeek-V4-Pro B200 SGLang AgentX configuration to the 0813 checkpoint and DSpark6, update the DP-attention flags, and use golden acceptance length 3.77.\n\n将 DeepSeek-V4-Pro B200 SGLang AgentX 配置更新到 0813 checkpoint 和 DSpark6,并更新 DP-attention 参数及 3.77 的黄金接受长度。
Backfill the public pull request URL in the DSV4 DSpark changelog entry.\n\n在 DSV4 DSpark changelog 条目中回填公开 pull request URL。
00695fb to
874e8a6
Compare
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=33830419034 |
1 similar comment
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=33830419034 |
|
recipe merged: sgl-project/sglang#38026 |
|
/reuse-sweep-run 33830419034 |
kedarpotdar-nv
left a comment
There was a problem hiding this comment.
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. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/33830419034
- Verified that this PR passes evals. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/33830419034
- 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 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.
Additional detail section:
- Exact-head validation and eval: https://github.com/SemiAnalysisAI/InferenceX/actions/runs/33830419034
- Authorized reuse:
/reuse-sweep-run 33830419034 - Merged upstream cookbook recipe: sgl-project/sglang#38026
- DSpark block size 6 uses the committed thinking-on golden acceptance length of 3.77.
Signed: kedarpotdar-nv
✅✅✅ Verdict: PASS ✅✅✅✅ Check 0 (CODEOWNER): PASS — |
[by Codex]
Summary / 概要
Update the B200 DeepSeek-V4-Pro SGLang AgentX configuration to the DeepSeek-V4-Pro-0813 checkpoint.
Replace native EAGLE/MTP with DSpark block size 6, one speculative step, and seven draft tokens.
Use golden synthetic acceptance length 3.77 for throughput while retaining real verification for evals.
For DP-attention, use
--enable-w4a4-mxfp4-megamoeand--enable-dp-lm-headinstead of the deprecated MegaMoE environment variables.Preserve SGLang's default behavior for prefill CUDA graphs; no breakable-prefill override is enabled.
将 B200 DeepSeek-V4-Pro SGLang AgentX 配置更新到 DeepSeek-V4-Pro-0813 checkpoint。
将原生 EAGLE/MTP 替换为 DSpark block size 6、一个 speculative step 和七个 draft token。
吞吐测试使用 3.77 的黄金合成接受长度,eval 保留真实 verification。
DP-attention 使用
--enable-w4a4-mxfp4-megamoe和--enable-dp-lm-head,替代已弃用的 MegaMoE 环境变量。保留 SGLang 对 prefill CUDA graph 的默认行为,不强制启用 breakable prefill。
Validation / 验证
Bash syntax, YAML parsing, exact-key matrix generation, public NScale launch-path checks, changelog resolution, and diff checks pass. The full sweep is intentionally not triggered yet.
Bash 语法、YAML 解析、精确 config key 的 matrix 生成、公开 NScale 启动路径、changelog 解析和 diff 检查均通过。暂不触发 full sweep。
Note
Medium Risk
Changes the speculative-decoding stack and checkpoint for a production benchmark matrix; misconfiguration could skew throughput curves or break DP-attention runs, but scope is limited to B200 AgentX SGLang jobs.
Overview
Repoints the B200 DeepSeek-V4 FP4 SGLang AgentX recipe from native EAGLE/MTP on
DeepSeek-V4-Proto DSpark block size 6 onDeepSeek-V4-Pro-0813, with one speculative step and seven draft tokens (replacing three steps and four drafts).Throughput runs now use golden synthetic acceptance length 3.77 (was 2.49); eval still uses real verification. DP-attention launches drop deprecated MegaMoE env toggles in favor of
--enable-w4a4-mxfp4-megamoeand--enable-dp-lm-head.Matrix and launch plumbing follow the new path:
nvidia-masteragentic scenarios usespec-decoding: draft_modelinstead ofmtp, NScale compat resolves the 0813 checkpoint under/scratch/models/DeepSeek-V4-Pro-0813, anddraft_modeljobs select the same*_mtpbench script suffix as before. A perf-changelog entry documents the swap.Reviewed by Cursor Bugbot for commit 874e8a6. Bugbot is set up for automated code reviews on this repo. Configure here.