Add curated-full-sweep matching dashboard chart runs (two active tabs) / 新增匹配仪表盘图表的 curated-full-sweep(两个活跃标签页)#2261
Conversation
The full sweep had no canonical invocation: a bare `full-sweep --config-files configs/nvidia-master.yaml` sweeps everything (including qwen3.5 and TensorRT), and the generator's --model-prefix/--framework/ --single-node/--multi-node filters AND together within one call, so kimi-single-node + deepseek-multi-node cannot be expressed at once. Add a `curated-full-sweep` subcommand that composes two generate_full_sweep passes into EXACTLY the target set: - kimi single-node on framework vllm - DeepSeek (dsr1/dsv4) multi-node on dynamo-vllm (vLLM), dynamo-sglang (SGLang), llmd-vllm (llm-d) - excludes dynamo-trt/trt and every qwen3.5-* config Only trimming filters (--precision/--runner-type/--seq-lens/--step-size/ --min-conc/--max-conc/--max-tp/--max-ep) are overridable so a smoke run can shrink the sweep without widening the target set. Document it in the workflows README and AGENTS.md, and add a guard test that runs the curated sweep over the real nvidia-master.yaml and asserts the exact target set (model-prefix, node type, framework; no qwen, no trt). 中文:修复全量扫描(full sweep)缺少规范调用入口的问题:直接运行 `full-sweep --config-files configs/nvidia-master.yaml` 会扫描全部配置(包括 qwen3.5 和 TensorRT),而生成器的 --model-prefix/--framework/--single-node/--multi-node 过滤器在单次调用内按 AND 组合,无法同时表达 kimi 单节点 + deepseek 多节点。 新增 `curated-full-sweep` 子命令,将两次 generate_full_sweep 组合为精确的目标集合: - kimi 单节点,框架 vllm - DeepSeek(dsr1/dsv4)多节点,运行于 dynamo-vllm(vLLM)、dynamo-sglang(SGLang)、 llmd-vllm(llm-d) - 排除 dynamo-trt/trt 及所有 qwen3.5-* 配置 仅暴露用于裁剪的过滤器(--precision/--runner-type/--seq-lens 等),便于冒烟测试缩小 扫描范围而不会扩大目标集合。已在 workflows README 和 AGENTS.md 中补充文档,并新增守卫 测试:对真实的 nvidia-master.yaml 运行 curated 扫描并断言精确目标集合(model-prefix、 节点类型、框架;无 qwen、无 trt)。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
No bugs found in the implementation, but this PR defines what the canonical production full sweep actually covers (a hardcoded model/framework/engine target set), which is a target-set decision with real GPU-spend implications — worth an explicit maintainer sign-off rather than just a code-correctness check.
What was reviewed: the two-pass composition in generate_curated_full_sweep (single-node kimi/vllm + multi-node dsr1+dsv4/dynamo-vllm+dynamo-sglang+llmd-vllm), the new subcommand's argument wiring (step-size/min-max-conc validation reused from full-sweep), and the guard test against the real nvidia-master.yaml. I also checked whether Kimi's existing multi-node dynamo-vllm/dynamo-trt configs (e.g. kimik2.5-fp4-gb200-dynamo-vllm) are covered — they are not, since neither curated pass's model-prefix/framework filter reaches them; per the PR description this exclusion is intentional (the target set is scoped to kimi single-node vLLM only), not an oversight, but it's worth the author/maintainer confirming that scope is correct.
Extended reasoning...
Overview
This PR adds a new curated-full-sweep subcommand to utils/matrix_logic/generate_sweep_configs.py that composes two generate_full_sweep passes (kimi single-node on vllm; dsr1/dsv4 multi-node on dynamo-vllm/dynamo-sglang/llmd-vllm) into a fixed target set, documents it in AGENTS.md/.github/workflows/README.md as the canonical production full-sweep command, and adds a guard test that runs it against the real configs/nvidia-master.yaml. No existing generate_full_sweep logic is modified.
Security risks
None — this is CLI tooling for generating benchmark matrix configs, no auth/crypto/user-input surface.
Level of scrutiny
Code correctness here is low-risk (additive, isolated, well tested — 233+ passing tests including a new guard test against the real master config). The higher-stakes part is the target-set definition itself: this becomes the documented "canonical production full sweep" that maintainers will dispatch verbatim, so any gap in the target set silently under- or over-covers production GPU benchmarking. I confirmed the generator composition is correct for the stated target set, and that Kimi's existing multi-node dynamo-vllm/dynamo-trt configs are excluded by design per the PR description (kimi scope is single-node vllm only) rather than by a coding mistake — but this is a business/scope call, not something I can validate as "correct" from the code alone.
Other factors
The docs are appropriately exempted from the bilingual-Markdown rule (.github/ internal docs and AGENTS.md are English-only per project convention). Test coverage is strong, including a guard test asserting the exact target set against the real master config. No perf-changelog.yaml change, so this PR itself won't trigger a benchmark run.
Rescope curated-full-sweep to the union of exactly the three ClusterMAX dashboard chart scenarios (the source of truth) and nothing else: - kimik2.5 single-node on vllm - dsr1 single-node on sglang - dsv4 multi-node on dynamo-vllm + llmd-vllm Remove everything the prior version added beyond the charts: dsr1 multi-node, deepseek dynamo-sglang multi-node, and any kimi multi-node. qwen3.5, trt/dynamo-trt, and dynamo-sglang stay excluded. gptoss120b has no active master config (deprecated only) so it is left out of the generated set, documented in a code comment and the docs. Update the guard test to assert this exact set and refresh AGENTS.md and .github/workflows/README.md to match. 中文:将 curated-full-sweep 的范围重新限定为 ClusterMAX 仪表盘图表(作为 唯一事实来源)所渲染的三个场景的并集,别无其他:kimik2.5 单节点 vllm、 dsr1 单节点 sglang、dsv4 多节点 dynamo-vllm 与 llmd-vllm。移除上一版本 中超出图表范围的内容:dsr1 多节点、deepseek 的 dynamo-sglang 多节点以及 任何 kimi 多节点。继续排除 qwen3.5、trt/dynamo-trt 和 dynamo-sglang。 gptoss120b 没有有效的 master 配置(仅存在于 deprecated 目录),因此从 生成集合中剔除,并在代码注释与文档中说明。同步更新守卫测试、AGENTS.md 和 .github/workflows/README.md。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The dashboard now keeps only two active tabs, so rescope curated-full-sweep to the union of exactly two passes: - kimik2.5 single-node on vllm - dsv4 multi-node on dynamo-vllm + llmd-vllm Drop the dsr1 single-node (sglang) pass entirely. dsr1 single-node and gptoss120b single-node are deprecated tabs. This is deselection, not deletion: dsr1 configs stay in nvidia-master.yaml, perf-changelog.yaml is untouched, and no historical data or files are removed. qwen3.5, trt/dynamo-trt, and dynamo-sglang stay excluded. Update the guard test to assert the two-pass set (no dsr1, no gptoss, no qwen, no trt/dynamo-trt/dynamo-sglang) and that the excluded configs — including dsr1 single-node — still EXIST in the master config. Refresh AGENTS.md and .github/workflows/README.md. 中文:将 curated-full-sweep 收窄为仪表盘当前保留的两个活跃标签页对应的两个 pass 的并集:kimik2.5 单节点 vllm,以及 dsv4 多节点 dynamo-vllm 与 llmd-vllm。 完全移除 dsr1 单节点(sglang)pass。dsr1 单节点与 gptoss120b 单节点均为已弃用 标签页。此操作为取消选择而非删除:dsr1 配置仍保留在 nvidia-master.yaml 中, perf-changelog.yaml 未改动,未删除任何历史数据或文件。继续排除 qwen3.5、 trt/dynamo-trt 和 dynamo-sglang。更新守卫测试以断言两 pass 集合(无 dsr1、无 gptoss、无 qwen、无 trt/dynamo-trt/dynamo-sglang),并断言被排除的配置——包括 dsr1 单节点——仍存在于 master 配置中。同步更新 AGENTS.md 与 .github/workflows/README.md。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Adds a
curated-full-sweepsubcommand toutils/matrix_logic/generate_sweep_configs.pythat generates EXACTLY the model×engine×node-type combinations rendered by the ClusterMAX dashboard charts (the source of truth). The dashboard now keeps only two active tabs, so the curated sweep composes the union of exactly two passes:--single-node --model-prefix kimik2.5 --framework vllm--multi-node --model-prefix dsv4 --framework dynamo-vllm llmd-vllm— the chart's dsv4 multi-node is vLLM-only;llmd-vllmemits vllm-prefixed metrics so it renders as vLLM.The
full-sweepfilters (--model-prefix/--framework/--single-node/--multi-node) combine with AND within a single invocation, so these distinct chart scenarios cannot be expressed in onefull-sweepcall, and a barefull-sweep --config-files configs/nvidia-master.yamlsweeps everything (including qwen3.5 and TensorRT).Excluded:
dynamo-sglang,dynamo-trt/trt, and everyqwen3.5-*config.Deprecated / deselected tabs (no longer in the curated sweep):
dsr1single-node (SGLang) — deprecated tab, removed from the harness sweep.gptoss120bsingle-node — deprecated, and it has NO active master config (onlyconfigs/deprecated/) so it cannot be swept fromnvidia-master.yamlanyway.Only trimming filters are overridable (
--precision,--runner-type,--seq-lens,--step-size,--min-conc,--max-conc,--max-tp,--max-ep); model/framework/node-type are fixed by the curated target set.Data safety — no historical data or config history deleted
This PR only narrows the curated selection. It does NOT delete or rewrite any historical data or config entries:
perf-changelog.yaml— unchanged (no history entries removed, no whitespace touched).configs/nvidia-master.yaml/configs/amd-master.yaml— unchanged; every master-config entry (including dsr1 single-node, qwen3.5,dynamo-sglang,dynamo-trt, and other non-chart configs) is kept intact so other workflows/one-offs can still dispatch them.Deselected configs (dsr1 single-node included) simply stop being selected by
curated-full-sweep— they no longer run in the curated sweep, but they still exist. The guard testtest_master_config_actually_contains_excluded_configsasserts these excluded configs (including dsr1 single-node sglang) are still present in the master config, proving they were deselected, not deleted.Files changed
utils/matrix_logic/generate_sweep_configs.py—curated-full-sweepsubcommand,generate_curated_full_sweep(),CURATED_SWEEP_PASSES(two passes),_curated_pass_args(), main() routing/validation.utils/matrix_logic/test_generate_sweep_configs.py— guard testTestCuratedFullSweepTargetSetrunning the curated sweep over the realnvidia-master.yaml, asserting the exact set (prefixes ⊆ {kimik2.5, dsv4}; kimik2.5 = SN/vllm; dsv4 = MN/{dynamo-vllm, llmd-vllm}; no dsr1, no qwen, no gptoss, no trt/dynamo-trt/dynamo-sglang) and that excluded configs (incl. dsr1 single-node) still exist in master..github/workflows/README.md,AGENTS.md— documented the two chart-scoped passes, plus the deprecated dsr1/gptoss note.Testing
pytest utils/matrix_logic/ -q→ 235 passed.curated-full-sweep --config-files configs/nvidia-master.yaml --no-evals→ 225 entries = kimik2.5/vllm SN (188) + dsv4/dynamo-vllm MN (32) + dsv4/llmd-vllm MN (5); no dsr1/qwen/gptoss/trt/dynamo-trt/dynamo-sglang.perf-changelog.yamlintentionally NOT modified (avoids triggering real runs).Sweep label
No sweep label applied (intentional — would trigger real GPU runs). A maintainer should add
full-sweep-fail-fastto validate.中文说明
为
utils/matrix_logic/generate_sweep_configs.py新增curated-full-sweep子命令,生成的配置恰好是 ClusterMAX 仪表盘图表(唯一事实来源)所渲染的组合。仪表盘当前仅保留两个活跃标签页,因此 curated 扫描组合恰好两个 pass 的并集:--single-node --model-prefix kimik2.5 --framework vllm--multi-node --model-prefix dsv4 --framework dynamo-vllm llmd-vllm(图表中 dsv4 多节点仅为 vLLM;llmd-vllm发出 vllm 前缀指标,因此渲染为 vLLM)排除:
dynamo-sglang、dynamo-trt/trt以及所有qwen3.5-*配置。已弃用/取消选择的标签页(不再纳入 curated 扫描):
dsr1单节点(SGLang)为已弃用标签页,已从 harness 扫描移除;gptoss120b单节点已弃用,且无有效 master 配置(仅存在于configs/deprecated/),本就无法从nvidia-master.yaml扫描。数据安全 —— 未删除任何历史数据或配置历史。 本 PR 仅收窄 curated 选择范围,不删除、不改写任何历史数据或配置条目:
perf-changelog.yaml未改动;configs/nvidia-master.yaml/configs/amd-master.yaml未改动,所有 master 配置条目(包括 dsr1 单节点、qwen3.5、dynamo-sglang、dynamo-trt等)均保持完整,其他工作流/一次性任务仍可调度;未删除任何结果产物或存储输出,零文件删除。被取消选择的配置(包括 dsr1 单节点)只是不再被curated-full-sweep选中——它们不再参与 curated 扫描,但依然存在。守卫测试test_master_config_actually_contains_excluded_configs断言这些被排除的配置(含 dsr1 单节点 sglang)仍存在于 master 配置中,证明它们是被取消选择而非被删除。测试:
pytest utils/matrix_logic/ -q→ 235 通过;手动运行得到 225 条配置,符合预期集合,无 dsr1/qwen/gptoss/trt/dynamo-trt/dynamo-sglang。未修改perf-changelog.yaml。扫描标签: 未添加扫描标签(有意为之,否则会触发真实 GPU 运行)。维护者应添加
full-sweep-fail-fast进行验证。🤖 Generated with Claude Code