Skip to content

[ROCm] Bump AITER to v0.1.26 - #62486

Merged
ywang96 merged 6 commits into
vllm-project:mainfrom
josh-schell-amd:bump-to-aiter-v1-26-0
Oct 20, 2026
Merged

ywang96 merged 6 commits into
vllm-project:mainfrom
josh-schell-amd:bump-to-aiter-v1-26-0

Conversation

@josh-schell-amd

@josh-schell-amd josh-schell-amd commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Bump the ROCm base images to AITER v0.1.26, and fix a test bug that the bump exposed.

With only the version bump, test_aiter_fused_moe_mi350_mxfp4_w4a16_accuracy failed in this PR's CI (build 95937, step "(MI355 DPX) FP4 and INT4 MoE Kernels"). This is not a regression in v0.1.26. The test has always compared AITER's SwiGLU-OAI MoE against a SiLU reference. It only passed because of an AITER v0.1.25 dispatch bug that ran SiLU instead of SwiGLU. ROCm/aiter#6478 fixes that bug in v0.1.26, so the kernel's output is now correct and the wrong reference fails.

Claims

  • AITER_BRANCH moves from v0.1.25 to v0.1.26 in docker/Dockerfile.rocm_base and docker/Dockerfile.rocm_72_base.
  • ref_moe_forward in tests/kernels/moe/test_rocm_aiter_moe.py gains a "swigluoai" activation (alpha 1.702, clamp 7, up + 1, the same formula as CK-Tile's ck_tile::moe::Swiglu). The MI350 MXFP4 W4A16 accuracy test now uses it, so the test checks the activation it actually requests.
  • With v0.1.26 and the test fix, all three commands of the "(MI355 DPX) FP4 and INT4 MoE Kernels" step pass on gfx950 (see Validation).

Validation

All runs below used an MI355X (gfx950) with AITER v0.1.26 built from the tag.

Command v0.1.26, original test v0.1.26, with the test fix
pytest -v -s tests/kernels/moe/test_rocm_aiter_moe.py -k "mi350_mxfp4 or quant_scheme_support_matches_gfx950" 1 failed, 2 passed (accuracy: 21.39% pass, mean_abs 0.401) 3 passed (accuracy: 100% pass, max_abs 0.0126, mean_abs 0.0016)
pytest -v -s tests/kernels/moe/test_ocp_mx_moe.py::test_rocm_mxfp4_moe_oracle -k AITER_MXFP4 3 passed 3 passed
pytest -v -s tests/kernels/moe/test_flydsl_moe.py 30 passed 30 passed

The "original test" result for the first command reproduces the CI failure in build 95937, which reported 20.97% pass and mean_abs 0.412 on an MI350X.

To show which activation the kernel computes, I ran the test's exact case (32 tokens, hidden 512, inter 1024, 4 experts, top-2, seed 11) on both AITER versions. Each run used no bias (as the test does) and a zero bias. A zero bias leaves the math unchanged but selects AITER's with-bias CK-Tile kernel. Each cell is the pass rate at atol = rtol = 0.1:

AITER Bias vs SiLU reference vs SwiGLU-OAI reference
v0.1.25 none 100.00% 21.67%
v0.1.25 zero 21.39% 100.00%
v0.1.26 none 21.39% 100.00%
v0.1.26 zero 21.39% 100.00%

On v0.1.25, a SwiGLU request without bias produced SiLU output. Every other combination, including v0.1.25 with a bias, produced SwiGLU-OAI.

Model evals. These are from this PR's CI (build 95937, commit 9707fa4, AITER v0.1.26 before the test fix; the test fix does not affect evals). Every eval step passed. A model passes when its measured score is at least the expected score minus the eval's tolerance.

GPQA, :amd: (MI355) GPQA Eval (GPT-OSS), 4/4 passed:

Config Model Measured Expected
gpt-oss-20b-rocm-baseline openai/gpt-oss-20b 0.5663 0.568
gpt-oss-20b-rocm-quark-mxfp4-bf16-aiter amd/gpt-oss-20b-w-mxfp4-a-bf16 0.5745 0.568
gpt-oss-20b-rocm-quark-mxfp4-bf16-triton amd/gpt-oss-20b-w-mxfp4-a-bf16 0.5530 0.568
gpt-oss-20b-rocm-quark-mxfp4-fp8-triton amd/gpt-oss-20b-MoE-Quant-W-MXFP4-A-FP8-KV-FP8 0.5562 0.568
GSM8K, `:amd: (MI355 DPX) LM Eval Small Models` (10 passed, 2 skipped) and `:amd: (MI300) LM Eval Small Models` (6 passed, 2 skipped)
Config MI355 MI300 Expected
Qwen3-0.6B-FP8 0.3935 0.3821 0.375
Llama-3.2-1B-Instruct-INT8-CT 0.3108 0.3108 0.31
Llama-3-8B-Instruct-nonuniform-CT 0.7407 0.7339 0.74
Qwen2.5-VL-3B-Instruct-FP8-dynamic 0.6202 0.6262 0.60
Qwen1.5-MoE-W4A16-CT 0.4610 0.4481 0.45
DeepSeek-V2-Lite-Instruct-FP8 0.7900 0.7779 0.72
Qwen3-1.7B-MXFP4 0.2745 — 0.27
Qwen3-30B-A3B-NVFP4 0.8772 — 0.89
Laguna-XS.2-NVFP4 0.9022 — 0.90
Laguna-XS-2.1-INT4 0.9151 — 0.90

Qwen3-30B-A3B-MXFP4A16 and gemma-4-E4B-it-qat-mobile-ct are skipped on ROCm on both GPUs. The last four configs are only in the MI355 list.

Details

Root cause. CK-Tile's moe_dispatch selects a kernel by (activation, has_bias, split_k), and has_bias comes from whether a bias tensor is passed. In AITER ≤ v0.1.25, gen_instances.py built SwiGLU kernels only with has_bias=true. A SwiGLU call with no bias therefore reached moe_gemm1_heuristic_dispatcher<..., Swiglu, false, ...>, which had no specialization. Its primary template is static MoeKernel dispatch(...) {}, an empty body with no return, which is undefined behavior. In practice it ran a SiLU kernel. The test calls rocm_aiter_fused_experts with MoEActivation.SWIGLUOAI and no bias, so it was scored against that SiLU result and matched. ROCm/aiter#6478, which is in v0.1.26, generates the missing no-bias SwiGLU kernel and makes the unspecialized dispatcher throw. The kernel now computes gpt-oss SwiGLU, so the test's SiLU reference fails.

Impact on real models. gpt-oss checkpoints have expert biases, so they take the with-bias kernel, which computed SwiGLU on v0.1.25 as well (zero-bias row above). Any caller that used SwiGLU without bias on AITER ≤ v0.1.25 was silently getting SiLU. This PR fixes that path for them.

Why the test fix is in this PR. The corrected reference fails on v0.1.25 (no-bias row above), so it has to land together with the bump.

Duplicate check. No open vLLM PR references this test or AITER v0.1.26 (gh pr list --search "mi350_mxfp4_w4a16" and --search "aiter v0.1.26"). On the AITER side, #6478 and #6620 are both already in v0.1.26, and neither changes this test's no-bias path.


Pull Request Checklist
  • I used vLLM's /pr-checklist skill. (Mandatory for agents, optional for humans).

  • AI assistance was used during the creation of this PR.

  • Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.

  • Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.

  • Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.

  • Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.

AI assistance (Claude Code) was used to find the root cause and draft the test fix and this description. I reviewed every changed line and ran the tests above on MI355X hardware.

BEFORE SUBMITTING, PLEASE READ https://docs.vllm.ai/en/latest/contributing (anything written below this line will be removed by GitHub Actions)

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@mergify mergify Bot added ci/build rocm Related to AMD ROCm labels Oct 19, 2026
@github-project-automation github-project-automation Bot moved this to Todo in AMD Oct 19, 2026
@micah-wil micah-wil added the ready ONLY add when PR is ready to merge/full CI is needed label Oct 19, 2026
@github-actions

Copy link
Copy Markdown

✅ @josh-schell-amd, CI is now available for this PR.

  • /ci run starts upstream CI; /amd-ci run starts AMD CI only.
  • Run commands test your branch with every commit currently on its upstream target branch. If it is behind, the bot merges the target branch into it first (pull before pushing again). Append --allow-stale to a run command to test an outdated branch as is, at your own risk.
  • /ci retry retries failed jobs in the CI build for the current PR head. If the current head has no CI build, it starts a new CI build for the current head containing only jobs that failed in the latest earlier CI build for this PR.
  • /amd-ci retry retries failed jobs in AMD CI for the current PR head. Use /amd-ci run when the current head has no AMD CI build.
  • /ci cancel cancels scheduled or running CI builds for this PR branch; /amd-ci cancel does the same for AMD CI only.

@josh-schell-amd

Copy link
Copy Markdown
Contributor Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #95930 for commit eff099348490.

ℹ️ This PR is 5 commits behind upstream main. Merged upstream main into this branch as eff099348490 before starting CI. Pull the branch before pushing more changes.

@micah-wil

Copy link
Copy Markdown
Collaborator

/ci run all --allow-stale

@github-actions

Copy link
Copy Markdown

✅ CI is already running for this commit: https://buildkite.com/vllm/ci/builds/95930

@micah-wil

Copy link
Copy Markdown
Collaborator

/ci cancel

@github-actions

Copy link
Copy Markdown

✅ Requested cancellation of 1 CI build for bump-to-aiter-v1-26-0: #95930.

@micah-wil

Copy link
Copy Markdown
Collaborator

/ci run all

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #95937 for commit 9707fa442561.

josh-schell-amd and others added 3 commits October 19, 2026 22:35
Signed-off-by: josh schell <josh.schell@amd.com>
Signed-off-by: josh schell <josh.schell@amd.com>
…curacy test

The test runs rocm_aiter_fused_experts with SWIGLUOAI and no bias but
scored it against a silu(gate) * up reference. It only passed because
AITER <= v0.1.25 had no CK-Tile instance for SwiGLU without bias and
dispatched to a SiLU kernel instead. AITER v0.1.26 (ROCm/aiter#6478)
adds the missing instance, so the kernel now computes gpt-oss SwiGLU and
the silu reference no longer matches.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: josh schell <josh.schell@amd.com>
@josh-schell-amd

Copy link
Copy Markdown
Contributor Author

/ci run all

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #96064 for commit 4784d8e787ad.

@micah-wil

Copy link
Copy Markdown
Collaborator

/ci retry

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #96201 for commit 4e37eab7d5a6, running 8 failed step(s) from Buildkite CI #96064.

@micah-wil

Copy link
Copy Markdown
Collaborator

/amd-ci run all

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite AMD CI #15056 for commit 4e37eab7d5a6.

@micah-wil

Copy link
Copy Markdown
Collaborator

/ci retry

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #96256 for commit 8c72ad36a000, running 2 failed step(s) from Buildkite CI #96201.

@micah-wil

Copy link
Copy Markdown
Collaborator

/ci retry

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #96274 for commit 5cfa2937de2b, running 2 failed step(s) from Buildkite CI #96256.

@micah-wil micah-wil left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM. Failing CUDA test is unrelated and present on main

@ywang96
ywang96 merged commit b1ab16c into vllm-project:main Oct 20, 2026
14 of 16 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in AMD Oct 20, 2026
@micah-wil micah-wil changed the title [ROCm] Bump AITER to v1.26.0 [ROCm] Bump AITER to v0.1.26 Oct 20, 2026
AndreasKaratzas added a commit to AndreasKaratzas/vllm that referenced this pull request Oct 21, 2026
Conflict: docker/Dockerfile.rocm_72_base (modify/delete). Main's vllm-project#62486
bumps AITER to v0.1.26 in both base Dockerfiles; this branch removes the
ROCm 7.2 stack, so the file stays deleted. The same bump in the ROCm 10
docker/Dockerfile.rocm_base, and its test change, merged cleanly.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andreas Karatzas <AndreasKaratzas@users.noreply.github.com>
bantianyue pushed a commit to bantianyue/vllm that referenced this pull request Oct 28, 2026
Signed-off-by: josh schell <josh.schell@amd.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Micah Williamson <micah.williamson@amd.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/build ready ONLY add when PR is ready to merge/full CI is needed rocm Related to AMD ROCm

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants