Skip to content
Merged
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
3 changes: 2 additions & 1 deletion .github/workflows/run-sweep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@
model-prefix: ${{ matrix.config.model-prefix }}
framework: ${{ matrix.config.framework }}
precision: ${{ matrix.config.precision }}
conc-list: ${{ toJson(matrix.config.conc) }}
conc-list: '[${{ matrix.config.conc }}]'

Check warning on line 539 in .github/workflows/run-sweep.yml

View check run for this annotation

Claude / Claude Code Review

Revert restores broken conc-list format for multi_node agentic sweeps

The revert restores a known-broken `conc-list` format at run-sweep.yml:539/554 for the `sweep-multi-node-agentic` job that #2127 had explicitly fixed. `matrix.config.conc` is a list for multi_node agentic entries (utils/matrix_logic/generate_sweep_configs.py:670 assigns `Fields.CONC.value: conc_batch`), so `conc-list: '[${{ matrix.config.conc }}]'` produces malformed JSON that fails downstream `fromJson` in benchmark-multinode-tmpl.yml:154 — the sister workflow e2e-tests.yml:227/242 already uses

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.

🟡 The revert restores a known-broken conc-list format at run-sweep.yml:539/554 for the sweep-multi-node-agentic job that #2127 had explicitly fixed. matrix.config.conc is a list for multi_node agentic entries (utils/matrix_logic/generate_sweep_configs.py:670 assigns Fields.CONC.value: conc_batch), so conc-list: '[${{ matrix.config.conc }}]' produces malformed JSON that fails downstream fromJson in benchmark-multinode-tmpl.yml:154 — the sister workflow e2e-tests.yml:227/242 already uses the correct toJson(matrix.config.conc) + matrix.config.conc[0] pattern. Currently dormant (no perf-changelog entry references a multi_node agentic config), so this doesn't block the revert, but consider preserving the two-line workflow fix out of the revert scope since it's orthogonal to the #2155 engine-patch policy motivating the revert.

Extended reasoning...

What the bug is

PR #2127 (commit 0bd3fa4) bundled a workflow fix alongside the AMD agentic recipe: it changed .github/workflows/run-sweep.yml:539 from conc-list: '[${{ matrix.config.conc }}]'conc-list: ${{ toJson(matrix.config.conc) }} and removed the paired conc: ${{ matrix.config.conc }} at line 554. This revert restores those two broken lines verbatim.

Why the restored pattern is broken

  1. matrix.config.conc is a list for multi_node agentic entries. In utils/matrix_logic/generate_sweep_configs.py:670, Fields.CONC.value is set to conc_batch, which comes from chunk_multinode_agentic_concurrencies() (lines 128-131) — this function slices conc_values into sublists and returns list[list[int]]. So every matrix element gets .conc as a JSON array like [32] or [4096].

  2. The downstream template requires a valid JSON array string. .github/workflows/benchmark-multinode-tmpl.yml:154 does CONC_LIST: ${{ join(fromJson(inputs.conc-list), ' ') }} — this needs inputs.conc-list to be parsable JSON of a flat array of scalars. Interpolating a list expression inside literal brackets ('[${{ [32] }}]') either produces nested '[[32]]' or GitHub Actions' Array stringification — neither works with fromJson.

  3. The sister workflow already has the correct pattern. .github/workflows/e2e-tests.yml:227 uses conc-list: ${{ toJson(matrix.config.conc) }} and line 242 uses conc: ${{ matrix.config.conc[0] }} (extracting the scalar via [0]) for the identical input shape. Post-revert, run-sweep.yml and e2e-tests.yml are inconsistent for the same matrix shape.

Step-by-step proof of the failure mode

Take dsv4-fp4-gb300-dynamo-vllm-agentic (defined in configs/nvidia-master.yaml:12520 with multinode: true and agentic-coding scenario) and imagine a future changelog entry referencing it:

  1. generate_sweep_configs.py calls chunk_multinode_agentic_concurrencies([32, 64])[[32], [64]].
  2. Each matrix element ends up with config.conc = [32] or [64] (a list).
  3. sweep-multi-node-agentic job evaluates '[${{ matrix.config.conc }}]' — GHA stringifies the array, yielding malformed content (nested '[[32]]' or the literal token Array).
  4. benchmark-multinode-tmpl.yml:154 runs fromJson(inputs.conc-list) on the malformed string — parse error, job fails immediately.

Why this is dormant on this PR

The revert also removes dsv4-fp4-mi355x-sglang-disagg-agentic-hicache from perf-changelog.yaml and configs/amd-master.yaml, which was the only recent changelog entry exercising the sweep-multi-node-agentic job. grep confirms no other perf-changelog entry currently references any multi_node agentic config, so the broken code path is not triggered by this PR's own CI.

However, configs/nvidia-master.yaml still defines multi_node agentic configs (dsv4-fp4-gb300-dynamo-vllm-agentic line 12520, dsv4-fp4-gb200-dynamo-vllm-agentic-3p2d-tep8-tp8 line 14119). The next PR that adds any of these to perf-changelog.yaml will silently hit the broken fromJson path.

Fix

Preserve the two-line workflow fix out of the revert scope. The full delta is trivial and orthogonal to the inference-engine-patch policy (#2155) motivating this revert:

  • Line 539: conc-list: '[${{ matrix.config.conc }}]'conc-list: ${{ toJson(matrix.config.conc) }}
  • Line 554: delete the conc: ${{ matrix.config.conc }} line (the multi-node template doesn't consume a scalar conc input for agentic runs when conc-list is provided).

Severity: nit

Dormant on this PR — nothing currently drives the broken code path. But the regression undoes a validated bug fix that was bundled into #2127, and the fix is a 2-line diff completely unrelated to the engine-patch policy scope of this revert. Worth surfacing so the author can decide whether to preserve the workflow fix or file a fast follow-up.

spec-decoding: ${{ matrix.config.spec-decoding }}
disagg: ${{ matrix.config.disagg }}
prefill-hardware: ${{ matrix.config.prefill.hardware }}
Expand All @@ -551,6 +551,7 @@
decode-ep: ${{ matrix.config.decode.ep }}
decode-dp-attn: ${{ matrix.config.decode.dp-attn }}
decode-additional-settings: ${{ toJson(matrix.config.decode.additional-settings) }}
conc: ${{ matrix.config.conc }}
kv-offloading: ${{ matrix.config.kv-offloading }}
kv-offload-backend: ${{ matrix.config.kv-offload-backend }}
duration: ${{ matrix.config.duration }}
Expand Down
172 changes: 0 additions & 172 deletions benchmarks/multi_node/agentic/dsv4_fp4_mi355x_sglang-disagg.sh

This file was deleted.

Loading