Add B200 DeepSeek V4.1 Flash AgentX / 新增 B200 配方 - #2960
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 关于重新运行失败任务的文档 |
4 similar comments
|
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 关于重新运行失败任务的文档 |
|
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 关于重新运行失败任务的文档 |
|
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 关于重新运行失败任务的文档 |
|
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 关于重新运行失败任务的文档 |
There was a problem hiding this comment.
Beyond the inline finding, I looked at two other candidates flagged during review and ruled them out as non-blocking: the new single-node dsv41flash HF-cache mkdir -p at runners/launch_b200-nscale-compat.sh:23 skips the chmod 777 that the existing multinode agentic path applies to the same shared directory — low risk since that path is already created with permissive perms by the pre-existing multinode flow; and the check-then-bind pattern in select_available_server_port (benchmarks/benchmark_lib.sh:44) leaves a narrow TOCTOU window between probing and the server's actual bind, which is unlikely to matter for these single-tenant benchmark runs.
Extended reasoning...
This run reported one CONFIRMED, CI-breaking finding (perf-changelog.yaml:7079 using pr-link: TBD, which fails the changelog validator's placeholder check), so approval is not appropriate and I am not claiming "no bugs found." Per the narrow exception for findings-present runs, I additionally verified two of the three previously ruled-out candidates directly against the diff: (1) the dsv41flash single-node branch in runners/launch_b200-nscale-compat.sh creates the shared HF-hub-cache directory with plain mkdir -p (line 23) while the pre-existing multinode agentic branch (lines 319-321) does mkdir -p followed by chmod 777 ... || true for the same shared path — since the path is long-lived and shared across CI runs, and multinode agentic runs against dsv41flash-adjacent models presumably already created it with permissive perms, this is unlikely to break the new single-node path in practice; and (2) select_available_server_port in benchmarks/benchmark_lib.sh probes and immediately closes the socket rather than holding it until the server binds, a real but narrow TOCTOU race that is low-impact for exclusive single-tenant Slurm benchmark jobs. Both are worth noting as examined-and-ruled-out rather than repeating the posted inline finding.
| description: | ||
| - "Add B200 TP4 AgentX through concurrency 128 with Engram UVA DRAM offload and native five-token DSpark" | ||
| - "Use deepseekv41-flash-0909 with adaptive verification and available-port selection" | ||
| pr-link: TBD |
There was a problem hiding this comment.
🔴 New changelog entry uses "pr-link: TBD", which the changelog gate (utils/validate_perf_changelog.py, wired into .github/workflows/test-changelog-gate.yml) rejects: validate_added_pr_link only accepts the exact PR URL or the literal placeholders "XXX"/".../pull/XXX", so this entry fails CI as merged. Fix: use "XXX" (or the exact pull/<PR#> URL) as the placeholder so the gate passes.
Extended reasoning...
utils/validate_perf_changelog.py:159 checks link not in PR_LINK_PLACEHOLDERS and link != expected; PR_LINK_PLACEHOLDERS (line 27-30) is exactly {"XXX", ".../pull/XXX"}. The new entry at perf-changelog.yaml:7079 sets pr-link: TBD, which matches neither, so validate_added_pr_link raises ChangelogValidationError("new PR entry must use ... or an XXX placeholder; found 'TBD'"), failing the changelog-gate CI job for this PR/any rebase check.
Verification: normal. The PR appends a new changelog entry (perf-changelog.yaml:7075-7079) whose final line is pr-link: TBD (confirmed at perf-changelog.yaml:7079). This is a fresh addition that does not exist on the base branch, so any failure it causes is introduced by this change. The value passes the pydantic ChangelogEntry model (infx/matrix/validation.py:1031 accepts pr_link as an arbitrary string),…
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=34461497160 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=34463349466 |
为 B200 单独配置 DeepSeek V4.1 Flash AgentX 扫描,启用 UVA DRAM offload 和 DSpark,并将 concurrency 扩展至 128。
补充 B200 扫描的 PR 链接。
对齐官方单节点 TP 配方的模型 runner 和调度批处理默认值,保留 UVA offload、DSpark 及 AgentX 并发扫描。
DSv4.1 Flash 吞吐测试使用 thinking 开启、五个草稿 token 对应的黄金合成 AL 3.51,关闭自适应验证;准确率评测保留真实验证。同步中英文文档并追加性能变更记录。
b190a4d to
674aed9
Compare
同步最新 main,保留性能变更日志历史字节,并在末尾保留本 PR 的变更记录。
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=34504973416 |
Resolve conflicts with the merged H200 (#2963) and GB300 (#2961) arms: keep all three master-config entries, take main's docs and MODELS_zh.md wording, keep the overridable engine-readiness default in the shared script, and append this branch's changelog entries at the tail. 将 main 合并入 B200 DSv4.1 Flash AgentX 分支,解决与已合入的 H200(#2963)和 GB300(#2961)分支的冲突:保留三个 master 配置条目,文档与 MODELS_zh.md 采用 main 的表述,共享脚本保留可覆盖的引擎就绪默认值,并将本分支的 changelog 条目追加到末尾。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=34588336656 |
|
/reuse-sweep-run 34504973416 |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 052a811. Configure here.
| export INFMAX_CONTAINER_WORKSPACE=/ix | ||
| export RESULT_DIR=/ix/results | ||
| export HF_HUB_CACHE=/hf-cache | ||
| CONTAINER_MOUNTS="$GITHUB_WORKSPACE:/ix,$HF_HUB_CACHE_HOST_PATH:/hf-cache,$AIPERF_MMAP_CACHE_HOST_PATH:/aiperf_mmap_cache" |
There was a problem hiding this comment.
Missing engine-ready timeout override
Medium Severity
The new B200 dsv41flash launch path never sets VLLM_ENGINE_READY_TIMEOUT_S, so startup stays on the one-hour default from dsv41flash_fp4_vllm_mtp.sh. The matching GB300 recipe already needed 7200 seconds for this same image, checkpoint, and TP4 capture after that deadline killed cold graph capture.
Reviewed by Cursor Bugbot for commit 052a811. Configure here.
Resolve conflicts with the merged H200 (#2963), GB300 (#2961), and B200 (#2960) arms: keep all four master-config entries, take main's docs and MODELS_zh.md wording, keep the overridable engine-readiness default in the shared script, and append this branch's changelog entries at the tail. 将 main 合并入 B300 DSv4.1 Flash AgentX 分支,解决与已合入的 H200(#2963)、 GB300(#2961)和 B200(#2960)分支的冲突:保留四个 master 配置条目,文档与 MODELS_zh.md 采用 main 的表述,共享脚本保留可覆盖的引擎就绪默认值,并将本分支的 changelog 条目追加到末尾。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Resolve conflicts with the merged H200 (#2963), GB300 (#2961), and B200 (#2960) arms: keep all four master-config entries, take main's docs and MODELS_zh.md wording, keep the overridable engine-readiness default in the shared script, and append this branch's changelog entries at the tail. 将 main 合并入 GB200 DSv4.1 Flash AgentX 分支,解决与已合入的 H200(#2963)、 GB300(#2961)和 B200(#2960)分支的冲突:保留四个 master 配置条目,文档与 MODELS_zh.md 采用 main 的表述,共享脚本保留可覆盖的引擎就绪默认值,并将本分支的 changelog 条目追加到末尾。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds a b200-nscale config entry and the matching entry point. TP4 and the image match the B200 sibling recipe from PR #2960; the compat launcher resolves dsv41flash_fp4_b200_vllm_mtp.sh and allocates --gres=gpu:$TP, so this takes half a node. Harbor concurrency 2 -> 32 and max-num-seqs 16 -> 64: concurrency was held down on H100 only because per-request latency had to stay inside the tunnel's 120s window, and B200 at TP4 has far more headroom. Modal credentials come from repo secrets via benchmark-tmpl.yml, so they are present on any runner. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The B200 run died in the compat launcher with "Unsupported model prefix/precision: dsv41flash/fp4" -- its model-path table resolves pre-staged weights under /scratch/models and has no dsv41flash entry, so it never reached salloc. Applies the same three hunks PR #2960 uses for the B200 sibling recipe: a dsv41flash branch that keeps MODEL_PATH as the HF id with a host-side hub cache, the /ix mount layout this model needs, and the srun container-mounts switch to the assembled CONTAINER_MOUNTS variable. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>


Add B200 TP4 DSv4.1 Flash AgentX at concurrency 1–128, using the full
semianalysis_cc_traces_weka_062126corpus. Five-token DSpark throughput uses golden AL 3.51 (thinking on), with adaptive verification disabled; accuracy evals retain real block verification. Engram stays in host DRAM through UVA; KV stays on GPU. Validation: Bash, exact-key matrix, changelog, launcher/eval tests, and both serving-mode command checks pass. GPU validation pending.新增 B200 TP4 DSv4.1 Flash AgentX,并发 1–128,使用完整
semianalysis_cc_traces_weka_062126语料。五 token DSpark 吞吐测试采用 thinking 开启时的黄金 AL 3.51,并关闭自适应验证;准确率 eval 保留真实块验证。Engram 通过 UVA 访问主机 DRAM,KV 保留在 GPU。验证:Bash、精确配置矩阵、changelog、launcher/eval 测试及两种服务模式的命令检查通过;GPU 验证待完成。Note
Medium Risk
Changes B200 Slurm container mounts and model resolution for a new benchmark key; scoped to dsv41flash/vLLM but affects how jobs launch on shared cluster infrastructure.
Overview
Adds
dsv41flash-fp4-b200-vllm-agentic-dsparkto the master perf matrix: single-node B200 (Nscale), vLLMdeepseekv41-flash-0909, TP4, MTP spec decoding, and agentic-coding sweeps through concurrency 1–128 with Engram on UVA host DRAM and GPU-resident KV.Introduces a thin B200 bench entry (
dsv41flash_fp4_b200_vllm_mtp.sh) that delegates to the existing DSv4.1 Flash MTP script, and documents the recipe inperf-changelog.yaml.launch_b200-nscale-compat.shis extended so single-node dsv41flash + fp4 + vLLM keeps the HuggingFace model ID asMODEL_PATH, stages weights via a sharedHF_HUB_CACHEmount (no model-ID bind mount), and uses/ixworkspace mounts like other DeepSeek v4 images. A newtest_dsv41flash_b200.pyasserts thatsrungets the expected cache and mount wiring.Reviewed by Cursor Bugbot for commit 052a811. Bugbot is set up for automated code reviews on this repo. Configure here.