Skip to content

[CI][xlite] Match xlite backend with the current main and add e2e MoE model test coverage - #12246

Closed
SijieFu wants to merge 4 commits into
vllm-project:mainfrom
SijieFu:fix/xlite-main2main
Closed

[CI][xlite] Match xlite backend with the current main and add e2e MoE model test coverage#12246
SijieFu wants to merge 4 commits into
vllm-project:mainfrom
SijieFu:fix/xlite-main2main

Conversation

@SijieFu

@SijieFu SijieFu commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it?

This PR brings the xlite backend in line with the current main and vllm==0.24.0, refactors xlite model adapter/docking with its backend implementation, re-enables and adds e2e coverage for the xlite graph mode, and bumps the pinned xlite dependency to the latest dev release.

Refer to PR #12019 for the context.

More specifically,

  1. The earliest commit completes the main2main update for xlite;
  2. The second commit refactors xlite model adapters to remove duplicated model weight extraction;
  3. The third commit adds a two-card e2e test coverage using an MoE model, to catch future main2main discrepancies;
  4. The last commit bumps the xlite package to its latest dev vesion.

Does this PR introduce any user-facing change?

No.

How was this patch tested?

e2e test

The following tests were run locally on Atlas A3 and passed:

python tests/e2e/pull_request/one_card/test_xlite.py
python tests/e2e/pull_request/two_card/test_xlite.py

main2main update + refactoring

We benchmarked model accuracies with multiple models using aisbench. The batch_aisbench.py script was used with 208 questions from the ceval dataset:

# on one Atlas A3
python batch_aisbench.py "/root/benchmark" \
--num-prompts 4 \
--model-dir "/mnt/sdb/models" \
--models "Qwen3-32B-w8a8-nopdmix" "Qwen3-30B-A3B" "Qwen3-VL-32B-Instruct" "MiniMax-M2.7-w8a8-QuaRot" "GLM-4.7-W8A8-floatmtp" \
--tps 2 2 2 4 8 \
--dps 1 1 1 1 1 \
--eps 0 1 0 1 1 \
-MNS 32 \
-MML 8192 \
--xlite 2 1 0 \
--broadcast-xlite

For most models, no accuracy regression was observed, except:

  1. Qwen3-VL-32B-Instruct served with xlite decode-only mode showed degraded accuracy - upon further investigation, the model's outputs contained random texts for certain questions, likely a previously existing issue (e.g., PR [BugFix][xlite] Performance improvement in xlite full mode by avoiding redundant memory allocation during profiling runs #11380).
  2. MiniMax-M2.7-w8a8-QuaRot served with xlite decode-only + aclgraph for prefill and aclgraph threw an AttributionError during serving, likely not related to xlite since xlite full mode worked correctly.
