Skip to content

Add curated-full-sweep matching dashboard chart runs (two active tabs) / 新增匹配仪表盘图表的 curated-full-sweep(两个活跃标签页)#2261

Open
JordanNanos wants to merge 3 commits into
mainfrom
fix/full-sweep-kimi-deepseek-no-qwen
Open

Add curated-full-sweep matching dashboard chart runs (two active tabs) / 新增匹配仪表盘图表的 curated-full-sweep(两个活跃标签页)#2261
JordanNanos wants to merge 3 commits into
mainfrom
fix/full-sweep-kimi-deepseek-no-qwen

Conversation

@JordanNanos

@JordanNanos JordanNanos commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a curated-full-sweep subcommand to utils/matrix_logic/generate_sweep_configs.py that 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:

  1. --single-node --model-prefix kimik2.5 --framework vllm
  2. --multi-node --model-prefix dsv4 --framework dynamo-vllm llmd-vllm — the chart's dsv4 multi-node is vLLM-only; llmd-vllm emits vllm-prefixed metrics so it renders as vLLM.

The full-sweep filters (--model-prefix/--framework/--single-node/--multi-node) combine with AND within a single invocation, so these distinct chart scenarios cannot be expressed in one full-sweep call, and a bare full-sweep --config-files configs/nvidia-master.yaml sweeps everything (including qwen3.5 and TensorRT).

Excluded: dynamo-sglang, dynamo-trt/trt, and every qwen3.5-* config.

Deprecated / deselected tabs (no longer in the curated sweep):

  • dsr1 single-node (SGLang) — deprecated tab, removed from the harness sweep.
  • gptoss120b single-node — deprecated, and it has NO active master config (only configs/deprecated/) so it cannot be swept from nvidia-master.yaml anyway.

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.
  • No result artifacts or stored benchmark outputs removed; zero file deletions.

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 test test_master_config_actually_contains_excluded_configs asserts 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.pycurated-full-sweep subcommand, generate_curated_full_sweep(), CURATED_SWEEP_PASSES (two passes), _curated_pass_args(), main() routing/validation.
  • utils/matrix_logic/test_generate_sweep_configs.py — guard test TestCuratedFullSweepTargetSet running the curated sweep over the real nvidia-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.
  • Manual: 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.yaml intentionally 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-fast to validate.

中文说明

utils/matrix_logic/generate_sweep_configs.py 新增 curated-full-sweep 子命令,生成的配置恰好是 ClusterMAX 仪表盘图表(唯一事实来源)所渲染的组合。仪表盘当前仅保留两个活跃标签页,因此 curated 扫描组合恰好两个 pass 的并集:

  1. --single-node --model-prefix kimik2.5 --framework vllm
  2. --multi-node --model-prefix dsv4 --framework dynamo-vllm llmd-vllm(图表中 dsv4 多节点仅为 vLLM;llmd-vllm 发出 vllm 前缀指标,因此渲染为 vLLM)

排除: dynamo-sglangdynamo-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-sglangdynamo-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

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>

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@JordanNanos JordanNanos changed the title Fix full sweep harness: kimi single-node + DeepSeek multi-node, no qwen/TRT / 修复全量扫描:kimi 单节点 + DeepSeek 多节点,排除 qwen/TRT Add curated-full-sweep matching dashboard chart runs / 新增匹配仪表盘图表的 curated-full-sweep Jul 17, 2026
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>
@JordanNanos JordanNanos changed the title Add curated-full-sweep matching dashboard chart runs / 新增匹配仪表盘图表的 curated-full-sweep Add curated-full-sweep matching dashboard chart runs (two active tabs) / 新增匹配仪表盘图表的 curated-full-sweep(两个活跃标签页) Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant