Repository navigation
refactor(matrix): select srt-slurm recipes with srt-recipe-dir and srt-recipe - #3805
Merged
Merged
Conversation
Contributor
|
Thanks for the contribution!
中文感谢你的贡献!
|
functionstackx
added this pull request to stack #3808
October 7, 2026 23:24
This was referenced Oct 8, 2026
Merged
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
from
October 8, 2026 16:03
8f3711f to
9a7eaac
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
from
October 9, 2026 11:39
cfd3774 to
64531c2
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
2 times, most recently
from
October 9, 2026 18:48
64e3ce2 to
f087de3
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
from
October 9, 2026 23:43
f087de3 to
4bc066b
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
from
October 10, 2026 07:51
4bc066b to
5b19744
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
from
October 10, 2026 13:38
5b19744 to
24ffea4
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
2 times, most recently
from
October 12, 2026 10:22
1aa95c3 to
e0d611b
Compare
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
2 times, most recently
from
October 14, 2026 01:08
a67c441 to
c764335
Compare
…t-recipe Master configs name each row's recipe with srt-recipe (and eval-srt-recipe) relative to a per-entry srt-recipe-dir instead of CONFIG_FILE and EVAL_CONFIG_FILE additional-settings. Validation requires them on every srt-slurm row, checks the file and selected variant exist at load time, and rejects the old settings; llmd-vllm entries keep CONFIG_FILE. The generator emits project-relative paths, counts nodes from the row's recipe, and the launcher reads SRT_RECIPE/EVAL_SRT_RECIPE, staging the same recipes/<path>:<selector> argument for srtctl. Also drops the unread SYNTHETIC_ACCEPTANCE* and SLURM_PARTITION settings.
Master rows now select bundle variants with srt-recipe, so the recipe headers no longer describe how to pick one.
Recipe existence, selector checks and recipe node counts read files from the project that holds the loaded configs/ (or the root a caller passes) instead of the tooling checkout's repository_root(). The generator CLI and planner pass config_root(config files), Klaud live families pass the checkout root, and Klaud's canonical matrix fetches the candidate's recipes from the candidate head.
Master configs now name an srt-recipe resolved under the project that holds configs/, so the fixture places its master in configs/ beside a recipe.
…ipe-dir srt-recipe paths, which validation rejects now that every srt-slurm entry needs srt-recipe-dir. The entry sets srt-recipe-dir and its rows select agentic.yaml; the generated rows are unchanged.
…GB300 AgentX recipes #3598 added the GB300 Dynamo+SGLang recipes with headers that say to select a variant with CONFIG_FILE. Master rows select them with srt-recipe now, so the headers stop at the variant layout like the other AgentX bundles.
Set an AgentX row's srt-recipe fields once after the topology branch, and fetch each recipe file a Klaud family references once rather than once per row.
The installed-package test no longer checks recipe node counts, which take an explicit root since srt-recipe and so no longer exercise caller-repository resolution. Drop unused monkeypatch fixtures and a history comment.
Show srt-recipe in the CONFIGS.md search-space example, shorten its selection note, name srt-slurm recipes in the revision snapshot description, and shorten the debug-runs recipe path.
The low-latency row named disagg-tp8-stp-variants.yaml without a selector, so one job submitted all three zip variants under a 4-node, 1-decode-worker label. Each variant now runs only the concurrencies it is tuned for, with its selector and its 7 TP8 decode workers on 16 nodes: zip_override_lowlat[0] (c8) at 4 and 8, zip_override_lowlat[1] (c16-32) at 16. zip_override_lowlat[2] is tuned for concurrency 64, which the entry never ran, so it has no row.
…h srt-recipe-dir #3816 and #3840 added qwen3.8next-fp4-gb300-sglang-agentic-mtp and the Qwen3.5 FP8 GB300 midcurve entries with a project-relative srt-recipe path and CONFIG_FILE settings, which validation rejects now that every srt-slurm entry needs srt-recipe-dir. The entries set srt-recipe-dir and their rows select the same recipes and DEP16 overrides; the generated rows are unchanged.
A recipe that fails to parse raised a raw yaml.YAMLError out of validate_master_config, so Klaud's canonical_matrix crashed on a malformed candidate recipe instead of rejecting it like other bad srt-recipe references. It now raises the same ValueError, naming the recipe file.
…cipe-dir #2594 added qwen3.5-fp4-gb200-dynamo-sglang-mtp with CONFIG_FILE settings, which validation rejects now that every srt-slurm entry needs srt-recipe-dir. The entry sets srt-recipe-dir and each row selects the same recipe; the generated rows are unchanged.
adibarra
force-pushed
the
refactor/srt-recipe-key
branch
from
October 14, 2026 02:09
c764335 to
f0e0645
Compare
nvpohanh
added a commit
that referenced
this pull request
Oct 14, 2026
Conflicts: inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/dsv41flash/sglang/gb300-fp4/agentx/disagg-variants.yaml inferencex-e2e/configs/nvidia-master.yaml inferencex-e2e/perf-changelog.yaml Port this PR's changes to main's recipe layout (#3805, #3818, #3824): - disagg-variants.yaml: keep this PR's overrides; drop their benchmark.env.CONC, which the master row's conc-list now sets. - nvidia-master.yaml: the five new rows select their override with srt-recipe instead of a CONFIG_FILE additional setting. - perf-changelog.yaml: keep main's entries and append this PR's entry after them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nvpohanh
added a commit
that referenced
this pull request
Oct 14, 2026
…agg-sglang-agentx-refresh Resolve conflicts with the srt-slurm recipe refactors on main (#3805, #3818, #3824): - configs/nvidia-master.yaml: keep this PR's TP4/EP4 and DP4 search space and image; reference the recipe as `srt-recipe: agentic.yaml` under the `srt-recipe-dir` that main added. - gb200-fp4-mtp/agentic.yaml: drop the `base.model` block, which main now composes from the master row (image, model, precision); keep this PR's engine args and per-point overrides unchanged. - perf-changelog.yaml: keep main's entries and append this PR's entry at the end. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nvpohanh
added a commit
that referenced
this pull request
Oct 14, 2026
…-sglang-agentx-tp4 Resolve the conflicts in configs/nvidia-master.yaml and perf-changelog.yaml. Main now selects srt-slurm recipes with srt-recipe-dir and srt-recipe and composes AgentX recipes from fragments (#3805, #3818), so this entry and its bundle move to that format: - The master entry sets srt-recipe-dir, and each row selects its override with srt-recipe instead of a CONFIG_FILE setting. - The bundle drops the keys the binder and launcher now write: the model block, the identity repo and image, the client command, benchmark.concurrencies, RESULT_DIR, IS_MULTINODE, ENABLE_AGENTX_POWER, AIPERF_DATASET_MMAP_CACHE_DIR and HF_HUB_CACHE. It also drops the unread INFMAX_CONTAINER_WORKSPACE and PORT. No serving setting changes: engine args and env, frontend, Dynamo, services and Slurm options bind exactly as the PR's sweep submitted them. The perf-changelog entry stays appended at the end of the file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ankur-singh
added a commit
that referenced
this pull request
Oct 14, 2026
…cipe Main now requires srt-recipe-dir on srt-slurm configs (#3805). Move the CONFIG_FILE additional-settings to row-level srt-recipe selectors; recipe files and selectors are unchanged.
Ankur-singh
added a commit
that referenced
this pull request
Oct 14, 2026
…o-SGLang AgentX 配方 (#2978) * feat(config): add Qwen3.5 B300 Dynamo-SGLang AgentX recipes 添加 Qwen3.5 NVFP4 B300 Dynamo-SGLang AgentX 配置和配方,并校验合成接受长度与已提交的黄金曲线一致。 * chore(changelog): link Qwen3.5 B300 PR #2978 在性能变更日志中补充 Qwen3.5 B300 PR #2978 链接。 * fix(config): extend Qwen3.5 AgentX Slurm limits 延长 Qwen3.5 AgentX 配方的 Slurm 时间限制。 * fix: remove temporary cache environment overrides 移除 Qwen3.5 B300 AgentX 配方中指向 /tmp 的缓存环境变量设置。 * feat(agentx): move Qwen3.5 B300 SGLang AgentX to nightly-dev-20261013-7224fce1 - Bump the four recipes and the master entry to lmsysorg/sglang:nightly-dev-20261013-7224fce1 and rename the recipe variants to match. - Drop SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE so the NextN draft layer is served at its shipped precision. - Replace aliases this image removed: cuda-graph-max-bs becomes cuda-graph-max-bs-decode (the old spelling is now an ambiguous prefix), and SGLANG_DISABLE_TP_MEMORY_INBALANCE_CHECK=1 becomes SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0. - Drop settings with no effect in this image: environment variables it no longer reads (SGLANG_ENABLE_SPEC_V2, SGLANG_ENABLE_FLASHINFER_GEMM, SGLANG_FLASHINFER_FP4_GEMM_BACKEND, SGLANG_CUTEDSL_MOE_NVFP4_DISPATCH), false booleans srt-slurm never passes (including the deprecated enable-dp-attention), and settings whose readers these TP-only aggregate workers never reach (DP-attention scheduler gathers, Mooncake and NVSHMEM variables, load-balance-method, moe-dense-tp-size, and hicache-io-backend: kernel, which page_first_direct rewrites to direct). - Drop the recipe-level cpus-per-task directive, which conflicts with the b300-dsxe cpus-per-gpu default, and run the AgentX client from benchmarks/srt_agentic.sh. 将 Qwen3.5 B300 SGLang AgentX 迁移到 nightly-dev-20261013-7224fce1: - 将四个配方与主配置条目升级到 lmsysorg/sglang:nightly-dev-20261013-7224fce1,并相应重命名配方变体。 - 移除 SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE,使 NextN 草稿层以发布时的精度运行。 - 替换该镜像已移除的别名:cuda-graph-max-bs 改为 cuda-graph-max-bs-decode (旧写法现在是有歧义的前缀),SGLANG_DISABLE_TP_MEMORY_INBALANCE_CHECK=1 改为 SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0。 - 移除在该镜像中无效的设置:不再被读取的环境变量(SGLANG_ENABLE_SPEC_V2、 SGLANG_ENABLE_FLASHINFER_GEMM、SGLANG_FLASHINFER_FP4_GEMM_BACKEND、 SGLANG_CUTEDSL_MOE_NVFP4_DISPATCH),srt-slurm 从不传递的 false 布尔参数 (包括已弃用的 enable-dp-attention),以及这些仅 TP 的聚合 worker 不会 触达的设置(DP 注意力调度器 gather、Mooncake 与 NVSHMEM 变量、 load-balance-method、moe-dense-tp-size,以及会被 page_first_direct 改写为 direct 的 hicache-io-backend: kernel)。 - 移除与 b300-dsxe 默认 cpus-per-gpu 冲突的配方级 cpus-per-task 指令,并改为 通过 benchmarks/srt_agentic.sh 运行 AgentX 客户端。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agentx): use the default ReplaySSM cache length for Qwen3.5 B300 TP2/EP2 On lmsysorg/sglang:nightly-dev-20261013-7224fce1 the GDN ReplaySSM spec-verify commit kernel (gdn_replayssm_compact_commit_kernel) contracts over the replay window in tl.dot, which Triton requires to be at least 16. With linear-replayssm-cache-len: 8 the TP2/EP2 worker fails to compile that kernel at its first verify ("Input shapes should have M >= 1, N >= 1 and K >= 16"). Drop the override so the point uses the default length of 16, as the other recipes already do, and note it in the changelog entry. 在 lmsysorg/sglang:nightly-dev-20261013-7224fce1 中,GDN ReplaySSM 投机验证 提交 kernel(gdn_replayssm_compact_commit_kernel)在 tl.dot 中对回放窗口做 归约,而 Triton 要求该维度至少为 16。设置 linear-replayssm-cache-len: 8 时, TP2/EP2 worker 在首次验证时无法编译该 kernel("Input shapes should have M >= 1, N >= 1 and K >= 16")。移除该覆盖项,使该测试点与其他配方一样使用默认 长度 16,并在变更日志条目中加以说明。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * config: migrate qwen3.5 B300 agentic entry to srt-recipe-dir / srt-recipe Main now requires srt-recipe-dir on srt-slurm configs (#3805). Move the CONFIG_FILE additional-settings to row-level srt-recipe selectors; recipe files and selectors are unchanged. * chore: refresh PR #2978 for sweep reuse [skip-sweep] * recipes: drop launcher-bound fields from qwen3.5 B300 agentic fragments model.path/container/precision, identity.model.repo, identity.container.image and RESULT_DIR/HF_HUB_CACHE/AIPERF_DATASET_MMAP_CACHE_DIR/IS_MULTINODE are set by the launcher or workflow; main's fragment check rejects them (#3818). * chore: refresh PR #2978 for sweep reuse [skip-sweep] --------- Co-authored-by: Ankur-singh <ankusingh@nvidia.com> Co-authored-by: Po-Han Huang <pohanh@nvidia.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Ankur-singh
added a commit
that referenced
this pull request
Oct 14, 2026
Resolve conflicts by keeping the PR's DSpark recipes and master-config rows and applying main's recipe-fragment migration (#3805, #3818, #3820): srt-recipe-dir with row-level srt-recipe, launcher-bound fields dropped, @fabric references for RDMA devices. disagg-1p4d-dep4-tp8-c4-mtp.yaml stays deleted per the PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Multi-node master rows named their recipe through
additional-settings: CONFIG_FILE=recipes/...yaml:override_xon the prefill or worker block. Recipe references are now first-class for every srt-slurm config, single- and multi-node:srt-recipe-dirper config key, relative to the single- or multi-node recipe root. Each row hassrt-recipe: <file>[:selector]and optionaleval-srt-recipe. Selectors arebase,override_<name>orzip_override_<name>[i].CONFIG_FILE/EVAL_CONFIG_FILEinadditional-settings, except onllmd-vllmconfigs, whose scripts still readCONFIG_FILE.benchmarks/<single|multi>_node/srt-slurm-recipes/<dir>/<file>[:selector]) and reads node counts from it. The old CONFIG_FILE scan and the silent fallback for missing recipe files are gone.benchmark-multinode-tmpl.ymlexportsSRT_RECIPE/EVAL_SRT_RECIPE. A newMultiNodeRequestreads them, and a single helper maps the canonical path to therecipes/...:selectorpath srtctl receives. Power-rule globs use the canonical form.CONFIG_FILEand 5EVAL_CONFIG_FILEitems became row fields, every config key gotsrt-recipe-dir, and single-node paths became relative. Also deleted dead settings:SYNTHETIC_ACCEPTANCE*(6 rows, unread) andSLURM_PARTITION(12 rows, overwritten from the cluster record).CONFIG_FILEheader comments in 30 bundles.RECIPES.md,CONFIGS.md,architecture.md,eval-agentx-procedures.md,nuke.md,add-model-hardware.mdand the debug-runs skill.Verification
full-sweepover both masters is identical to the base once oldCONFIG_FILE/EVAL_CONFIG_FILEvalues are mapped to the new fields and the removed dead settings are dropped. That holds for the default (1767 rows) and--all-evals(1797), includingnode-countandexp-name.recipes/...:selectorpath as before. A new fake-Slurm test covers a bundle variant.pytest infx/testspasses all 2065 tests, and ruff is clean.recipe-fingerprintchanges once for every point, because the row shape changed. This is expected.dsr1-fp8-gb200-dynamo-sglanglow-latency row: main pointed atdisagg-tp8-stp-variants.yamlwith no selector, so srtctl ran all threezip_override_lowlatvariants at conc [4, 8, 16]. The launcher now binds exactly one variant, so the row is split by the variants' concurrency ranges:zip_override_lowlat[0](c8) at conc [4, 8] andzip_override_lowlat[1](c16-32) at conc [16]. Variant [2] (tuned for c64) is dropped, since the row runs no conc in its range.