Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/debug-runs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ Steps:
the canvas, then SSH in with `ssh -A` when a jumpbox or agent forwarding is involved.
2. Reproduce the exact benchmark the launcher runs. Single-node jobs go through the srt driver
of `python -m infx.launch run` (`inferencex-e2e/infx/launch/drivers/srt/`): it binds the
master row's `srt-recipe:` (`inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/<model>/<engine>/<sku>-<precision>[-mtp]/<scenario>.yaml`)
matrix row's `srt-recipe` (`inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/<srt-recipe-dir>/<srt-recipe>`)
with `python -m infx.srt_slurm.single_node prepare`, renders the job-local `srtslurm.yaml`
from the cluster's record, then submits it through srtctl. Read the recipe for the image
(`model.container`), server args and env, and the cluster record for mounts and the job env
Expand Down
3 changes: 2 additions & 1 deletion .claude/commands/add-model-hardware.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ This research directly feeds Step 2 (recipe args/env) and Step 3 (search space).
1. `inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/<model-prefix>/<engine>/<sku>-<precision>[-mtp]/8k1k.yaml`
(an `agentic.yaml` beside it for AgentX)
2. an entry in either master config, **`inferencex-e2e/configs/nvidia-master.yaml`** (b*/h*/gb* SKUs) or
**`inferencex-e2e/configs/amd-master.yaml`** (mi* SKUs), with `srt-recipe:` on every search-space row
**`inferencex-e2e/configs/amd-master.yaml`** (mi* SKUs), with `srt-recipe-dir:` (the directory above,
relative to `srt-slurm-recipes/`) on the entry and `srt-recipe:` (the file name) on every search-space row
3. a `inferencex-e2e/perf-changelog.yaml` entry (this diff vs main is what selects the sweep)

