Skip to content
Closed
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
5 changes: 4 additions & 1 deletion benchmarks/single_node/fixed_seq_len/kimik2.5_fp4_mi355x.sh
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,10 @@ $EP \
--block-size=1 \
--no-enable-prefix-caching \
--trust-remote-code \
--no-enable-prefix-caching \
--compilation_config.pass_config.fuse_norm_quant true \
--compilation_config.pass_config.fuse_act_quant true \
--compilation_config.pass_config.fuse_allreduce_rms true \

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.

🟡 WARNING: This is the first ROCm enablement of fuse_allreduce_rms in this repo — and the only other AMD reference, kimik2.5_int4_mi355x.sh:46 on the same MI355X SKU, explicitly disables it (--compilation-config '{"pass_config": {"fuse_allreduce_rms": false}}'). The sibling scripts cited in the PR description (kimik2.5_fp4_b300.sh, kimik2.5_int4_b200.sh, agentic int4_h200, etc.) are all NVIDIA.
Why it matters: If the int4 script's opt-out was working around a ROCm crash/accuracy/perf issue with the fused allreduce+RMSNorm path, this flag could regress rather than help — especially combined with VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4 (line 49), whose quantized custom all-reduce may not compose with the fused collective op. Note also that fuse_norm_quant, fuse_act_quant, and fuse_mla_dual_rms_norm have no prior usage anywhere in this repo; if any name is invalid in the vllm/vllm-openai-rocm:v0.24.0 image, PassConfig validation rejects it and the server fails to start.
Fix: The planned CI sweep + eval run (already in your test plan) covers this — please also confirm with the int4 script's author why fuse_allreduce_rms was disabled there before merging, and check the server log shows the passes actually fired (fusion counts in the compile logs) rather than silently no-op'ing.

--compilation_config.pass_config.fuse_mla_dual_rms_norm true \
Comment on lines +77 to +80

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.

🔴 BLOCKING: Missing perf-changelog.yaml entry for a perf-affecting recipe change.
Why it matters: Per AGENTS.md, perf-changelog.yaml is what triggers benchmark runs for a config after merge. Without an entry, kimik2.5-fp4-mi355x-vllm won't be re-benchmarked on main and the dashboard keeps the pre-fusion numbers. Every comparable change to this config (e.g. the v0.22.0→v0.24.0 image bump in #2074, the concurrency-sweep changes in #1674/#1677) shipped with an entry.
Fix: Append (never insert mid-file, preserve whitespace) to the end of perf-changelog.yaml:

- config-keys:
    - kimik2.5-fp4-mi355x-vllm
  description:
    - "Enable vLLM compile-time fusion passes: fuse_norm_quant, fuse_act_quant, fuse_allreduce_rms, fuse_mla_dual_rms_norm"
  pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2264

@jiacao-amd jiacao-amd Jul 18, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

--mm-encoder-tp-mode data > $SERVER_LOG 2>&1 &

SERVER_PID=$!
Comment on lines 74 to 83

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.

🟡 PR #2264's title and description are English-only, violating AGENTS.md's mandatory bilingual convention (title must be <English title> / <中文标题>, and the body must include a ## 中文说明 section mirroring the summary).

Extended reasoning...

AGENTS.md line 7 states, in mandatory language: "PR and GitHub-issue titles & descriptions must be bilingual — include a Simplified Chinese version in addition to English. Title format: <English title> / <中文标题>. In the PR/issue body, follow the English content with its Chinese translation (e.g. a ## 中文说明 section mirroring the summary)..." It goes on to say "This applies to every PR and every issue."

This PR's title is only perf(kimik2.5-fp4-mi355x): enable vLLM compile-time fusion passes — there is no / <中文标题> suffix. Likewise, the body contains Summary / Motivation / Status / Test plan sections entirely in English, with no accompanying ## 中文说明 (or equivalent) Chinese section.

Step-by-step verification:

  1. Read AGENTS.md line 7 in this repo's checkout — it explicitly mandates bilingual titles/descriptions for every PR, with a concrete title format and a suggested ## 中文说明 body section.
  2. Read the PR perf(kimik2.5-fp4-mi355x): enable vLLM compile-time fusion passes / 为 kimik2.5-fp4-mi355x-vllm 启用 vLLM 编译期融合 pass #2264 metadata provided in context — the title has no Chinese portion, and none of the four description sections (Summary, Motivation, Status, Test plan) have a Chinese counterpart.
  3. Compare against the rule's only stated exceptions (CODEOWNER sign-off template, bot-generated comments) — neither applies to a PR author's own title/description.
  4. Conclusion: the PR as submitted violates the checked-in bilingual convention.

This is not a subjective style nit invented by the reviewer — it is a literal, checked-in repository rule (AGENTS.md, loaded via CLAUDE.md) using 'must' language and covering titles, descriptions, and even PR comments. Existing repo tooling (e.g. the CODEOWNER sign-off bot comment on this very PR) already posts bilingual English/Chinese text, showing the convention is actively enforced elsewhere in the repo's workflow, even though there's no automated CI gate for the PR title/body itself.

Fix: rename the PR title to perf(kimik2.5-fp4-mi355x): enable vLLM compile-time fusion passes / 启用 vLLM 编译期融合优化 (or similar), and append a ## 中文说明 section to the description mirroring the Summary/Motivation/Status/Test plan content in Simplified Chinese.

Why nit and not normal: this has zero effect on the benchmark script's correctness or runtime behavior — nothing breaks, no incorrect results, no crash. It's a documentation/process compliance gap that's trivial to fix by editing the PR title and body, so it doesn't justify blocking merge, but per the repo's explicit convention it should still be raised rather than silently ignored.

@jiacao-amd jiacao-amd Jul 18, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Expand Down
8 changes: 8 additions & 0 deletions perf-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4933,3 +4933,11 @@
description:
- "Add MiniMax M3 NVFP4 B300 Dynamo-vLLM disaggregated EAGLE3 recipes"
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2182

- config-keys:
- kimik2.5-fp4-mi355x-vllm
description:
- 'Add vLLM compile-time fusion passes to benchmarks/single_node/fixed_seq_len/kimik2.5_fp4_mi355x.sh: --compilation_config.pass_config.{fuse_norm_quant,fuse_act_quant,fuse_allreduce_rms,fuse_mla_dual_rms_norm}=true (script previously set no --compilation_config)'
- "Motivated by two-trace torch-profiler triage: all-reduce ran fully serial (hid=0%) and residual-add+RMSNorm / RMSNorm+Quant families were un-collapsed"
- "Also removes a duplicate --no-enable-prefix-caching flag"
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2264
Loading