Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
13 changes: 11 additions & 2 deletions configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12603,17 +12603,26 @@ minimaxm3-fp4-b300-vllm:
precision: fp4
framework: vllm
multinode: false
scenarios:
fixed-seq-len:
image: vllm/vllm-openai:nightly-93d8f834dd8acf33eb0e2a75b2711b628cb6e226
model: nvidia/MiniMax-M3-NVFP4
model-prefix: minimaxm3
runner: b300
precision: fp4
framework: vllm
multinode: false
scenarios:
fixed-seq-len:
- isl: 1024
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 @@ -4432,4 +4432,10 @@
- "Bump ATOM image from rocm/atom-dev:MiniMax-M3-20260623 to rocm/atom-dev:nightly_202607011530 for all single-node MiniMax-M3 ATOM recipes."
- "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

Check failure on line 4436 in perf-changelog.yaml

View check run for this annotation

Claude / Claude Code Review

Trailing whitespace on separator line breaks merge_with_reuse.sh canonicalize step

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`.

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_change → validate_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_links → validate_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