## Step 1 — branch + find the sibling to copy
Expand Down
17 changes: 10 additions & 7 deletions .claude/commands/nuke.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,18 +113,22 @@ recipe each master search-space row names in `srt-recipe:`, and
# Usage: edit_recipe_container.py <master_yaml> <new_image> <key1> [key2 ...]
import os, re, sys
f, new_image, keys = sys.argv[1], sys.argv[2], sys.argv[3:]
# srt-recipe paths are relative to inferencex-e2e/, the parent of configs/
root = os.path.dirname(os.path.dirname(os.path.abspath(f)))
# srt-recipe names a file under the key's srt-recipe-dir, below this root
root = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(f))), "benchmarks/single_node/srt-slurm-recipes")
master = open(f).read().split('\n')
recipes = set()
for key in keys:
kre = re.compile(r'^' + re.escape(key) + r':\s*$')
start = next((i for i,l in enumerate(master) if kre.match(l)), None)
if start is None: sys.exit(f"ERROR: key not found: {key}")
directory, names = None, set()
for j in range(start+1, len(master)):
if re.match(r'^[A-Za-z0-9._-]+:\s*$', master[j]): break # next top-level key
recipes.update(re.findall(r'srt-recipe:\s*([^\s,}]+)', master[j]))
if not recipes: sys.exit(f"ERROR: no srt-recipe for keys {keys}")
d = re.match(r'^\s+srt-recipe-dir:\s*(\S+)\s*$', master[j])
if d: directory = d.group(1)
names.update(re.findall(r'(?<![\w-])srt-recipe:\s*([^\s,}:]+)', master[j]))
if directory is None or not names: sys.exit(f"ERROR: no srt-recipe-dir/srt-recipe for key {key}")
recipes.update(os.path.join(directory, n) for n in names)
for r in sorted(os.path.join(root, x) for x in recipes):
lines = open(r).read().split('\n')
in_model, hit = False, False
Expand All @@ -139,9 +143,8 @@ for r in sorted(os.path.join(root, x) for x in recipes):
open(r, 'w').write('\n'.join(lines))
```

If `grep -rn '<recipe path>' inferencex-e2e/configs/*-master.yaml` shows a recipe is also
referenced by a key outside this family, stop and ask the user: bumping it would
break that other key's `model.container == image` check.
If another key's `srt-recipe-dir` plus `srt-recipe` resolves to the same recipe file, stop and ask the user:
bumping it would break that other key's `model.container == image` check.

For each family, run strictly sequentially because git checkouts can't be parallel:

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/benchmark-multinode-tmpl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ env:
HF_TOKEN: ${{ secrets.INFERENCEX_OFFICIAL_RO_HF_TOKEN }}
EXP_NAME: ${{ fromJSON(inputs.config).exp-name }}
RECIPE_FINGERPRINT: ${{ fromJSON(inputs.config)['recipe-fingerprint'] || '' }}
SRT_RECIPE: ${{ fromJSON(inputs.config)['srt-recipe'] || '' }}
EVAL_SRT_RECIPE: ${{ fromJSON(inputs.config)['eval-srt-recipe'] || '' }}
IMAGE: ${{ fromJSON(inputs.config).image }}
THINKING_MODE: thinking_on
MODEL_PREFIX: ${{ fromJSON(inputs.config).model-prefix }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ qwen3.5/trtllm/gb300-fp4/agentx/disagg-variants.yaml
- Workloads are `1k1k`, `8k1k`, or `agentx`. Existing bundles spanning several fixed sequence lengths use `fixed-seq-len`; keep their override selectors intact.
- Use lowercase, hyphen-separated filenames beginning with `agg` or `disagg`. Include topology and the settings that distinguish sibling recipes, such as parallelism, batch size, concurrency, MTP, offload, or cache configuration. Avoid dates, numbered latency/throughput labels, and repeating the model or hardware already in the path.
- In topology names, `1p4d` denotes prefill/decode worker counts, not necessarily physical nodes. Role-qualified `p-tp4` and `d-tp8` identify prefill/decode TP; `b` denotes batch size and `c` concurrency. The YAML is authoritative for runtime settings.
- Name override bundles `*-variants.yaml`. Multi-node AgentX recipes that differ only per configuration share one bundle per master-config entry, usually `agg-variants.yaml` or `disagg-variants.yaml`: `base` holds the shared settings and each former recipe becomes a named `override_<name>` block holding only its differences (plain overrides, not `zip_override_*`). Master entries select one with `CONFIG_FILE=recipes/<dir>/<bundle>.yaml:override_<name>`. Recipes read as text by a launcher, such as power recipes with top-level `telemetry:`, stay standalone. Keep distinct sweep entry files separate even when their contents match: recipe paths participate in eval grouping. The Qwen3.5 `*-stp-sweep.yaml` and `*-mtp-sweep.yaml` pair preserves that existing distinction.
- Update `CONFIG_FILE` and `EVAL_CONFIG_FILE` references in active and deprecated master configs, launcher path rules, workflow filters, and local documentation together when moving a file. Preserve upstream source URLs as provenance and leave historical performance-changelog entries unchanged. No aliases for the old layout are provided.
- Name override bundles `*-variants.yaml`. Multi-node AgentX recipes that differ only per configuration share one bundle per master-config entry, usually `agg-variants.yaml` or `disagg-variants.yaml`: `base` holds the shared settings and each former recipe becomes a named `override_<name>` block holding only its differences (plain overrides, not `zip_override_*`). Master rows select one with `srt-recipe: <bundle>.yaml:override_<name>`, relative to the entry's `srt-recipe-dir`. Recipes read as text by a launcher, such as power recipes with top-level `telemetry:`, stay standalone. Keep distinct sweep entry files separate even when their contents match: recipe paths participate in eval grouping. The Qwen3.5 `*-stp-sweep.yaml` and `*-mtp-sweep.yaml` pair preserves that existing distinction.
- Update `srt-recipe-dir`, `srt-recipe`, and `eval-srt-recipe` references in master configs, launcher path rules, workflow filters, and local documentation together when moving a file. Preserve upstream source URLs as provenance and leave historical performance-changelog entries unchanged. No aliases for the old layout are provided.

Shared runtime assets stay under `configs/` beside the model directories; they are not standalone recipes. The four files in `configs/dsv4-moe-load-balancer-configs/` are copied verbatim from NVIDIA/srt-slurm commit `deb1dfd9934398664f92d194169c183e009da83b`, preserving the EPLB initial expert assignments formerly used by the DSV4 TRT recipes; no checked-in recipe currently references them. The srt driver ([`infx/launch/drivers/srt/checkout.py`](../../../infx/launch/drivers/srt/checkout.py)) stages them into the job checkout's `configs/` directory for the recipes' bind mounts. Keeping a recipe in this tree does not activate it; the master configs determine the benchmark matrix.

Expand All @@ -41,7 +41,8 @@ Recipes use `schema: 2`, `engine`, and `roles`. Each worker role owns its node c
| `roles.prefill.args.ep-size` (SGLang) | `prefill.ep` |
| `roles.prefill.args.enable-dp-attention` | `prefill.dp-attn` |
| `benchmark.concurrencies` | `conc-list` |
| Recipe path, optionally with an override selector | `additional-settings: CONFIG_FILE=recipes/...yaml` |
| Recipe directory, relative to this tree | entry-level `srt-recipe-dir` |
| Recipe file, optionally with a `base`, `override_<name>`, or `zip_override_<name>[<index>]` selector | search-space `srt-recipe`; `eval-srt-recipe` for eval-only real verification |

Keep the recipe and master configuration synchronized. The launcher executes the recipe; the master configuration supplies result labels and scheduling metadata. For aggregate recipes use `roles.agg`; `roles.decode.nodes: colocate` shares prefill nodes and contributes no additional worker nodes to scheduling.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 sglang b200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/sglang/b200-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 sglang b200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/sglang/b200-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 sglang gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/sglang/gb300-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 sglang gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/sglang/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 trtllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/trtllm/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb200-fp4/agentx/agg-mtp-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb200-fp4/agentx/agg-mtp3-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb200-fp4/agentx/disagg-mtp-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb200-fp4/agentx/disagg-mtp3-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb300-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb300-fp4/agentx/disagg-mtp-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv4 vllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/dsv4/vllm/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX dsv41flash sglang gb300-fp4 recipes (Dynamo frontend + SGLang, AGGREGATED
# topology): shared settings in base, one override per benchmark point. Select one
# with CONFIG_FILE=recipes/dsv41flash/sglang/gb300-fp4/agentx/agg-variants.yaml:override_<name>.
# topology): shared settings in base, one override per benchmark point.
#
# One SGLang worker serves prefill and decode with the checkpoint's bundled DSpark
# draft (block size 5); the Dynamo frontend routes with the KV-aware router and
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# AgentX dsv41flash sglang gb300-fp4 recipes (Dynamo frontend + SGLang, DISAGGREGATED
# topology with Mooncake KV transfer): shared settings in base, one override per
# benchmark point. Select one with
# CONFIG_FILE=recipes/dsv41flash/sglang/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# benchmark point.
#
# Prefill and decode are separate TP2/EP2 SGLang workers (two GPUs each) behind the
# Dynamo KV router; with the DSpark draft in PD-disaggregated mode both sides must
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX glm5.2 sglang b200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/glm5.2/sglang/b200-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX glm5.2 sglang b200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/glm5.2/sglang/b200-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX glm5.2 sglang gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/glm5.2/sglang/gb200-fp4/agentx/agg-mtp-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX glm5.2 sglang gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/glm5.2/sglang/gb200-fp4/agentx/disagg-dep8-mtp-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Agentic-coding SGLang aggregated recipe for GLM-5.2-NVFP4 on GB300
# (single aggregated worker, TP8, EAGLE MTP + hierarchical-cache KV).
#
# Flat single-variant schema the agentic CI flow expects: applied via
# CONFIG_FILE=<this file> with no zip_override selector, so it must NOT be
# base:-wrapped. Concurrency is not a recipe field; the GHA matrix fans out
# Concurrency is not a recipe field; the GHA matrix fans out
# one job per concurrency from the master-config conc-list into srt_agentic.sh.
schema: 2
name: agg-tp8-c1-mtp
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX glm5.2 trtllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/glm5.2/trtllm/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX kimik3 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/kimik3/vllm/gb200-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX minimaxm3 trtllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/minimaxm3/trtllm/gb200-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX minimaxm3 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/minimaxm3/vllm/gb200-fp4/agentx/agg-nightly-native-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX minimaxm3 vllm gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/minimaxm3/vllm/gb200-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX minimaxm3 vllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/minimaxm3/vllm/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 sglang b300-fp8 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/sglang/b300-fp8/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 sglang gb200-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/sglang/gb200-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 sglang gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/sglang/gb300-fp4/agentx/agg-pareto-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 sglang gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/sglang/gb300-fp4/agentx/agg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 sglang gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-pp-pareto-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 sglang gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# AgentX qwen3.5 trtllm gb300-fp4 recipes: shared settings in base, one
# override per benchmark configuration. Select one with
# CONFIG_FILE=recipes/qwen3.5/trtllm/gb300-fp4/agentx/disagg-variants.yaml:override_<name>.
# override per benchmark configuration.

schema: 2

Expand Down
Loading
Loading