Model Dataset TP EP DP Backend Metric Accuracy Error
Qwen3-32B-w8a8-nopdmix ceval-weighted 2 N 1 xlite full weighted_average 88.78
Qwen3-32B-w8a8-nopdmix ceval-weighted 2 N 1 xlite decode-only weighted_average 88.63
Qwen3-32B-w8a8-nopdmix ceval-weighted 2 N 1 aclgraph weighted_average 87.09
Model Dataset TP EP DP Backend Metric Accuracy Error
Qwen3-30B-A3B ceval-weighted 2 Y 1 xlite full weighted_average 87.74
Qwen3-30B-A3B ceval-weighted 2 Y 1 xlite decode-only weighted_average 85.68
Qwen3-30B-A3B ceval-weighted 2 Y 1 aclgraph weighted_average 86.13
Model Dataset TP EP DP Backend Metric Accuracy Error
Qwen3-VL-32B-Instruct ceval-weighted 2 N 1 xlite full weighted_average 85.46
Qwen3-VL-32B-Instruct ceval-weighted 2 N 1 xlite decode-only weighted_average 77.84
Qwen3-VL-32B-Instruct ceval-weighted 2 N 1 aclgraph weighted_average 88.52
Model Dataset TP EP DP Backend Metric Accuracy Error
MiniMax-M2.7-w8a8-QuaRot ceval-weighted 4 Y 1 xlite full weighted_average 84.16
MiniMax-M2.7-w8a8-QuaRot ceval-weighted 4 Y 1 xlite decode-only weighted_average 0.00 AttributeError: 'AscendMoERunner' object has no attribute 'maybe_all_reduce_tensor_model_parallel'
MiniMax-M2.7-w8a8-QuaRot ceval-weighted 4 Y 1 aclgraph weighted_average 0.00 AttributeError: 'AscendMoERunner' object has no attribute 'maybe_all_reduce_tensor_model_parallel'
Model Dataset TP EP DP Backend Metric Accuracy Error
GLM-4.7-W8A8-floatmtp ceval-weighted 8 Y 1 xlite full weighted_average 87.41
GLM-4.7-W8A8-floatmtp ceval-weighted 8 Y 1 xlite decode-only weighted_average 87.82
GLM-4.7-W8A8-floatmtp ceval-weighted 8 Y 1 aclgraph weighted_average 87.74

SijieFu added 4 commits July 17, 2026 14:43
…h the current main with vllm==0.24.0

Signed-off-by: Sijie Fu <fusijie@huawei.com>
…rdXliteModel`

Signed-off-by: Sijie Fu <fusijie@huawei.com>
Signed-off-by: Sijie Fu <fusijie@huawei.com>
@github-actions

Copy link
Copy Markdown
Contributor

👋 Hi! Thank you for contributing to the vLLM Ascend project. The following points will speed up your PR merge:‌‌

  • A PR should do only one thing, smaller PRs enable faster reviews.
  • Every PR should include unit tests and end-to-end tests ‌to ensure it works and is not broken by other future PRs.
  • Write the commit message by fulfilling the PR description to help reviewer and future developers understand.

If CI fails, you can run linting and testing checks locally according Contributing and Testing.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request aligns the xlite backend with the latest main branch and vLLM version. It introduces a significant refactoring of the model adapter hierarchy, centralizing weight loading logic to improve maintainability. Additionally, the PR expands test coverage by adding new e2e tests for MoE models and updating existing test configurations to ensure stability across different hardware setups.

Highlights

  • Backend Synchronization and Dependency Update: Synchronized the xlite backend with the current main branch and vLLM 0.24.0, and bumped the xlite dependency to 0.1.0rc12.dev210.
  • Adapter Architecture Refactoring: Consolidated model adapter logic into a new StandardXliteModel base class to reduce code duplication and streamline weight extraction.
  • Enhanced Test Coverage: Added e2e test coverage for MoE models on two NPU cards and updated existing test markers to improve CI reliability.
New Features

🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/scripts/test_config.yaml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

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.

Code Review

Suggested PR Title:

[Ops][Misc] Refactor Xlite model adapters and add MoE multi-card tests

Suggested PR Summary:

### What this PR does / why we need it?
This pull request refactors the xlite integration by consolidating MoE adapter weight-loading logic into a unified StandardXliteModel base class, upgrading the xlite dependency, and adding two-card MoE e2e tests. However, the refactoring introduces critical bugs where conditionally assigned attributes (mha_q_norm, mha_k_norm, and mha_qkv_bias) are accessed immediately after the condition block, which will raise AttributeError crashes when the conditions are not met.

### Does this PR introduce _any_ user-facing change?
No.

### How was this patch tested?
Tested with updated single-card and new two-card e2e tests for MoE serving.

Comment thread vllm_ascend/xlite/xlite.py
Comment thread vllm_ascend/xlite/xlite.py
@SijieFu SijieFu closed this Jul 17, 2026
@SijieFu
SijieFu deleted the fix/xlite-main2main branch July 20, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant