Skip to content
Open
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
4 changes: 2 additions & 2 deletions configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12609,11 +12609,11 @@ minimaxm3-fp4-b300-vllm:
osl: 1024
search-space:
- { tp: 8, conc-start: 1, conc-end: 2 }
- { tp: 4, conc-start: 1, conc-end: 2 }
- { tp: 4, conc-start: 1, conc-end: 64 }
- { tp: 2, conc-start: 4, conc-end: 256 }
- { tp: 4, conc-start: 64, conc-end: 64 }
- { tp: 4, ep: 4, conc-start: 64, conc-end: 512 }
- { tp: 2, ep: 2, dp-attn: true, conc-start: 512, conc-end: 512 }
- { tp: 2, ep: 2, dp-attn: true, conc-start: 4096, conc-end: 4096 }
- isl: 8192
osl: 1024
search-space:
Expand Down
6 changes: 6 additions & 0 deletions perf-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4433,3 +4433,9 @@
- "Add --online_quant_config with ptpc_fp8 and MoE layer exclusions (*block_sparse_moe) to all scripts."
- "Replace deprecated AITER_QUICK_REDUCE_CAST_BF16_TO_FP16=0 and ATOM_M3_SPARSE_USE_ASM_PA=1 with ATOM_FORCE_ATTN_TRITON=1."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2001

Comment on lines 4435 to +4436

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 new perf-changelog entry uses a separator line with two trailing spaces ( \n) at line 4436 instead of a truly-empty line. This will abort utils/merge_with_reuse.sh at the prepare_perf_changelog_merge.py canonicalize step with ChangelogValidationError: new changelog entries must be separated from history by one empty line and appended at the end. Strip the two trailing spaces on line 4436 so the separator is just \n.

Extended reasoning...

What's wrong

Between the previous entry (ending at line 4435 with pull/2001) and the new entry (starting at line 4437 with - config-keys:), the separator on line 4436 is \n (two spaces then newline) instead of a truly-empty line \n. Every other separator between entries in this file (e.g. lines 4403, 4411, 4418, 4425) is a bare empty line — this new one is the odd one out.

Why PR-time CI does not catch this

PR CI runs utils/validate_perf_changelog.py (see .github/workflows/run-sweep.yml:102), whose CLI main() routes to validate_matrix_compatible_changevalidate_generated_config only. That path checks for a final newline and that process_changelog.py accepts the file, but it does not call validate_raw_change — so raw-byte-level whitespace rules are not enforced at PR time. The byte-level check is a deliberate merge-time-only concern.

Why merge-time fails

utils/merge_with_reuse.sh (the documented reuse-assisted merge path — see .github/workflows/README.md:185 and codeowner-signoff-verify.yml:281,371) invokes prepare_perf_changelog_merge.py canonicalize at lines 181-186. That in turn calls canonicalize_appended_linksvalidate_raw_change (prepare_perf_changelog_merge.py:97). In validate_raw_change (utils/validate_perf_changelog.py:211-235), because base_raw ends with pull/2001\n (single newline, not \n\n), expected_start is set to b"\n- config-keys:". The check suffix.startswith(expected_start) then fails and raises ChangelogValidationError('new changelog entries must be separated from history by one empty line and appended at the end'). merge_with_reuse.sh runs under set -euo pipefail with no error handler on this call, so the non-zero exit aborts the merge.

Step-by-step proof

  1. base_raw (from origin/main / 1f234a6) ends with the bytes ...pull/2001\n — verified via od. Base does NOT end with \n\n.
  2. head_raw at that offset continues with the bytes \n- config-keys:\n - minimaxm3-fp4-b300-vllm\n... — the (two spaces) come from the trailing whitespace on line 4436.
  3. In validate_raw_change, since base_raw.endswith(b'\n\n') is False, expected_start = b'\n- config-keys:'.
  4. suffix = head_raw[len(base_raw):] — this suffix starts with b' \n- config-keys:'.
  5. suffix.startswith(b'\n- config-keys:')False (suffix starts with two spaces, not a newline).
  6. Raises ChangelogValidationError with the message quoted above.
  7. prepare_perf_changelog_merge.py returns exit code 1; under set -euo pipefail merge_with_reuse.sh aborts before push.

Empirically reproduced by running canonicalize_appended_links(base_raw, head_raw, 1994, 'SemiAnalysisAI/InferenceX') on the current bytes — it raises the exact error.

Impact

Blocks the standard supported merge path. This is distinct from the earlier inline comment on this PR (which flagged the missing 1994 PR number and missing trailing newline — both since fixed on head); the trailing-space separator remains.

Fix

Delete the two trailing spaces on line 4436 so the separator is a truly-empty line (\n only).

- config-keys:
- minimaxm3-fp4-b300-vllm
description:
- "Add high concurrency configs"
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1994