Skip to content

[Bugfix][ROCm] Stop running shared experts on the aux stream - #52010

Closed
stefankoncarevic wants to merge 2 commits into
vllm-project:mainfrom
stefankoncarevic:rocm-disable-shared-experts-overlap
Closed

stefankoncarevic wants to merge 2 commits into
vllm-project:mainfrom
stefankoncarevic:rocm-disable-shared-experts-overlap

Conversation

@stefankoncarevic

@stefankoncarevic stefankoncarevic commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Purpose

LM Eval Qwen3-5 Models on MI355 fails on Qwen3.5-35B-A3B-DEP2:

FAILED evals/gsm8k/test_gsm8k_correctness.py::test_gsm8k_correctness[Qwen3.5-35B-A3B-DEP2]
AssertionError: GSM8K metric too low: 0.0182 < 0.8400 - 0.0300 = 0.8100

Bisect over the window in which the job turned red lands on 47ececb,
"[Perf][ROCm] Dual-stream decode with hipgraphs" (#48223).

That commit widened the shared-expert multi-stream overlap from
current_platform.is_cuda() to is_cuda_alike(), gated on dp_size > 1, so
the shared experts run on the aux stream on ROCm for the first time. The output
is corrupted there: the server comes up clean and then answers with unparsable
runs of tokens. dp_size > 1 is also why only this config broke — the other two
Qwen3.5 models in the same job run TP2 and never take the path.

This is a workaround, not a fix. It turns the overlap off on ROCm, restoring
the behaviour every ROCm deployment had before #48223, and leaves CUDA
untouched. The new path itself still needs to be repaired, and I am happy to
help with that; what is known so far:

  • It needs concurrency. A single greedy request answers correctly.
  • It is not tied to capturing the whole decode step: cudagraph_mode=PIECEWISE
    still fails.
  • It cannot be observed from Python, since graph replay bypasses that path, and
    instrumentation serialises enough to hide it.

Test Plan

gfx950 (MI355X), 2 GPUs, the failing job as CI runs it, unmodified config and
full question set:

pytest -s -v evals/gsm8k/test_gsm8k_correctness.py \
  --config-list-file=configs/models-qwen35-mi355.txt

Run on current main and again with this change.

Test Result

Before, on current main: Qwen3.5-35B-A3B-DEP2 fails, accuracy 0.0000 with an
invalid rate of 0.705.

After, same config and the full 1319 questions:

GSM8K Results for Qwen/Qwen3.5-35B-A3B:
  Measured metric: 0.8613
  Expected metric: 0.8400
  Tolerance: 0.0300
  Questions: 1319
  Invalid rate: 0.000
✅ GSM8K test passed for Qwen/Qwen3.5-35B-A3B

Essential Elements of an Effective PR Description Checklist
  • The purpose of the PR, such as "Fix some issue (link existing issues this PR will resolve)".
  • The test plan, such as providing test command.
  • The test results, such as pasting the results comparison before and after, or e2e results
  • (Optional) The necessary documentation update, such as updating supported_models.md and examples for a new model.

vllm-project#48223 widened the shared-expert multi-stream overlap from
is_cuda() to is_cuda_alike() under dp_size > 1, so the shared experts run on the
aux stream on ROCm for the first time. Output is corrupted there:
Qwen3.5-35B-A3B at DP2 + EP on gfx950 scores 0.00 on GSM8K with 70% of the
answers unparsable. That is also why only this config broke, since the other two
Qwen3.5 models in the same job run TP2 and never take the path.

This is a workaround rather than a fix. The root cause in the new path is not
isolated yet: it needs concurrency, it is not the BLAS backend and not tied to
full decode graphs, and graph replay bypasses the Python path so the failing
case cannot be instrumented. Turn the overlap off on ROCm meanwhile, restoring
the behaviour every ROCm deployment had before vllm-project#48223. CUDA is
untouched.

GSM8K on gfx950 at DP2 + EP, 1319 questions: 0.0000 to 0.8613, invalid rate
0.705 to 0.000.

Signed-off-by: Stefan Koncarevic <Stefan.Koncarevic@amd.com>

@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 rocm Related to AMD ROCm bug Something isn't working labels Aug 12, 2026
@github-project-automation github-project-automation Bot moved this to Todo in AMD Aug 12, 2026
@simondanielsson

Copy link
Copy Markdown
Contributor

FYI: #52024

@AndreasKaratzas

Copy link
Copy Markdown
Member

we are going to close this one in favor of the revert.

@github-project-automation github-project-automation Bot moved this from Todo to Done in AMD Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working rocm Related to AMD ROCm

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants