Skip to content

[CI] main2mainv0.24 - #11875

Closed
zhao-stack wants to merge 16 commits into
vllm-project:mainfrom
zhao-stack:m2m-024
Closed

[CI] main2mainv0.24#11875
zhao-stack wants to merge 16 commits into
vllm-project:mainfrom
zhao-stack:m2m-024

Conversation

@zhao-stack

@zhao-stack zhao-stack commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Upgrade the release lane to vLLM v0.24.0 while keeping the verified main lane and the Transformers version inherited from PR #11709 unchanged.

PR #11709 has landed on main as squash commit 5083d8844310831258f085ea6dfcac4a2f76ef58. This branch is rebased onto the latest vllm-ascend/main and contains the twelve v0.24-specific commits plus one focused follow-up that removes fixed-tag compatibility from Model Runner V2.

The previous full branch is backed up at zhao-stack:m2m-024-full-backup-20260714 (db5a50f46a9126280250fac31c3803d8e8d50f99).

Scope

This PR handles only the main2main v0.24 tag upgrade.

  • The v0.23 compatibility-removal commit dc700d5cfb93900d374b89ba84afcb8de8420445 is not included.
  • None of the post-dc700 EPLB, async-scheduling, 310P cleanup, or CPU-test-isolation commits are included.
  • The temporary selected-test “continue after failure” changes were dropped.
  • The hidden-states synchronization is inherited from merged PR [CI]main2main 0710 #11709 and is not duplicated.
  • Deleting general v0.23 compatibility is deferred to a separate PR.
  • Model Runner V2 is intentionally supported only on the verified vLLM main commit; fixed release tags use the V1 runner.

Baselines

The 47-commit PR #11709 prefix and its merged squash commit have the same stable patch-id, so the rebase skips that already-merged prefix and replays only the twelve v0.24 commits.

For the exact vLLM comparison:

  • merge base of e558 and v0.24.0: 6c427dd40141870b9076c9a9f128eec3a7ce86bc
  • raw range count: 698 / 18
  • patch-effective range count: 686 / 6

The prior v0.24 adaptation node ba22152096b2484faa3579624a253d54804d876d is an ancestor of e558, but the formal v0.24.0 tag is a divergent release line; this PR adapts the formal tag rather than treating it as a linear bump.

Tag compatibility changes

All maintained V1/shared tag-main API branches use vllm_version_is; no vLLM-version decision is based on symbol lookup, hasattr, getattr, find_spec, try-import, or signature inspection.

The v0.24-specific changes cover:

  • version matching for installations such as 0.24.0+empty;
  • DFlash model-mask interfaces;
  • KV-cache admission and CPU-offload token-budget arguments;
  • HunyuanVL bundled-processor compatibility;
  • V1 DeepSeekV2 hidden-size, block-table, and cudagraph interfaces;
  • speculative decoding / DSpark availability in maintained V1/shared paths;
  • weight-transfer constructors and lifecycle methods;
  • DeepSeekV4 parser selection;
  • GPT-OSS and DSpark test boundaries that depend on post-tag upstream fixes.

Model Runner V2 boundary

Model Runner V2 is not yet maintained against fixed upstream release tags.

  • vllm_ascend/worker/v2/** and vllm_ascend/patch/worker/patch_v2/** now match the verified-main implementation and contain no fixed-tag version branches.
  • On vLLM v0.23.0 and v0.24.0, the worker patch registry does not import main-only MRV2 patches.
  • If MRV2 is requested on those release tags, the worker falls back to V1.
  • MRV2 E2E cases are skipped on the release-tag lane and remain enabled on the verified-main lane.

HunyuanVL audit

The v0.24.0 tag still contains the bundled HunyuanVL processor modules and does not contain vLLM #47872 or #47867. The e558 main pin has the native-processor migration but predates the complete #47867 cleanup boundary. Therefore the downstream compatibility patch remains required while Transformers stays at 5.13.0.

Validation

  • remote head: 5a6fe595cd2da4a2641010e1eba1ae59fb27d2d6
  • rebase base: 58bed4041347723c0a34ef239e847768c7df0dc8
  • exact comparison against current main: 13 commits ahead, 0 behind
  • final tree: 45ef2e813cb0394637c1d99beb586f685ed9cf2b
  • original twelve rebased commits remain unchanged; 5a6fe595 is the isolated MRV2 scope correction
  • final PR scope: 27 files, including 26 Python files
  • Ruff check: passed for all 26 changed Python files
  • Ruff format check: passed for all 26 changed Python files
  • git diff --check: passed
  • conflict-marker scan: passed
  • all thirteen commits contain matching Signed-off-by trailers
  • no .agents files are part of the PR
  • fresh E2E run: https://github.com/vllm-project/vllm-ascend/actions/runs/29302425926

A local Python/vLLM/torch runtime is unavailable in this Windows workspace, so pytest and NPU E2E validation are delegated to CI.

@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 prepares the repository for the vLLM v0.24.0 release by updating the release tag and pinning dependencies. It introduces extensive version-specific logic to ensure compatibility across the codebase, as the v0.24.0 release line diverges from the previous v0.23.0 target. Additionally, it includes a new compatibility patch for HunyuanVL processors and temporary CI adjustments to facilitate debugging the transition.

Highlights

  • vLLM Version Upgrade: Upgraded the verified vLLM release target from v0.23.0 to v0.24.0.
  • Dependency Update: Pinned Transformers to version 5.13.0 across the project.
  • Compatibility Infrastructure: Introduced version-aware logic to handle API differences between vLLM v0.23.0 and v0.24.0, including a new compatibility layer for HunyuanVL processors.
  • CI Workflow: Temporarily adjusted CI to continue after failures to ensure a complete failure set is captured for the new v0.24.0 target.
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/** (3)
    • .github/workflows/_selected_tests.yaml
    • .github/workflows/pr_test.yaml
    • .github/workflows/scripts/run_selected_tests.sh
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.

@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 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] Support Transformers 5.13.0 and vLLM v0.24.0 compatibility

Suggested PR Summary:

### What this PR does / why we need it?
This PR introduces compatibility updates to support Transformers 5.13.0 and vLLM v0.24.0 (upgraded from v0.23.0). Key changes include:
- Adding a compatibility patch for the Hunyuan VL processor (`hunyuan_vl_processor_compat.py`) and corresponding unit tests.
- Dynamically handling differences in KV cache configuration parameters (`max_num_batched_tokens` vs `max_in_flight_tokens`) across vLLM versions.
- Adapting the slot mapping kernel, NPU model runner, and input batch preparation to handle API changes between v0.23.0 and newer versions.
- Disabling the DFlash speculator on vLLM 0.23.0 and fixing Triton kernel padding values.

Feedback on the PR:
- **Critical Bug**: In `patch_kv_cache_coordinator.py`, positional argument binding in `get_kv_cache_coordinator` causes the third argument to bind to `max_in_flight_tokens` instead of `max_num_batched_tokens` on vLLM 0.23.0, resulting in an incorrect token budget. A fix is suggested to correctly select the budget.
- **Improvement**: In `hunyuan_vl_processor_compat.py`, an early return should be added to `_register_hunyuan_tokenizer_special_tokens` when the tokenizer is `None` to prevent misleading errors.

### Does this PR introduce _any_ user-facing change?
No, these are internal compatibility and platform patching updates.

### How was this patch tested?
Tested with new unit tests added in `tests/ut/patch/test_hunyuan_vl_processor_compat.py` and existing test suites.

Comment on lines +41 to +47
def _select_kv_token_budget(
max_model_len: int,
max_in_flight_tokens: int | None,
max_num_batched_tokens: int | None,
) -> int:
token_budget = max_num_batched_tokens if vllm_version_is("0.23.0") else max_in_flight_tokens
return token_budget if token_budget is not None else max_model_len

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.

critical

In vLLM 0.23.0, get_kv_cache_coordinator is called positionally with max_num_batched_tokens as the third argument. However, in the patched signature, the third argument is max_in_flight_tokens. This causes the passed value to be bound to max_in_flight_tokens while max_num_batched_tokens remains None. Because vllm_version_is("0.23.0") is True, _select_kv_token_budget currently selects max_num_batched_tokens (which is None), ignoring the actual passed value and falling back to max_model_len. This can lead to incorrect block allocation and admission control.

Suggested change
def _select_kv_token_budget(
max_model_len: int,
max_in_flight_tokens: int | None,
max_num_batched_tokens: int | None,
) -> int:
token_budget = max_num_batched_tokens if vllm_version_is("0.23.0") else max_in_flight_tokens
return token_budget if token_budget is not None else max_model_len
def _select_kv_token_budget(
max_model_len: int,
max_in_flight_tokens: int | None,
max_num_batched_tokens: int | None,
) -> int:
if vllm_version_is("0.23.0"):
token_budget = max_num_batched_tokens if max_num_batched_tokens is not None else max_in_flight_tokens
else:
token_budget = max_in_flight_tokens if max_in_flight_tokens is not None else max_num_batched_tokens
return token_budget if token_budget is not None else max_model_len

Comment on lines +37 to +39
def _register_hunyuan_tokenizer_special_tokens(tokenizer: Any) -> None:
"""Restore the named-token schema required by Transformers 5.13."""
missing_tokens = {

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.

high

If tokenizer is None (which can happen if the processor is initialized without a tokenizer for image-only tasks or during certain serialization steps), _register_hunyuan_tokenizer_special_tokens will fail with a misleading ValueError stating that the special-token schema does not match the model vocabulary. Adding an early return when tokenizer is None ensures robust, defensive execution.

def _register_hunyuan_tokenizer_special_tokens(tokenizer: Any) -> None:
    """Restore the named-token schema required by Transformers 5.13."""
    if tokenizer is None:
        return
    missing_tokens = {

@github-actions github-actions Bot added documentation Improvements or additions to documentation module:ops module:quantization and removed ci/build labels Jul 12, 2026
@github-actions github-actions Bot added merge-conflicts and removed documentation Improvements or additions to documentation module:ops module:quantization labels Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: zhao-stack <2020265299@qq.com>
shenzhao added 4 commits July 14, 2026 10:59
Signed-off-by: shenzhao <shenzhao9@huawei.com>
Signed-off-by: shenzhao <shenzhao9@huawei.com>
Signed-off-by: shenzhao <shenzhao9@huawei.com>
Signed-off-by: shenzhao <shenzhao9@huawei.com>
zhao-stack pushed a commit to zhao-stack/vllm-ascend that referenced this pull request Jul 14, 2026
Integrate the v0.24.0 compatibility changes from PR vllm-project#11875, retarget the release guards, and resync the balance scheduler with the new release baseline.

Fix exhaustive-CI failures by installing the Ascend GDN forward helper, using the native Hunyuan image placeholder protocol, and completing the AscendStore hash and scheduler block-size test fixtures.

Signed-off-by: shenzhao <shenzhao9@huawei.com>
zhao-stack pushed a commit to zhao-stack/vllm-ascend that referenced this pull request Jul 14, 2026
Integrate the v0.24.0 compatibility changes from PR vllm-project#11875, retarget the release guards, and resync the balance scheduler with the new release baseline.

Fix exhaustive-CI failures by installing the Ascend GDN forward helper, using the native Hunyuan image placeholder protocol, and completing the AscendStore hash and scheduler block-size test fixtures.

Signed-off-by: shenzhao <shenzhao9@huawei.com>
zhao-stack added a commit to zhao-stack/vllm-ascend that referenced this pull request Jul 14, 2026
Linearize the merge first-parent delta without replaying the canceled intermediate PR vllm-project#11875 chain.

Signed-off-by: zhao-stack <2020265299@qq.com>
zhao-stack added a commit to zhao-stack/vllm-ascend that referenced this pull request Jul 14, 2026
Keep only root-cause-backed main2main fixes and the effective PR vllm-project#11875 carry. Exclude the BalanceScheduler v0.24 resync and its lock-test rewrite because the behavior predates the e5588e-to-382bbd upgrade window and no failing CI entered that path.

Signed-off-by: zhao-stack <2020265299@qq.com>
zhao-stack added a commit to zhao-stack/vllm-ascend that referenced this pull request Jul 14, 2026
PR vllm-project#11875 moves the release CI lane to v0.24.0, where get_computed_blocks still returns a pair. The frozen vLLM main includes #47782 and returns a triple carrying the shared-prefix boundary. Point the existing exact bridge and its assertion at the actual release pin.

Signed-off-by: zhao-stack <2020265299@qq.com>
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

realliujiaxu pushed a commit that referenced this pull request Jul 15, 2026
### What this PR does / why we need it?

This PR is a follow-up to
#11875.

PR #11875 introduced the vLLM v0.24.0 support. Those adaptation changes
are treated as the baseline and are intentionally not repeated in this
description.

This PR removes the remaining vLLM v0.23.0 compatibility paths from
`main`.

Most changes only remove `v0.23.0` branches and keep the existing
v0.24/main implementation. Those mechanical removals are not listed
individually below.

#### Release defaults and documentation

Update the default `VLLM_TAG` in all maintained Dockerfiles from
`v0.23.0` to `v0.24.0`.

The main-branch support matrix, slash-command examples, and
balance-scheduler design documents are updated accordingly. This
prevents source-built images and contributor documentation from
continuing to select the unsupported v0.23 release.

#### Fused MoE weight layout boundary

Keep an explicit `vllm_version_is("0.24.0")` branch in both the standard
and 310P unquantized Fused MoE implementations.

Upstream vLLM PR vllm-project/vllm#44589 was
merged as `5051698e`, 26 commits after the v0.24.0 cut point, and is
present in the verified-main revision. Therefore v0.24.0 and verified
main do not share the same post-load weight-layout behavior:

- v0.24.0 explicitly materializes the transposed weights as contiguous
tensors before the NPU layout conversion;
- verified main follows the post-PR #44589 path without forcing the same
intermediate contiguous layout.

The standard and 310P unit tests cover both version-specific layouts,
the current MoE runner contract, shared-expert handling, and the
310P-specific communication method.

#### Qwen3.5/Qwen3Next output contract

Change the version boundary in the GDN and Qwen3.5/Qwen3Next patches
from `v0.23.0` to `v0.24.0`.

Upstream vLLM PR vllm-project/vllm#46998 was
merged as `300e3379`, after the v0.24.0 cut point and before the current
verified-main revision. It changed the attention contract from writing
into a caller-provided output buffer to returning the output tensor.

#### Balance scheduler alignment

`BalanceScheduler.schedule()` is a downstream copy of the upstream
scheduler body because the balance admission logic cannot be implemented
through a small wrapper.

The copied body is therefore updated from the v0.23.0 implementation to
the v0.24.0 implementation while preserving only the existing
balance-scheduling deltas.

Both supported upstream references now expose:

```python
schedule(self, throttle_prefills: bool = False)
```

The old signature-introspection compatibility code is removed and the
disabled path delegates directly to
`super().schedule(throttle_prefills)`.

The v0.24 scheduler alignment also preserves the corresponding upstream
behavior for:

- DP prefill throttling;
- speculative-token and maximum-length accounting;
- hybrid Mamba KV-cache hit handling;
- resumed-request bookkeeping;
- dynamic speculative decoding;
- deferred KV-block freeing;
- MRV1-only previous-step request tracking.

The balance scheduler unit tests and English/Chinese design documents
are updated to use v0.24.0 as the release reference. The drift test
continues to verify that the copied scheduler body differs from the
pinned upstream release only by the intended balance deltas.

#### Deferred removal of owner-maintained patches

The following compatibility patches and their unit tests are
intentionally retained in this PR:

- GLM47 zero-argument tool-call streaming parser;
- MiniMax-M2 incremental tool-call parser;
- MiniMax usage accounting;
- `tool_choice=none` empty-`tool_calls` response cleanup.

The first three remain behind the existing `vllm_version_is("0.23.0")`
condition, with a TODO explaining that their owners will remove them in
a follow-up. The `patch_tool_choice_none_content` registration is also
left unchanged for the same ownership reason.

These files are not required by the newly supported v0.24/main lanes,
but deleting owner-maintained patches is intentionally outside the scope
of this compatibility cleanup.

#### Test boundaries

The two Qwen3 MoE/EPLB E2E files previously ran only on v0.23.0 and were
skipped on main. Since v0.23.0 is removed and the cases remain broken on
both v0.24.0 and verified main, they are now explicitly skipped on both
supported lanes instead of being unintentionally re-enabled.

The newly rebased MRV2 data-parallel test is skipped on v0.24.0 rather
than v0.23.0. MRV2 remains supported only by the verified-main lane, as
established by PR #11875.

The HunyuanVL release helper names are updated from `_v023_*` to
`_v024_*` because the bundled-processor compatibility path now targets
v0.24.0. This is a naming correction only; the HunyuanVL adaptation
itself belongs to PR #11875.

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

Yes.

The vLLM Ascend main branch no longer supports vLLM v0.23.0. Docker
builds that do not override `VLLM_TAG` now use vLLM v0.24.0 by default.

There is no additional API change for the supported v0.24.0 and
verified-main lanes.

### How was this patch tested?


- vLLM version: v0.23.0
- vLLM main:
vllm-project/vllm@85c09e9

---------

Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: shenzhao <shenzhao9@huawei.com>
Signed-off-by: MrZ20 <2609716663@qq.com>
Co-authored-by: zhao-stack <2020265299@qq.com>
Co-authored-by: shenzhao <shenzhao9@huawei.com>
@zhao-stack zhao-stack closed this Jul 16, 2026
ningjingbengxiaohai pushed a commit to ningjingbengxiaohai/vllm-ascend that referenced this pull request Jul 18, 2026
### What this PR does / why we need it?

This PR is a follow-up to
vllm-project#11875.

PR vllm-project#11875 introduced the vLLM v0.24.0 support. Those adaptation changes
are treated as the baseline and are intentionally not repeated in this
description.

This PR removes the remaining vLLM v0.23.0 compatibility paths from
`main`.

Most changes only remove `v0.23.0` branches and keep the existing
v0.24/main implementation. Those mechanical removals are not listed
individually below.

#### Release defaults and documentation

Update the default `VLLM_TAG` in all maintained Dockerfiles from
`v0.23.0` to `v0.24.0`.

The main-branch support matrix, slash-command examples, and
balance-scheduler design documents are updated accordingly. This
prevents source-built images and contributor documentation from
continuing to select the unsupported v0.23 release.

#### Fused MoE weight layout boundary

Keep an explicit `vllm_version_is("0.24.0")` branch in both the standard
and 310P unquantized Fused MoE implementations.

Upstream vLLM PR vllm-project/vllm#44589 was
merged as `5051698e`, 26 commits after the v0.24.0 cut point, and is
present in the verified-main revision. Therefore v0.24.0 and verified
main do not share the same post-load weight-layout behavior:

- v0.24.0 explicitly materializes the transposed weights as contiguous
tensors before the NPU layout conversion;
- verified main follows the post-PR #44589 path without forcing the same
intermediate contiguous layout.

The standard and 310P unit tests cover both version-specific layouts,
the current MoE runner contract, shared-expert handling, and the
310P-specific communication method.

#### Qwen3.5/Qwen3Next output contract

Change the version boundary in the GDN and Qwen3.5/Qwen3Next patches
from `v0.23.0` to `v0.24.0`.

Upstream vLLM PR vllm-project/vllm#46998 was
merged as `300e3379`, after the v0.24.0 cut point and before the current
verified-main revision. It changed the attention contract from writing
into a caller-provided output buffer to returning the output tensor.

#### Balance scheduler alignment

`BalanceScheduler.schedule()` is a downstream copy of the upstream
scheduler body because the balance admission logic cannot be implemented
through a small wrapper.

The copied body is therefore updated from the v0.23.0 implementation to
the v0.24.0 implementation while preserving only the existing
balance-scheduling deltas.

Both supported upstream references now expose:

```python
schedule(self, throttle_prefills: bool = False)
```

The old signature-introspection compatibility code is removed and the
disabled path delegates directly to
`super().schedule(throttle_prefills)`.

The v0.24 scheduler alignment also preserves the corresponding upstream
behavior for:

- DP prefill throttling;
- speculative-token and maximum-length accounting;
- hybrid Mamba KV-cache hit handling;
- resumed-request bookkeeping;
- dynamic speculative decoding;
- deferred KV-block freeing;
- MRV1-only previous-step request tracking.

The balance scheduler unit tests and English/Chinese design documents
are updated to use v0.24.0 as the release reference. The drift test
continues to verify that the copied scheduler body differs from the
pinned upstream release only by the intended balance deltas.

#### Deferred removal of owner-maintained patches

The following compatibility patches and their unit tests are
intentionally retained in this PR:

- GLM47 zero-argument tool-call streaming parser;
- MiniMax-M2 incremental tool-call parser;
- MiniMax usage accounting;
- `tool_choice=none` empty-`tool_calls` response cleanup.

The first three remain behind the existing `vllm_version_is("0.23.0")`
condition, with a TODO explaining that their owners will remove them in
a follow-up. The `patch_tool_choice_none_content` registration is also
left unchanged for the same ownership reason.

These files are not required by the newly supported v0.24/main lanes,
but deleting owner-maintained patches is intentionally outside the scope
of this compatibility cleanup.

#### Test boundaries

The two Qwen3 MoE/EPLB E2E files previously ran only on v0.23.0 and were
skipped on main. Since v0.23.0 is removed and the cases remain broken on
both v0.24.0 and verified main, they are now explicitly skipped on both
supported lanes instead of being unintentionally re-enabled.

The newly rebased MRV2 data-parallel test is skipped on v0.24.0 rather
than v0.23.0. MRV2 remains supported only by the verified-main lane, as
established by PR vllm-project#11875.

The HunyuanVL release helper names are updated from `_v023_*` to
`_v024_*` because the bundled-processor compatibility path now targets
v0.24.0. This is a naming correction only; the HunyuanVL adaptation
itself belongs to PR vllm-project#11875.

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

Yes.

The vLLM Ascend main branch no longer supports vLLM v0.23.0. Docker
builds that do not override `VLLM_TAG` now use vLLM v0.24.0 by default.

There is no additional API change for the supported v0.24.0 and
verified-main lanes.

### How was this patch tested?


- vLLM version: v0.23.0
- vLLM main:
vllm-project/vllm@85c09e9

---------

Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: shenzhao <shenzhao9@huawei.com>
Signed-off-by: MrZ20 <2609716663@qq.com>
Co-authored-by: zhao-stack <2020265299@qq.com>
Co-authored-by: shenzhao <shenzhao9@huawei.com>
Alex-stack-hub pushed a commit to 0moyi0-2024/vllm-ascend_tp that referenced this pull request Jul 27, 2026
### What this PR does / why we need it?

This PR is a follow-up to
vllm-project#11875.

PR vllm-project#11875 introduced the vLLM v0.24.0 support. Those adaptation changes
are treated as the baseline and are intentionally not repeated in this
description.

This PR removes the remaining vLLM v0.23.0 compatibility paths from
`main`.

Most changes only remove `v0.23.0` branches and keep the existing
v0.24/main implementation. Those mechanical removals are not listed
individually below.

#### Release defaults and documentation

Update the default `VLLM_TAG` in all maintained Dockerfiles from
`v0.23.0` to `v0.24.0`.

The main-branch support matrix, slash-command examples, and
balance-scheduler design documents are updated accordingly. This
prevents source-built images and contributor documentation from
continuing to select the unsupported v0.23 release.

#### Fused MoE weight layout boundary

Keep an explicit `vllm_version_is("0.24.0")` branch in both the standard
and 310P unquantized Fused MoE implementations.

Upstream vLLM PR vllm-project/vllm#44589 was
merged as `5051698e`, 26 commits after the v0.24.0 cut point, and is
present in the verified-main revision. Therefore v0.24.0 and verified
main do not share the same post-load weight-layout behavior:

- v0.24.0 explicitly materializes the transposed weights as contiguous
tensors before the NPU layout conversion;
- verified main follows the post-PR #44589 path without forcing the same
intermediate contiguous layout.

The standard and 310P unit tests cover both version-specific layouts,
the current MoE runner contract, shared-expert handling, and the
310P-specific communication method.

#### Qwen3.5/Qwen3Next output contract

Change the version boundary in the GDN and Qwen3.5/Qwen3Next patches
from `v0.23.0` to `v0.24.0`.

Upstream vLLM PR vllm-project/vllm#46998 was
merged as `300e3379`, after the v0.24.0 cut point and before the current
verified-main revision. It changed the attention contract from writing
into a caller-provided output buffer to returning the output tensor.

#### Balance scheduler alignment

`BalanceScheduler.schedule()` is a downstream copy of the upstream
scheduler body because the balance admission logic cannot be implemented
through a small wrapper.

The copied body is therefore updated from the v0.23.0 implementation to
the v0.24.0 implementation while preserving only the existing
balance-scheduling deltas.

Both supported upstream references now expose:

```python
schedule(self, throttle_prefills: bool = False)
```

The old signature-introspection compatibility code is removed and the
disabled path delegates directly to
`super().schedule(throttle_prefills)`.

The v0.24 scheduler alignment also preserves the corresponding upstream
behavior for:

- DP prefill throttling;
- speculative-token and maximum-length accounting;
- hybrid Mamba KV-cache hit handling;
- resumed-request bookkeeping;
- dynamic speculative decoding;
- deferred KV-block freeing;
- MRV1-only previous-step request tracking.

The balance scheduler unit tests and English/Chinese design documents
are updated to use v0.24.0 as the release reference. The drift test
continues to verify that the copied scheduler body differs from the
pinned upstream release only by the intended balance deltas.

#### Deferred removal of owner-maintained patches

The following compatibility patches and their unit tests are
intentionally retained in this PR:

- GLM47 zero-argument tool-call streaming parser;
- MiniMax-M2 incremental tool-call parser;
- MiniMax usage accounting;
- `tool_choice=none` empty-`tool_calls` response cleanup.

The first three remain behind the existing `vllm_version_is("0.23.0")`
condition, with a TODO explaining that their owners will remove them in
a follow-up. The `patch_tool_choice_none_content` registration is also
left unchanged for the same ownership reason.

These files are not required by the newly supported v0.24/main lanes,
but deleting owner-maintained patches is intentionally outside the scope
of this compatibility cleanup.

#### Test boundaries

The two Qwen3 MoE/EPLB E2E files previously ran only on v0.23.0 and were
skipped on main. Since v0.23.0 is removed and the cases remain broken on
both v0.24.0 and verified main, they are now explicitly skipped on both
supported lanes instead of being unintentionally re-enabled.

The newly rebased MRV2 data-parallel test is skipped on v0.24.0 rather
than v0.23.0. MRV2 remains supported only by the verified-main lane, as
established by PR vllm-project#11875.

The HunyuanVL release helper names are updated from `_v023_*` to
`_v024_*` because the bundled-processor compatibility path now targets
v0.24.0. This is a naming correction only; the HunyuanVL adaptation
itself belongs to PR vllm-project#11875.

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

Yes.

The vLLM Ascend main branch no longer supports vLLM v0.23.0. Docker
builds that do not override `VLLM_TAG` now use vLLM v0.24.0 by default.

There is no additional API change for the supported v0.24.0 and
verified-main lanes.

### How was this patch tested?


- vLLM version: v0.23.0
- vLLM main:
vllm-project/vllm@85c09e9

---------

Signed-off-by: zhao-stack <2020265299@qq.com>
Signed-off-by: shenzhao <shenzhao9@huawei.com>
Signed-off-by: MrZ20 <2609716663@qq.com>
Co-authored-by: zhao-stack <2020265299@qq.com>
Co-authored-by: shenzhao <shenzhao9@huawei.com>
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