Skip to content

[MoE] Use GateLinear for all MoE models - #58234

Merged
jeejeelee merged 3 commits into
mainfrom
moe-router
Sep 23, 2026
Merged

jeejeelee merged 3 commits into
mainfrom
moe-router

Conversation

@jeejeelee

@jeejeelee jeejeelee commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Purpose

Test Plan

Test Result


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.

Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>

@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 repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@mergify mergify Bot added cohere Related to Cohere models llama Related to Llama models mistral Related to Mistral models qwen Related to Qwen models gpt-oss Related to GPT-OSS models glm labels Sep 23, 2026
@github-project-automation github-project-automation Bot moved this from To Triage to Ready in gpt-oss Issues & Enhancements Sep 23, 2026
@jeejeelee
jeejeelee enabled auto-merge (squash) September 23, 2026 01:57
@jeejeelee

Copy link
Copy Markdown
Member Author

/ci run

@github-actions github-actions Bot added the ready ONLY add when PR is ready to merge/full CI is needed label Sep 23, 2026
@github-actions

Copy link
Copy Markdown

❌ This PR is 1 commit behind upstream main. Your branch must contain every commit currently on upstream main. No new CI build was started. Merge or rebase onto the latest main, then rerun /ci run. To test this branch at your own risk, use /ci run --allow-stale.

@jeejeelee

Copy link
Copy Markdown
Member Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #90570 for commit aafff53e63a8.

@jeejeelee
jeejeelee merged commit de6674b into main Sep 23, 2026
185 checks passed
@jeejeelee
jeejeelee deleted the moe-router branch September 23, 2026 05:40
linfeng-yuan pushed a commit to vllm-project/vllm-ascend that referenced this pull request Oct 12, 2026
### What this PR does / why we need it?

The PR advances the main2main lane from vLLM v0.30.0 (tag commit
`ced6857afa0ea7b2e3f0846a62e1394e90f15607`) to vLLM main
`8cc9aa5ad350f6f80cf3bebb298d410803ff75a9` (installed as `0.30.0.dev`),
adapting vllm-ascend to every upstream change landed after the v0.30.0
release tag. The v0.30.0 lane stays supported: each upstream divergence
is selected with `vllm_version_is("0.30.0")`, so the release keeps the
legacy API and main takes the new one.

| Files | Upstream vLLM change (why it breaks vllm-ascend) | vllm-ascend
adaptation |

|-------|--------------------------------------------------|------------------------|
| `.github/vllm-main-verified.commit` | — (main-lane pin only) |
Verified main commit bumped `ced6857` (v0.30.0) -> `8cc9aa5` |
| `hidden_out` | — (stray artifact) | Accidental empty file created by a
shell redirect in `fe6d042a0`; no functional content (should be removed)
|
| `tests/e2e/pull_request/four_card/test_kimi_k3.py` |
[vllm#54222](vllm-project/vllm#54222) makes the
decode worker report the prefill worker's prefix-cache hits via
`kv_transfer_params["remote_prefill_cached_tokens"]` instead of its own
~100% transferred-KV hit rate, so the existing `cached_tokens > 0`
assertion fails on a fresh 129-token prompt | On main assert the P-side
hit count propagates to the decode output; keep `cached_tokens > 0` only
on v0.30.0 |
| `tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py`
| [vllm#45635](vllm-project/vllm#45635) moved
`enable_return_routed_experts` from `ModelConfig` to
`VllmConfig.aux_output_config`;
`test_stateful_handoff_preserves_decode_graph` mocks only
`model_config`, so `_sync_metadata_across_dp` raises for the dp_size=4
cases | Add `aux_output_config` to the mock `VllmConfig` on main |
| `tests/e2e/pull_request/one_card/test_thinking_budget.py` |
[vllm#56497](vllm-project/vllm#56497) changed
`ThinkingBudgetState.apply` from six positional args to `(logits, ctx:
LogitsContext)`, so the helper fails with a signature/TypeError | Build
`LogitsContext` and call `apply(logits, ctx)` on main; keep the six-arg
call on v0.30.0 |
| `tests/e2e/pull_request/two_card/spec_decode/test_spec_decode.py` |
[vllm#57934](vllm-project/vllm#57934) added a
`VllmConfig` validation rejecting DFlash candidate-head drafts
(`DFlash2DraftModel`/`LiLiCorrDraftModel`) under Model Runner V1;
`test_dflash2_acceptance` runs the V1 path, so config creation fails |
Skip the V1 variant on main (V2 covered by
`test_dflash2_v2_acceptance`); v0.30.0 still runs it |
| `tests/ut/_310p/test_model_runner_v2_310p.py` |
[vllm#56456](vllm-project/vllm#56456) added the
trailing `num_active_loras` to `prepare_inputs`;
[vllm#56497](vllm-project/vllm#56497) dropped
`prompt_len` from `Sampler.add_request` | Version-aware `_add_request`
helper (no `prompt_len` on main) and `prepare_inputs` args
(`num_active_loras` on main) |
| `tests/ut/attention/test_mla_cp.py` | vLLM main resolves the DCP group
through `get_dcp_world_size_and_rank` and computes LSE capability inside
`__new__`, so patching `get_dcp_group` no longer intercepts it | Patch
`get_dcp_world_size_and_rank` on main; keep `get_dcp_group` on v0.30.0 |
| `tests/ut/core/test_recompute_scheduler_short_request_first.py` | vLLM
main reads `ModelConfig.runner_type` in `supports_multimodal_inputs`,
but the patched `__post_init__` no longer initializes it | Set
`model_config.runner_type = "generate"` |
| `tests/ut/distributed/eplb/test_state.py` | vLLM main renamed
`EplbState.cuda_device_index` to `device_index` and `add_model` passes
`device_index=...`, so the old attribute is never set | Assert
`cuda_device_index` on v0.30.0 / `device_index` on main |
|
`tests/ut/distributed/kv_transfer/sparse_kv_offload/test_sparse_kv_offload_manager.py`
| [vllm#56723](vllm-project/vllm#56723) made
`UniformTypeKVCacheSpecs` read `dcp_sharded` from each member spec | Add
`dcp_sharded = False` to `_FakeKVCacheSpec` |
| `tests/ut/kv_offload/test_mooncake_layerwise_connector.py` | Same
[vllm#56723](vllm-project/vllm#56723) per-spec
`dcp_sharded` read | Add `dcp_sharded=False` to the
`UniformTypeKVCacheSpecs` member spec |
| `tests/ut/kv_offload/test_preempt_offload_connector.py` | vLLM main
tracks prefix-replay bookkeeping on the scheduler
(`prefix_replay_tokens`, `request.num_tokens`), which the mock scheduler
does not provide | Initialize `scheduler.prefix_replay_tokens` (and
`request.num_tokens`) on main |
| `tests/ut/models/test_deepseek_v41_release_config.py` |
[vllm#56554](vllm-project/vllm#56554) moved the
mm-prefix decision to the model-arch config converter, so the flattened
released config no longer carries
`is_mm_prefix_lm`/`mm_prefix_clamp_sliding_window` | Version-gate those
assertions (present on v0.30.0, absent on main) and normalize the config
|
| `tests/ut/models/test_kimi_k3_adapter.py` |
[vllm#50592](vllm-project/vllm#50592) /
[vllm#50593](vllm-project/vllm#50593) reworked
the Kimi-K3 AttnResidual API (prefix_delta threading, fused norms) |
Adjust adapter expectations to the `prefix_delta` AttnResidual form on
main |
| `tests/ut/ops/test_gdn_attn_builder.py` | vLLM main reads
`use_v2_model_runner` from the `VllmConfig` built in the test | Add
`use_v2_model_runner=False` to the mock config |
| `tests/ut/patch/platform/test_patch_engram_config.py` | vLLM main
resolves the Engram `dp_shared_memory` default to `True` when the caller
leaves it unset (v0.30.0 keeps it `False`) | Assert the
version-dependent default |
| `tests/ut/patch/platform/test_patch_kv_cache_coordinator.py` |
Upstream `KVCacheCoordinator.__init__` sets `group_block_sizes` and
`SimpleCPUOffloadScheduler` reads it; `AscendHybridKVCacheCoordinator`
builds managers itself, so the attribute is missing (`AttributeError`) |
Cover the new `AscendHybridKVCacheCoordinator.group_block_sizes`
exposure |
| `tests/ut/patch/platform/test_patch_mamba_block_aligned_split.py` |
vLLM main added the `mamba_shared_prefix_checkpoint` scheduler kwarg
read by the patched path | Add `mamba_shared_prefix_checkpoint=False` to
the scheduler mock |
| `tests/ut/spec_decode/test_eagle_proposer.py` | vLLM main removed
`MultiModalRegistry.supports_multimodal_inputs` and reads
`ModelConfig.supports_multimodal_inputs` instead, so patching the
removed method fails | `_supports_multimodal_inputs_patch` helper: patch
the registry method on v0.30.0, set `ModelConfig` flags on main |
| `tests/ut/spec_decode/test_mla_dspark.py` |
[vllm#57632](vllm-project/vllm#57632) inserted
`precompute_context_kv` before `progress_bar_desc` in the DFlash capture
path | Version-aware DFlash `capture` kwargs |
| `tests/ut/test_platform.py` |
[vllm#45635](vllm-project/vllm#45635) introduces
`VllmConfig.aux_output_config`, read by the Ascend platform validator |
Add `aux_output_config` (`None` on v0.30.0, disabled mock on main) to
the mocked `VllmConfig` |
| `tests/ut/worker/test_attn_utils_v2.py` |
[vllm#58149](vllm-project/vllm#58149) made
`max_model_len` a read-only property backed by `model_config`, so
assigning the instance attribute raises `AttributeError` | Set
`model_config.max_model_len` instead of the instance attribute on main |
| `tests/ut/worker/test_dcp_speculator_metadata_v2.py` |
[vllm#56723](vllm-project/vllm#56723) reads
`speculator.dcp_size` and `builder.supports_update_block_table`, and
slices `is_prefilling` to the padded request count | Fixture sets
`spec.dcp_size`/`supports_update_block_table`; version-aware
`is_prefilling` expectation |
| `tests/ut/worker/test_model_runner_v2.py` |
[vllm#58149](vllm-project/vllm#58149)
`max_model_len` property;
[vllm#56456](vllm-project/vllm#56456) added
`num_active_loras` | `max_model_len` workaround; pass the trailing
`num_active_loras` on main; aux-hidden-state restore assertions |
| `tests/ut/worker/test_model_runner_v2_kv_cache.py` |
[vllm#45635](vllm-project/vllm#45635) adds an
aux-output branch; `MagicMock` makes `aux_output_config.enabled` truthy
| Disable `aux_output_config.enabled` so the KV-connector path is
exercised |
| `tests/ut/worker/test_model_runner_v2_mamba.py` | vLLM main
split/reorganized `prepare_inputs` so the Ascend override is now
`_prepare_inputs_impl` | AST test now looks up `_prepare_inputs_impl` |
| `tests/ut/worker/test_pcp_manager_v2.py` |
[vllm#57980](vllm-project/vllm#57980) replaced
`padded_num_tokens`/`padded_num_reqs` with a `BatchExecutionDescriptor`
and dropped `routed_experts`; vLLM main renamed the DCP helper |
`_partition_batch` helper using `BatchExecutionDescriptor`; drop
`routed_experts`; `_prepare_dcp_local_seq_lens` rename |
| `tests/ut/worker/v2/test_aclgraph.py` |
[vllm#58275](vllm-project/vllm#58275) reads
`max_query_len`/`uniform_token_count` off the descriptor when preparing
capture inputs | Version-aware descriptor and `capture` kwargs |
| `vllm_ascend/_310p/attention/attention_v1.py` |
[vllm#53175](vllm-project/vllm#53175) added an
optional `kv_cache_spec` to `get_supported_kernel_block_sizes`, so the
zero-arg Ascend override raises `TypeError` when loading the MTP drafter
| Apply the `@supports_kernel_block_spec` decorator |
| `vllm_ascend/_310p/worker/v2/block_table.py` |
[vllm#56723](vllm-project/vllm#56723) passes a
per-group `dcp_sharded` to `BlockTables.__init__` (unexpected kwarg);
[vllm#56734](vllm-project/vllm#56734) sets
`idx_mapping == -1` for dummy draft steps, so the native 310P path
addresses block-table row `-1` | Version-split `__init__` accepting
`dcp_sharded`; skip negative `req_idx` in the 310P native slot-mapping
path |
| `vllm_ascend/_310p/worker/v2/model_runner.py` |
[vllm#56456](vllm-project/vllm#56456) added the
trailing `num_active_loras` positional to
`GPUModelRunner.prepare_inputs`, so the 310P override no longer matches
| Version-split `prepare_inputs`, accepting `num_active_loras` on main |
| `vllm_ascend/_310p/worker/v2/sampler.py` |
[vllm#56497](vllm-project/vllm#56497) dropped
`prompt_len` from `Sampler.add_request`, so
`GPUModelRunner.add_requests` fails with a missing/extra positional |
Version-split `add_request`; shared body moved to `_add_request_impl` |
| `vllm_ascend/attention/attention_v1.py` |
[vllm#53175](vllm-project/vllm#53175)
`kv_cache_spec` signature break; and on main the speculative-decode
request metadata stays at the real request extent, so a padded
FULL-graph decode makes FIA reject the TND replay (`queryT !=
last(actualSequenceLengthQ)`, error 561002) |
`@supports_kernel_block_spec`; on main append the padded tail to
`actual_seq_lengths_q` for V2 multi-token decode, whole block behind
`vllm_version_is("0.30.0")` |
| `vllm_ascend/attention/dsa_v1.py` |
[vllm#53175](vllm-project/vllm#53175)
`get_supported_kernel_block_sizes(kv_cache_spec)` signature break |
Apply the decorator to the 6 DSA backends |
| `vllm_ascend/attention/fa3_v1.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/indexer.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/indexer_kpool.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator to both indexer backends |
| `vllm_ascend/attention/mla_v1.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/sfa_v1.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/utils.py` |
[vllm#53175](vllm-project/vllm#53175) made
`get_supported_kernel_block_sizes` accept `kv_cache_spec` and made
`_largest_kernel_block_within` pass it; Ascend's zero-arg staticmethods
raise `TypeError` | New `supports_kernel_block_spec` decorator that
accepts/ignores `kv_cache_spec` on main and keeps the zero-arg static
method on v0.30.0 |
| `vllm_ascend/distributed/eplb/state.py` | vLLM main renamed
`EplbState.cuda_device_index` to `device_index`, so
`AscendEPLBController.prepare_load` raises `AttributeError:
'AscendEplbState' object has no attribute 'cuda_device_index'` | Set
`cuda_device_index` on v0.30.0 / `device_index` on main |
| `vllm_ascend/lora/punica_npu.py` |
[vllm#53555](vllm-project/vllm#53555) added the
abstract `apply_lora_full_linear` (sequence classification), so
`PunicaWrapperNPU` can no longer be instantiated (`TypeError: Can't
instantiate abstract class`) | Implement the per-adapter einsum fallback
for the classification head (skips the half/bf16-only BGMV shrink
kernel) |
| `vllm_ascend/models/kimi_k3.py` |
[vllm#50592](vllm-project/vllm#50592) /
[vllm#50593](vllm-project/vllm#50593):
`KimiDecoderLayer.forward` threads `prefix_delta`,
`forward_attn_residual` returns a 3-tuple and the fused norm path is
used, so `AscendKimiDecoderLayer.forward_attn_residual` fails with a
signature/unpack error | Version-gate AttnResidual: fused-norm
`_apply_ascend_attn_res`, `forward_attn_residual` threading
`prefix_delta` and returning the 3-tuple on main; v0.30.0 keeps the
2-tuple |
| `vllm_ascend/models/minimax_m3/msa_m3.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator to the MiniMax-M3 indexer/sparse backends |
| `vllm_ascend/ops/fused_moe/gate_linear.py` |
[vllm#58234](vllm-project/vllm#58234) extended
`GateLinear.__init__` with `skip_bias_add`/`quant_config`/`return_bias`
and routed qwen3_moe (and others) through it, so loading Qwen3 MoE fails
with `Gate AscendGateLinear.__init__` (unexpected kwargs) |
Version-split `AscendGateLinear.__init__` (main forwards the new args,
still forcing FP32) and `forward` returns the single output so
`return_bias` is honored |
| `vllm_ascend/ops/fused_moe/router/grouped_topk_router.py` |
[vllm#58880](vllm-project/vllm#58880) removed
`routed_scaling_factor` from the fused MiniMax2 routing config, so
passing it raises an unexpected-kwarg error on main | Pass
`routed_scaling_factor` only on v0.30.0 |
| `vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py` |
[vllm#56734](vllm-project/vllm#56734) marks
dummy draft decode runs with `idx_mapping == -1` and skips the
block-table read; the forked Ascend kernel used the raw index and
aborted with an invalid GM address (`error code 507035`) | Main-only
guarded kernel: skip block-table reads and emit `PAD_SLOT_ID` for
`idx_mapping == -1`; v0.30.0 keeps the original kernel |
| `vllm_ascend/patch/platform/patch_kv_cache_coordinator.py` | Upstream
`KVCacheCoordinator.__init__` sets `group_block_sizes`, which
`SimpleCPUOffloadScheduler` reads; the Ascend subclass constructs
managers itself and never sets it, so startup fails with
`AttributeError: 'AscendHybridKVCacheCoordinator' object has no
attribute 'group_block_sizes'` | Expose `group_block_sizes` after
building the managers (fixes #17831) |
| `vllm_ascend/patch/platform/patch_kv_cache_utils.py` |
[vllm#55390](vllm-project/vllm#55390) renamed
`_annotate_eagle_groups`'s positional-fallback param from
`use_deepseek_v4_fallback` to `use_trailing_layer_fallback`, so the
Ascend packed-KV-cache-group patch fails with an unexpected-keyword
`TypeError` | Pass the correct param per version |
| `vllm_ascend/patch/worker/patch_step3p5.py` | vLLM main replaced
`FP32ReplicatedLinear` with `GateLinear` inside `step3p5.FusedMoEBlock`,
so the gate import/construction no longer exists on main | Version-gate
the import and `_patched_fused_moe_block_init` gate construction
(`FP32ReplicatedLinear` vs `GateLinear`) |
| `vllm_ascend/patch/worker/patch_triton.py` |
[vllm#58651](vllm-project/vllm#58651) added
`packed_qk_rope.py`, whose kernel calls
`triton.next_power_of_2(rotary_dim)` with a `tl.constexpr`; the injected
host helper calls `(n-1).bit_length()`, so the Kimi vision tower's
`profile_run` aborts with `AttributeError('constexpr' object has no
attribute 'bit_length')` | On main wrap `next_power_of_2` to unwrap
`tl.constexpr` before delegating |
| `vllm_ascend/patch/worker/patch_v2/patch_model_runner.py` |
[vllm#45635](vllm-project/vllm#45635) moved
routed-experts output to the AuxOutput connector (wired in
`GPUModelRunner.initialize_kv_cache`); the Ascend fork predates it, so
the worker emits no `aux_output_connector_output` and the scheduler
raises `AssertionError: auxiliary output worker output is missing`.
[vllm#56723](vllm-project/vllm#56723) added
`dcp_sharded` and dropped `attn_cg_support` | Build
`get_aux_output_connector` when enabled (main); collect/forward
per-group `dcp_sharded`; drop `attn_cg_support` on main |
| `vllm_ascend/platform.py` |
[vllm#45635](vllm-project/vllm#45635) requires
Model Runner V2 for AuxOutput; Ascend is out-of-tree, so the upstream
guard is skipped and an MRV1 run fails with the same missing-aux-output
assertion | Add `_validate_aux_output_config`: reject
`aux_output_config.enabled` under Model Runner V1 |
| `vllm_ascend/worker/v2/aclgraph_utils.py` |
[vllm#57980](vllm-project/vllm#57980) renamed
`maybe_prepare_dcp_local_seq_lens` to `prepare_dcp_local_seq_lens` and
moved the `cp_size > 1` guard to callers;
[vllm#57632](vllm-project/vllm#57632) reaches
model methods through `ModelWithContext` during capture | Alias both DCP
helpers and guard `cp_size > 1`; add `ModelWithContext.__getattr__`
forwarding to the wrapped model on main |
| `vllm_ascend/worker/v2/block_table.py` |
[vllm#56723](vllm-project/vllm#56723) passes a
per-group `dcp_sharded` list to `BlockTables.__init__`, so engine
startup fails with `TypeError: AscendBlockTables.__init__() got an
unexpected keyword argument 'dcp_sharded'` | Version-split `__init__`
accepting and forwarding `dcp_sharded` on main |
| `vllm_ascend/worker/v2/input_batch.py` |
[vllm#57270](vllm-project/vllm#57270) added
`is_padding` to `InputBatch.make_dummy` to route profiling dummy tokens
to MoE experts | `make_dummy` accepts and forwards `is_padding` on main
|
| `vllm_ascend/worker/v2/model_runner.py` |
[vllm#56456](vllm-project/vllm#56456) added
`num_active_loras`;
[vllm#57980](vllm-project/vllm#57980) dropped
the module-level `maybe_partition_pcp_batch` and folded the aux-hidden
restore into `restore_for_sampling`, so the replicated-PCP fast path
leaves `aux_hidden_states` in the PCP-local layout and the draft copy
fails (`self [5, 4096] vs src [3, 4096]`) | Split
`prepare_inputs`/`_prepare_inputs_impl` with `num_active_loras` on main;
call `pcp_manager.partition_batch(batch, desc)`; restore PCP-local
`aux_hidden_states` on main |
| `vllm_ascend/worker/v2/pcp_manager.py` |
[vllm#57980](vllm-project/vllm#57980) replaced
`padded_num_tokens` with a `BatchExecutionDescriptor` and threads
`aux_hidden_states` through `restore_for_sampling`;
[vllm#56456](vllm-project/vllm#56456) forwards
`padded_num_reqs` | Version-split `partition_batch` (descriptor) and
`restore_for_sampling` (`aux_hidden_states`); forward `padded_num_reqs`
|
| `vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py` |
[vllm#58275](vllm-project/vllm#58275) makes
draft capture pass `max_query_len`; the Ascend override left it
unbounded (`num_tokens`), diverging from upstream for mixed FULL graphs
| Forward `max_query_len=desc.max_query_len or desc.uniform_token_count`
on main |
| `vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py` |
[vllm#57632](vllm-project/vllm#57632) added a
trailing `precompute_context_kv` to `DFlashCudaGraphManager.capture`, so
the Ascend override's positional `super().capture()` call shifts |
Version-split `capture`, accepting and forwarding
`precompute_context_kv` on main (passed by keyword) |

> **Notes**
> - `hidden_out` is an accidental empty file introduced by a shell
redirect in `fe6d042a0`; remove it before merging.
> - The branch commits `cacf5b7d5` (`model_runner_v1.py` routed-experts)
and `f763bc65e` (workflow edits) were reverted later in the branch, so
they do not appear in the net PR diff and are omitted.

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

### How was this patch tested?


- vLLM main:
vllm-project/vllm@ced6857

---------

Signed-off-by: hfadzxy <starmoon_zhang@163.com>
Signed-off-by: wxsIcey <1790571317@qq.com>
Co-authored-by: wxsIcey <1790571317@qq.com>
ningjingbengxiaohai pushed a commit to vllm-project/vllm-ascend that referenced this pull request Oct 15, 2026
…tibility (#18229)

### What this PR does / why we need it?

Upgrade the release dependency from vLLM v0.30.0 to
[v0.31.0](https://github.com/vllm-project/vllm/commit/db9527a46873454610df6dbedf79a36d6bf1a7f6)
while keeping the independently supported verified-main target at
[c4df37d](https://github.com/vllm-project/vllm/commit/c4df37dfcc7f72ca41cd43801a468526ecf99a2b).
Rebase on latest Ascend main `c2382c6`, preserving the CPP profiling
changes from #18622. The file mapping below describes the diff for
`23c8b15` against `c2382c6`.

The two targets have different APIs despite both being supported: retain
version-dependent forwarding for profiling randomization, PP batch
lengths, Mamba allocation, EPLB setup and encoder-only prefill
admission. Remove obsolete 0.30 branches only where both targets now
share the contract.

| Contract | Verified main `c4df37d` | Release v0.31.0 `db9527a` |
| --- | --- | --- |
| Profiling | Parent calls omit `randomize_inputs` | Forward the flag
through V1/V2/310P and MC2 |
| PP batch state | No `max_seq_len_np` | Preserve the field in
`AscendInputBatch` |
| Mamba allocation | Parent has no `prefill_end` | Forward checkpoint
boundary |
| EPLB setup | Update existing state/communicator | Construct state from
model and mapping |
| Non-chunked prefill | Keep encoder-only budget exception | Keep
release budget rejection |

#### Changes organized by downstream file

Upstream links identify the reason or contract being adapted. For
existing main behavior that becomes common to both targets, the change
is removal of the old release branch, not a new port of the complete
upstream implementation. File links are pinned to this PR head; [the
complete fixed
diff](https://github.com/vllm-project/vllm-ascend/compare/c2382c67aa6be12f1c822733cd47d021f61b0b23...23c8b15c2709978463490b0e8531bf5f9f27b9c1)
shows the exact edits.

<details>
<summary>Dependency markers, images and documentation (13
files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`.github/vllm-release-tag.commit`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/.github/vllm-release-tag.commit)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Advance the release marker
to `v0.31.0`; leave the verified-main marker at `c4df37d`. |
|
[`Dockerfile`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.310p`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.310p)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.310p.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.310p.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a3`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a3)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a3.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a3.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a5`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a5)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a5.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a5.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`README.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/README.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Update the release CI
support version to 0.31.0. |
|
[`README.zh.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/README.zh.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Update the Chinese release
CI support version to 0.31.0. |
|
[`docs/source/tutorials/models/DeepSeek-V4.1-Flash.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/docs/source/tutorials/models/DeepSeek-V4.1-Flash.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Use separate release and
verified-main marker commands for the two build targets. |
|
[`vllm_ascend/ops/triton/docs/v2/spec_decode/prepare_dflash_inputs.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/triton/docs/v2/spec_decode/prepare_dflash_inputs.md)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Update the documented
DFlash ABI version to 0.31.0; no new kernel behavior is introduced by
this document change. |

</details>

<details>
<summary>Model runners, graphs and platform integration (14
files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/_310p/model_runner_310p.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/model_runner_310p.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls. | Forward the profiling randomization flag through the 310P V1
override to the NPU V1 runner. |
|
[`vllm_ascend/_310p/worker/v2/model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/model_runner.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent. | Forward release-only
randomization; accept `num_active_loras` in the common prepare
signature, use the shared PCP/input-batch contract and compute complete
prompt-tail/decode-graph metadata in CPU input preparation. |
|
[`vllm_ascend/_310p/worker/v2/sampler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/sampler.py)
| [vLLM #56497](https://github.com/vllm-project/vllm/pull/56497)
introduces V2 `LogitsContext` and custom logits-processor lifecycle;
`Sampler.add_request` no longer takes `prompt_len`. | Adopt
`add_request(req_idx, sampling_params)` and remove the legacy
prompt-length argument; retain the 310P CPU generator/sampling
implementation. |
|
[`vllm_ascend/attention/attention_v1.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/attention/attention_v1.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility. | Remove the 0.30 condition around
V2 speculative-padding handling while retaining actual prefill/decode
metadata semantics. |
|
[`vllm_ascend/patch/worker/patch_v2/patch_model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_v2/patch_model_runner.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist.<br><br>[vLLM
#45635](https://github.com/vllm-project/vllm/pull/45635) moves
routed-expert output to `AuxOutputConfig`/the AuxOutput connector; [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) removes the
legacy runner initialization keyword. | Read `dcp_sharded` from cache
specs and forward it to block tables; initialize the AuxOutput connector
from `aux_output_config.enabled`; drop the legacy `attn_cg_support`
keyword. |
|
[`vllm_ascend/platform.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/platform.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635) moves
routed-expert output to `AuxOutputConfig`/the AuxOutput connector; [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) removes the
legacy runner initialization keyword. | Apply the existing V1 AuxOutput
configuration guard to both targets, removing the old 0.30 early return.
|
|
[`vllm_ascend/worker/model_runner_v1.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/model_runner_v1.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls. | Accept `randomize_inputs` in profiling/dummy execution and
enter `maybe_randomize_inputs` inside forward context when requested;
preserve the Ascend execution path. |
|
[`vllm_ascend/worker/v2/aclgraph_utils.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/aclgraph_utils.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980)
replaces the legacy PCP helper with descriptor-based `partition_batch`,
restores auxiliary hidden states with sampling outputs, and renames the
DCP preparation helper.<br><br>[vLLM
#57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Use
`prepare_dcp_local_seq_lens`; delegate model-wrapper attribute lookup to
the original model so DFlash context-KV callbacks remain accessible. |
|
[`vllm_ascend/worker/v2/input_batch.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/input_batch.py)
| [vLLM #58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture. | Always retain
prompt-tail and graph-eligibility fields and forward dummy-batch
`max_query_len`/`is_padding`; remove obsolete 0.30 branches. |
|
[`vllm_ascend/worker/v2/model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/model_runner.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58542](https://github.com/vllm-project/vllm/pull/58542) adds
`max_seq_len_np` for PP sampled-token broadcast handling. Present in
release batch state; absent from pinned main.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) replaces the
legacy PCP helper with descriptor-based `partition_batch`, restores
auxiliary hidden states with sampling outputs, and renames the DCP
preparation helper.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent.<br><br>[vLLM
#54335](https://github.com/vllm-project/vllm/pull/54335) routes
fixed-token scoring through the same unpadded logits path as prompt
logprobs, which is incompatible with Ascend lmhead-TP collective row
layouts. | Use release-only kwargs for profiling/execute and MC2 dummy
execution; forward release-only `max_seq_len_np`. After PD request
reclassification, recompute `has_prefill`, decode-graph eligibility and
uniform token count. Accept `num_active_loras` in the common prepare
signature without adding FastPrefillHelper behavior. Use
descriptor-based PCP partitioning and restore auxiliary states before
replicated drafting. Extend the lmhead-TP guard to fixed-token scoring,
tolerating workers without `token_id_scores`. |
|
[`vllm_ascend/worker/v2/model_states/mamba_hybrid.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/model_states/mamba_hybrid.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400)
requires decode-like prompt tails to use decode-row Mamba metadata for
speculative rollback. | Build a local mask `is_prefilling_np &
~prefill_runs_as_decode_np` so prompt tails are decode rows; do not
mutate the batch's original prefill mask. |
|
[`vllm_ascend/worker/v2/pcp_manager.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/pcp_manager.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980)
replaces the legacy PCP helper with descriptor-based `partition_batch`,
restores auxiliary hidden states with sampling outputs, and renames the
DCP preparation helper. | Unify descriptor-based partitioning, including
CPP profile capture after #18622, and the `(batch, hidden, aux)`
sampling restore contract; restore and trim auxiliary states together
with hidden states to the unpadded global token extent. |
|
[`vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py)
| [vLLM #58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture. | Always pass
`desc.max_query_len or desc.uniform_token_count` to autoregressive
capture. |
|
[`vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Always receive and forward
`precompute_context_kv` under the Ascend communicator/model-capture
wrappers. |

</details>

<details>
<summary>KV allocation and block tables (6 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/_310p/worker/v2/block_table.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/block_table.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist.<br><br>[vLLM
#56734](https://github.com/vllm-project/vllm/pull/56734) uses
`idx_mapping=-1` for dummy draft/padding requests and masks their
persistent block-table reads to avoid stale-row KV writes. | Unify the
constructor with `dcp_sharded`; skip negative request indices and retain
PAD slots in the CPU mapping path. Keep the existing CP=1 restriction
and persistent CPU/device buffers. |
|
[`vllm_ascend/models/glm5next/kv_cache.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/models/glm5next/kv_cache.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) adds
`prefill_end` to Mamba checkpoint allocation, including prompt-end
retention. Release has the new signature; pinned main has the old one. |
Accept `prefill_end` for call compatibility; keep one private Kpool tail
block per request. |
|
[`vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py)
| [vLLM #56734](https://github.com/vllm-project/vllm/pull/56734) uses
`idx_mapping=-1` for dummy draft/padding requests and masks their
persistent block-table reads to avoid stale-row KV writes. | Unify the
slot-mapping kernel, mask block-table loads with `is_real_req`, and emit
PAD for dummy rows; retain Ascend block/window and address-calculation
behavior. |
|
[`vllm_ascend/patch/platform/patch_kv_cache_utils.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_kv_cache_utils.py)
| The pinned `_annotate_eagle_groups` contract uses
`use_trailing_layer_fallback`, replacing the DeepSeek-V4-specific
fallback keyword; the introducing PR was not independently identified.
Fixed contracts: [release:
kv_cache_utils.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/kv_cache_utils.py#L2170).
| Always pass `use_trailing_layer_fallback=True`; retain existing Ascend
cache grouping/annotation behavior. |
|
[`vllm_ascend/patch/platform/patch_mamba_manager.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_mamba_manager.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) adds
`prefill_end` to Mamba checkpoint allocation, including prompt-end
retention. Release has the new signature; pinned main has the old one. |
Accept `prefill_end`, forwarding it only to the release parent while
retaining the existing Ascend allocation logic. |
|
[`vllm_ascend/worker/v2/block_table.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/block_table.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist. | Use one
constructor with optional per-group `dcp_sharded` validation/forwarding;
retain Ascend int32 slot mappings. |

</details>

<details>
<summary>Schedulers and profiling (5 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/core/dyntra_lb_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/dyntra_lb_scheduler.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#58259](https://github.com/vllm-project/vllm/pull/58259) define the
upstream resumable-session queue/handoff lifecycle: stopping a turn can
re-enqueue buffered continuation input.<br><br>Both targets admit
against `max_num_active_reqs` and include parked streaming sessions in
occupied slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Use KV-holder-first queue selection/re-enqueueing, the common
blocked-request helper, deferred bookkeeping and active-slot admission
including parked streams. Preserve the main-only encoder exception.
Remove secondary stop cleanup so upstream can retain/re-enqueue
resumable continuations. |
|
[`vllm_ascend/core/recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/recompute_scheduler.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>Both targets admit against
`max_num_active_reqs` and include parked streaming sessions in occupied
slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Fold the legacy queues into the common KV-holder/deferred path, count
parked streams for active admission, and preserve the version-dependent
encoder condition. Remove the redundant remote-KV waiting debug log as a
local cleanup. |
|
[`vllm_ascend/core/scheduler_profiling_chunk.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/scheduler_profiling_chunk.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>Both targets admit against
`max_num_active_reqs` and include parked streaming sessions in occupied
slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Use the common blocked-request/queue lifecycle, active admission
including parked streams, and the version-dependent encoder budget
condition. |
|
[`vllm_ascend/patch/platform/patch_balance_schedule.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_balance_schedule.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses `_handle_blocked_waiting_request`. |
Fold six obsolete 0.30 queue branches and add the release/main encoder
budget condition. Document the shared `if not request_queue`
drained-queue guard. Retain baseline balancing, running-only DP
snapshots/admission accounting and connector-snapshot cleanup; complete
upstream schedule synchronization is outside this patch. |
|
[`vllm_ascend/profiling_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/profiling_config.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947)
replaces `skipped_waiting` with `kv_holding_waiting` and
`deferred_waiting`, prioritizes KV holders, and uses
`_handle_blocked_waiting_request`. | Retarget the profiling wrapper from
the old blocked-status promotion helper to
`_handle_blocked_waiting_request`. |

</details>

<details>
<summary>EPLB state and routing (2 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/distributed/eplb/eplb_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/distributed/eplb/eplb_state.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) changes
main's EPLB setup to update existing state and reuse its communicator.
Release still creates state from `(model, model_config, mapping)`. |
After the parent's `update_mapping`, refresh Ascend replica routing
tables; consistently resolve an unspecified NPU device index to the
current device. |
|
[`vllm_ascend/worker/v2/eplb.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/eplb.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) changes
main's EPLB setup to update existing state and reuse its communicator.
Release still creates state from `(model, model_config, mapping)`. |
Create `AscendEplbState` on release with the current policy/optional
expert arguments; call the main parent to update the existing state and
communicator. |

</details>

<details>
<summary>Models and MoE operators (6 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/models/kimi_k3.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/models/kimi_k3.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592)/[vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) use
`prefix_delta` and the three-value AttnRes layer contract instead of the
old prepared-input/deferred-MLP contract. | Remove old layer/model
contracts, propagate `prefix_delta` and return the three-value AttnRes
state; preserve Ascend fused operations, DSpark aux selection and SP/PP
transport/output boundaries. |
|
[`vllm_ascend/ops/fused_moe/gate_linear.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/fused_moe/gate_linear.py)
| [vLLM #58234](https://github.com/vllm-project/vllm/pull/58234) unifies
MoE gate layers under `GateLinear` with the current linear constructor
and replaces Step3.5's dedicated FP32 gate class. | Use the current
constructor parameters (`skip_bias_add`, `quant_config`, `return_bias`)
and retain BF16-to-FP32 gate/fallback semantics. CRLF-to-LF
normalization contributes to the large line diff. |
|
[`vllm_ascend/ops/fused_moe/router/grouped_topk_router.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/fused_moe/router/grouped_topk_router.py)
| [vLLM #58880](https://github.com/vllm-project/vllm/pull/58880) removes
`routed_scaling_factor` from routing-method classification, allowing
MiniMax classification with non-unit scaling. | Stop passing
`routed_scaling_factor` to classification; downstream routing-weight
scaling is retained. |
|
[`vllm_ascend/patch/__init__.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/__init__.py)
| The release target is 0.31.0; [vLLM
#56994](https://github.com/vllm-project/vllm/pull/56994) is context for
the retained GLM reasoning patch comment, not a new model capability in
this PR. | Update only the supported-version comment for the retained
GLM reasoning patch. |
|
[`vllm_ascend/patch/worker/patch_step3p5.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_step3p5.py)
| [vLLM #58234](https://github.com/vllm-project/vllm/pull/58234) unifies
MoE gate layers under `GateLinear` with the current linear constructor
and replaces Step3.5's dedicated FP32 gate class. | Always use
`GateLinear` with FP32 parameter/output types instead of the legacy
FP32ReplicatedLinear branch. |

</details>

<details>
<summary>Token scoring and Triton helpers (2 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/patch/worker/patch_triton.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_triton.py)
| [vLLM #58651](https://github.com/vllm-project/vllm/pull/58651) uses
`triton.next_power_of_2` in packed-QK RoPE constexpr evaluation; the
Ascend replacement must also satisfy the installed Triton
JIT/constexpr-function contract. | Use a constexpr-aware
`next_power_of_2` replacement; register with `triton.constexpr_function`
when available, otherwise unwrap `tl.constexpr.value` in the fallback. |
|
[`vllm_ascend/worker/v2/sample/logprob.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/sample/logprob.py)
| [vLLM #54335](https://github.com/vllm-project/vllm/pull/54335) adds
fixed-token prompt scoring and broadcasts candidate IDs with `expand`;
the token-ID row stride can be zero or non-contiguous. | Pass
`token_ids.stride(0)` into the Triton kernel and use it for row
addressing; support broadcast stride zero and strided candidate IDs. |

</details>

BalanceScheduler scope: this PR folds the old queue branches and adapts
encoder-only admission. Its baseline DP balancing, running-only
snapshot/accounting and connector-snapshot cleanup remain; complete
scheduler-body synchronization and a strict AST equivalence requirement
are deferred. The baseline drift guard may skip and does not prove
complete upstream equivalence.

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

The default release dependency becomes vLLM v0.31.0; the verified-main
pin remains unchanged. Fixed-token prompt scoring handles
broadcast/strided IDs correctly and reports an explicit error when used
with unsupported lmhead TP. Resumable Dyntra continuations retain
upstream stop/queue behavior, and PD prompt-tail graph/Mamba metadata
follow the supported upstream contracts.

### How was this patch tested?

#### Test changes organized by file

The table describes test intent and fixture changes; it does not claim
that every changed test was selected or executed on NPU hardware.

<details>
<summary>Unit, PR E2E and nightly test mapping (37 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_compute_token_logprobs.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_compute_token_logprobs.py)
| [vLLM #54335](https://github.com/vllm-project/vllm/pull/54335) | Add
NPU numerical comparisons for broadcast stride=0 and sliced stride=8
token IDs; outside the PR CI selector. |
|
[`tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_num_nans.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_num_nans.py)
| Release-version cleanup; no new upstream behavior. | Update the
default version label to 0.31.0; no algorithm change. |
|
[`tests/e2e/pull_request/four_card/test_kimi_k3.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/four_card/test_kimi_k3.py)
| [vLLM #54222](https://github.com/vllm-project/vllm/pull/54222) | Check
equality between P-worker `remote_prefill_cached_tokens` and the
response cache count; zero hits are valid for a new prompt. |
|
[`tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Use the
common AuxOutput configuration object in V1 guard fixtures. |
|
[`tests/e2e/pull_request/one_card/test_thinking_budget.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/one_card/test_thinking_budget.py)
| [vLLM #56497](https://github.com/vllm-project/vllm/pull/56497) |
Construct `LogitsContext` with expanded mapping, input IDs, positions
and sequence bounds; call `apply(logits, ctx)`. |
|
[`tests/ut/_310p/test_model_runner_v2_310p.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/_310p/test_model_runner_v2_310p.py)
| [vLLM #56456](https://github.com/vllm-project/vllm/pull/56456), [vLLM
#56497](https://github.com/vllm-project/vllm/pull/56497) | Use the
current sampler request signature and pass the added prepare-input LoRA
argument in 310P fixtures. |
|
[`tests/ut/attention/test_mla_cp.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/attention/test_mla_cp.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Mock `get_dcp_world_size_and_rank` and
remove legacy DCP group fixture branching. |
|
[`tests/ut/core/test_circular_buffer.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_circular_buffer.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Pass `replay_boundaries=[tokens-1]` to the current cache-block API. |
|
[`tests/ut/core/test_dyntra_lb_recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_dyntra_lb_recompute_scheduler.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) | Use
the shared KV-holder/deferred queue interfaces in Dyntra/recompute
fixtures. |
|
[`tests/ut/core/test_dyntra_lb_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_dyntra_lb_scheduler.py)
| [vLLM #58259](https://github.com/vllm-project/vllm/pull/58259), [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) | Regress
synchronous/asynchronous resumable continuation handling for running,
paused and preempted requests, buffered/unbuffered input, and final
cleanup; update queue seams. |
|
[`tests/ut/core/test_profiling_chunk.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_profiling_chunk.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934), [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) | Update queue
fixtures/blocked-request helper and active-request capacity field. |
|
[`tests/ut/core/test_recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_recompute_scheduler.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) |
Remove legacy queue branching and use the shared blocked-request seam. |
|
[`tests/ut/core/test_scheduler_connector_block_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_scheduler_connector_block_state.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947), [vLLM
#59029](https://github.com/vllm-project/vllm/pull/59029) | Supply the
baseline `balance_queue` fixture; connector-snapshot cleanup itself
predates this change. |
|
[`tests/ut/distributed/eplb/test_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/distributed/eplb/test_state.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) |
Verify mapping updates refresh Ascend routing tables. |
|
[`tests/ut/distributed/kv_transfer/kv_p2p/test_remote_prefill_lifecycle.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/distributed/kv_transfer/kv_p2p/test_remote_prefill_lifecycle.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) | Use
the shared queue lifecycle rather than version-specific skipped-waiting
fixtures. |
|
[`tests/ut/kv_offload/test_preempt_offload_connector.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/kv_offload/test_preempt_offload_connector.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Always provide prefix replay and request token-count fields in the
offload fixture. |
|
[`tests/ut/models/test_deepseek_v41_release_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_deepseek_v41_release_config.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Assert obsolete flattened multimodal-prefix flags are absent after
architecture conversion. |
|
[`tests/ut/models/test_glm5next_kv_cache.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_glm5next_kv_cache.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) | Pass
the new allocation argument while checking the private-tail block
policy. |
|
[`tests/ut/models/test_kimi_k3_adapter.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_kimi_k3_adapter.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592), [vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) | Update layer
signatures/three-value returns, auxiliary output expectations and
AST-extracted fixtures. |
|
[`tests/ut/models/test_kimi_k3_pp_sp.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_kimi_k3_pp_sp.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592), [vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) | Use the
common Kimi AttnRes contract in PP/SP checks. |
|
[`tests/ut/patch/platform/test_patch_balance_schedule.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_patch_balance_schedule.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947), [vLLM
#59029](https://github.com/vllm-project/vllm/pull/59029) | Use common
queue fixtures; add eight encoder/chunked/prompt-budget cases and
empty/fully deferred queue regressions with/without KV blocks. Correct
the structural guard assertion to `if not request_queue`. Keep the
baseline AST drift check, which can skip. |
|
[`tests/ut/patch/platform/test_patch_engram_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_patch_engram_config.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Expect shared-memory default resolution for this supported fixture
configuration; no universal shared-memory default is claimed. |
|
[`tests/ut/patch/platform/test_prefix_cache_cp_patches.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_prefix_cache_cp_patches.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) |
Supply an explicit `prefill_end` allocation boundary. |
|
[`tests/ut/spec_decode/test_eagle_proposer.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/spec_decode/test_eagle_proposer.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Use the current model-config multimodal
capability interface and remove obsolete skips/branches. |
|
[`tests/ut/spec_decode/test_mla_dspark.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/spec_decode/test_mla_dspark.py)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) |
Assert DFlash context-KV callback forwarding and the shared capture
signature. |
|
[`tests/ut/test_minimax_m3_kv_block_size.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/test_minimax_m3_kv_block_size.py)
| Release-version cleanup; no new upstream behavior. | Remove only an
unused version-helper import. |
|
[`tests/ut/test_platform.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/test_platform.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Use the
current AuxOutput configuration guard for both target versions. |
|
[`tests/ut/worker/test_attn_utils_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_attn_utils_v2.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Initialize `model_state.model_config`
instead of assigning the read-only length property. |
|
[`tests/ut/worker/test_dcp_speculator_metadata_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_dcp_speculator_metadata_v2.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Assert prefill metadata over the padded
request extent. |
|
[`tests/ut/worker/test_model_runner_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58542](https://github.com/vllm-project/vllm/pull/58542) adds
`max_seq_len_np` for PP sampled-token broadcast handling. Present in
release batch state; absent from pinned main.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) replaces the
legacy PCP helper with descriptor-based `partition_batch`, restores
auxiliary hidden states with sampling outputs, and renames the DCP
preparation helper.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent.<br><br>[vLLM
#54335](https://github.com/vllm-project/vllm/pull/54335) routes
fixed-token scoring through the same unpadded logits path as prompt
logprobs, which is incompatible with Ascend lmhead-TP collective row
layouts.<br><br>[vLLM
#58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Cover release/main kwargs and PP fields, PD
graph reclassification, PCP auxiliary restoration and lmhead scoring
guards; update model-state fixtures. |
|
[`tests/ut/worker/test_model_runner_v2_encoder_decoder.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2_encoder_decoder.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Update model-state length fixtures through
model configuration. |
|
[`tests/ut/worker/test_model_runner_v2_mamba.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2_mamba.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) |
Regress prompt-tail masks for FULL/NONE graph modes and zero/three draft
tokens; verify the original mask is unchanged. |
|
[`tests/ut/worker/test_pcp_manager_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_pcp_manager_v2.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Assert
descriptor-based partitioning and hidden/aux restore layout; update
AuxOutput fixture configuration. |
|
[`tests/ut/worker/test_v2_dummy_padding.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_v2_dummy_padding.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture.<br><br>[vLLM
#58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Use the model-config-backed state/dummy
descriptor contract and retain graph-eligibility metadata. |
|
[`tests/ut/worker/v2/test_aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_aclgraph.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980), [vLLM
#58275](https://github.com/vllm-project/vllm/pull/58275) | Update
capture descriptors and dummy-batch keyword expectations. |
|
[`tests/ut/worker/v2/test_eplb_controller.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_eplb_controller.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) | Cover
release state construction versus main in-place state/communicator
reuse. |
|
[`tests/ut/worker/v2/test_eplb_load_collection_phase.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_eplb_load_collection_phase.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) | Match
each target's EPLB setup signature in load-collection fixtures. |

</details>

#### Local A3 nightly validation (2026-10-15; frozen head `444e962`)

These four model runs used **`444e962b239c3a8fc56b9255d601818e6e028b9a`
+ vLLM 0.31.0 (`db9527a`)**, which is also the restored PR head; the
deferred connector hardening is not included. Prefill 138 + Decode 136,
16 NPUs per node; original image, weights, datasets, launch and
benchmark parameters were retained, with only the second-node address
mapped from 139 to 136. All four cases exited pytest 0 on both nodes
(one passed JUnit case per node). OTT is output token/s; TPOT/TTFT are
ms.

| Case | Performance requests | OTT / required minimum | TPOT / TTFT |
AIME2025 accuracy | Result |
| --- | --- | --- | --- | --- | --- |
| Kimi-K2.6 PD | 60/60 | 355.1593 / 337.024075 | 20.5 / 3268.2 | 90%,
within 93.33±10 | Performance + accuracy passed |
| DeepSeek-V4 Flash PD-prefix | Accuracy only | N/A | N/A | 90%, within
90±10 | Accuracy passed |
| GLM-5.1 W8A8C8 128K | 256/256 | 811.7645 / 282.105876 | 39.8 / 32665.6
| No accuracy item | Performance passed |
| MiniMax-M2.7 PD-prefix | 160/160 | 711.0518 / 698.497 | 34.8 / 17438.2
| 90%, within 93.33±10 | Performance + accuracy passed |

All performance requests above, and the valid controls below, were
checked for actual 1024-token outputs, not just success flags.

**Conditional controls:** historical throughput differences triggered
only the affected performance cases against the same PR base `6d1dd70`,
without this PR, + vLLM 0.30.0 (`ced6857`). Kimi: 355.1593 vs 359.8514
OTT (**-1.30%**); the earlier 7.27% loss was not reproduced in this
comparison. TPOT was 20.5 vs 19.7ms (+0.8ms/+4.06%), and average request
latency +3.48%; a single pair does not establish latency equivalence or
a stable regression. GLM: 811.7645 vs 813.3506 OTT (**-0.20%**), TPOT
39.8 vs 39.4ms. Kimi's original random request pacing affects aggregate
OTT. No alternating reruns or unaffected-model 0.30 controls were added.

Archived evidence:
`main2main-nightly-20261013/pr18229-update-444e962-20261015/`
(`FINAL_REPORT.md`, per-node logs/JUnit, raw AISBench outputs,
token-count audit, controls and diagnostic evidence). Both nodes were
released after testing.

#### Deferred follow-up: multi-group receive-failure reporting (not
included)

The request-level receive-failure hardening change has been removed from
this upgrade PR; the branch is restored to the nightly-tested head
`444e962`. The original four nightlies already passed on this head
**without** that fix, so it is not required for these normal-path
workloads to pass.

The fault-path issue remains real: if a multi-group receive actually
fails, the existing connector can report flat block IDs and trigger the
vLLM 0.31 scheduler guard, terminating Decode EngineCore. This is
handled separately in
[#18823](https://github.com/vllm-project/vllm-ascend/pull/18823),
retaining ordinary non-HMA block-level recovery semantics. The upgrade
PR does not claim fault isolation is fixed.

Development fault-injection results belong to the deferred connector
implementation, not this restored head. No new NPU run was performed
when restoring the exact previously tested code.

#### Historical validation for head `23c8b15`

- New [E2E
workflow](https://github.com/vllm-project/vllm-ascend/actions/runs/38562748688)
and [Docs link
check](https://github.com/vllm-project/vllm-ascend/actions/runs/38562748395)
were triggered after the rebase. Results are pending; previous-head CI
does not validate this rebased head.
- A targeted [comment
command](https://github.com/vllm-project/vllm-ascend/pull/18229#issuecomment-6168149194)
requests `test_deepseek_v4_mtp_full_decode_only` against both supported
upstream targets. The [command
workflow](https://github.com/vllm-project/vllm-ascend/actions/runs/38562831465)
is queued; its actual test results remain pending.
- Ruff check and format check passed for all 72 changed Python files;
Python compilation and diff checks passed. Source-extracted execution of
both real CPP routing regressions passed against the required partition
signatures of the exact main/release refs. This validates dispatch
contracts with lightweight dependency stubs and does not replace full
pytest or NPU execution.
- Existing source-extracted scheduler regressions passed on both version
lanes: eight budget scenarios, two queue paths and empty/fully deferred
queue regressions, including negative controls.
- Local full pytest/Torch/NPU and `bash format.sh ci` remain unavailable
in this Windows environment. They require CI validation.
- Previous head `9330488` passed pre-commit, Docs and both CPU UT lanes
(main 10782 passed / 114 skipped; release 10784 passed / 112 skipped).
Its initial NPU matrix passed 41/42 shards; the remaining main A3 shard
failed in unchanged upstream teardown with `psutil.NoSuchProcess`,
before the MTP golden acceptance assertion. The consequent gate failure
and old-head rerun are historical evidence, not a result for the current
head.

#### Coverage limits and historical evidence

The PR CI selector scans `tests/ut` and `tests/e2e/pull_request`; the
new broadcast/strided token-logprob numerical tests under
`tests/e2e/nightly` are outside that selection. A5, standalone
upstream-worker and coverage-upload jobs were skipped in the inspected
run. Skips are not coverage. No dedicated packed-QK RoPE or V1
profiling-randomization standalone UT is added by this final diff.

Previous head `15f8a3d` passed
[E2E](https://github.com/vllm-project/vllm-ascend/actions/runs/38511018361)
and
[Docs](https://github.com/vllm-project/vllm-ascend/actions/runs/38511018193),
including 42 NPU jobs. Its PR-recorded CPU counts were 10574 passed /
113 skipped for verified main and 10576 passed / 111 skipped for
release, with no failures. Those counts belong to that historical head
and are not asserted as current-head counts.

- vLLM main:
https://github.com/vllm-project/vllm/commit/c4df37dfcc7f72ca41cd43801a468526ecf99a2b

---------

Signed-off-by: zhao-stack <80399320+zhao-stack@users.noreply.github.com>
Co-authored-by: shenzhao <shenzhao9@huawei.com>
tangdafu pushed a commit to tangdafu/vllm-ascend that referenced this pull request Oct 16, 2026
…tibility (vllm-project#18229)

### What this PR does / why we need it?

Upgrade the release dependency from vLLM v0.30.0 to
[v0.31.0](https://github.com/vllm-project/vllm/commit/db9527a46873454610df6dbedf79a36d6bf1a7f6)
while keeping the independently supported verified-main target at
[c4df37d](https://github.com/vllm-project/vllm/commit/c4df37dfcc7f72ca41cd43801a468526ecf99a2b).
Rebase on latest Ascend main `c2382c6`, preserving the CPP profiling
changes from #18622. The file mapping below describes the diff for
`23c8b15` against `c2382c6`.

The two targets have different APIs despite both being supported: retain
version-dependent forwarding for profiling randomization, PP batch
lengths, Mamba allocation, EPLB setup and encoder-only prefill
admission. Remove obsolete 0.30 branches only where both targets now
share the contract.

| Contract | Verified main `c4df37d` | Release v0.31.0 `db9527a` |
| --- | --- | --- |
| Profiling | Parent calls omit `randomize_inputs` | Forward the flag
through V1/V2/310P and MC2 |
| PP batch state | No `max_seq_len_np` | Preserve the field in
`AscendInputBatch` |
| Mamba allocation | Parent has no `prefill_end` | Forward checkpoint
boundary |
| EPLB setup | Update existing state/communicator | Construct state from
model and mapping |
| Non-chunked prefill | Keep encoder-only budget exception | Keep
release budget rejection |

#### Changes organized by downstream file

Upstream links identify the reason or contract being adapted. For
existing main behavior that becomes common to both targets, the change
is removal of the old release branch, not a new port of the complete
upstream implementation. File links are pinned to this PR head; [the
complete fixed
diff](https://github.com/vllm-project/vllm-ascend/compare/c2382c67aa6be12f1c822733cd47d021f61b0b23...23c8b15c2709978463490b0e8531bf5f9f27b9c1)
shows the exact edits.

<details>
<summary>Dependency markers, images and documentation (13
files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`.github/vllm-release-tag.commit`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/.github/vllm-release-tag.commit)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Advance the release marker
to `v0.31.0`; leave the verified-main marker at `c4df37d`. |
|
[`Dockerfile`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.310p`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.310p)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.310p.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.310p.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a3`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a3)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a3.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a3.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a5`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a5)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a5.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a5.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`README.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/README.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Update the release CI
support version to 0.31.0. |
|
[`README.zh.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/README.zh.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Update the Chinese release
CI support version to 0.31.0. |
|
[`docs/source/tutorials/models/DeepSeek-V4.1-Flash.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/docs/source/tutorials/models/DeepSeek-V4.1-Flash.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Use separate release and
verified-main marker commands for the two build targets. |
|
[`vllm_ascend/ops/triton/docs/v2/spec_decode/prepare_dflash_inputs.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/triton/docs/v2/spec_decode/prepare_dflash_inputs.md)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Update the documented
DFlash ABI version to 0.31.0; no new kernel behavior is introduced by
this document change. |

</details>

<details>
<summary>Model runners, graphs and platform integration (14
files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/_310p/model_runner_310p.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/model_runner_310p.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls. | Forward the profiling randomization flag through the 310P V1
override to the NPU V1 runner. |
|
[`vllm_ascend/_310p/worker/v2/model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/model_runner.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent. | Forward release-only
randomization; accept `num_active_loras` in the common prepare
signature, use the shared PCP/input-batch contract and compute complete
prompt-tail/decode-graph metadata in CPU input preparation. |
|
[`vllm_ascend/_310p/worker/v2/sampler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/sampler.py)
| [vLLM #56497](https://github.com/vllm-project/vllm/pull/56497)
introduces V2 `LogitsContext` and custom logits-processor lifecycle;
`Sampler.add_request` no longer takes `prompt_len`. | Adopt
`add_request(req_idx, sampling_params)` and remove the legacy
prompt-length argument; retain the 310P CPU generator/sampling
implementation. |
|
[`vllm_ascend/attention/attention_v1.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/attention/attention_v1.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility. | Remove the 0.30 condition around
V2 speculative-padding handling while retaining actual prefill/decode
metadata semantics. |
|
[`vllm_ascend/patch/worker/patch_v2/patch_model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_v2/patch_model_runner.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist.<br><br>[vLLM
#45635](https://github.com/vllm-project/vllm/pull/45635) moves
routed-expert output to `AuxOutputConfig`/the AuxOutput connector; [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) removes the
legacy runner initialization keyword. | Read `dcp_sharded` from cache
specs and forward it to block tables; initialize the AuxOutput connector
from `aux_output_config.enabled`; drop the legacy `attn_cg_support`
keyword. |
|
[`vllm_ascend/platform.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/platform.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635) moves
routed-expert output to `AuxOutputConfig`/the AuxOutput connector; [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) removes the
legacy runner initialization keyword. | Apply the existing V1 AuxOutput
configuration guard to both targets, removing the old 0.30 early return.
|
|
[`vllm_ascend/worker/model_runner_v1.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/model_runner_v1.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls. | Accept `randomize_inputs` in profiling/dummy execution and
enter `maybe_randomize_inputs` inside forward context when requested;
preserve the Ascend execution path. |
|
[`vllm_ascend/worker/v2/aclgraph_utils.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/aclgraph_utils.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980)
replaces the legacy PCP helper with descriptor-based `partition_batch`,
restores auxiliary hidden states with sampling outputs, and renames the
DCP preparation helper.<br><br>[vLLM
#57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Use
`prepare_dcp_local_seq_lens`; delegate model-wrapper attribute lookup to
the original model so DFlash context-KV callbacks remain accessible. |
|
[`vllm_ascend/worker/v2/input_batch.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/input_batch.py)
| [vLLM #58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture. | Always retain
prompt-tail and graph-eligibility fields and forward dummy-batch
`max_query_len`/`is_padding`; remove obsolete 0.30 branches. |
|
[`vllm_ascend/worker/v2/model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/model_runner.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58542](https://github.com/vllm-project/vllm/pull/58542) adds
`max_seq_len_np` for PP sampled-token broadcast handling. Present in
release batch state; absent from pinned main.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) replaces the
legacy PCP helper with descriptor-based `partition_batch`, restores
auxiliary hidden states with sampling outputs, and renames the DCP
preparation helper.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent.<br><br>[vLLM
#54335](https://github.com/vllm-project/vllm/pull/54335) routes
fixed-token scoring through the same unpadded logits path as prompt
logprobs, which is incompatible with Ascend lmhead-TP collective row
layouts. | Use release-only kwargs for profiling/execute and MC2 dummy
execution; forward release-only `max_seq_len_np`. After PD request
reclassification, recompute `has_prefill`, decode-graph eligibility and
uniform token count. Accept `num_active_loras` in the common prepare
signature without adding FastPrefillHelper behavior. Use
descriptor-based PCP partitioning and restore auxiliary states before
replicated drafting. Extend the lmhead-TP guard to fixed-token scoring,
tolerating workers without `token_id_scores`. |
|
[`vllm_ascend/worker/v2/model_states/mamba_hybrid.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/model_states/mamba_hybrid.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400)
requires decode-like prompt tails to use decode-row Mamba metadata for
speculative rollback. | Build a local mask `is_prefilling_np &
~prefill_runs_as_decode_np` so prompt tails are decode rows; do not
mutate the batch's original prefill mask. |
|
[`vllm_ascend/worker/v2/pcp_manager.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/pcp_manager.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980)
replaces the legacy PCP helper with descriptor-based `partition_batch`,
restores auxiliary hidden states with sampling outputs, and renames the
DCP preparation helper. | Unify descriptor-based partitioning, including
CPP profile capture after #18622, and the `(batch, hidden, aux)`
sampling restore contract; restore and trim auxiliary states together
with hidden states to the unpadded global token extent. |
|
[`vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py)
| [vLLM #58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture. | Always pass
`desc.max_query_len or desc.uniform_token_count` to autoregressive
capture. |
|
[`vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Always receive and forward
`precompute_context_kv` under the Ascend communicator/model-capture
wrappers. |

</details>

<details>
<summary>KV allocation and block tables (6 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/_310p/worker/v2/block_table.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/block_table.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist.<br><br>[vLLM
#56734](https://github.com/vllm-project/vllm/pull/56734) uses
`idx_mapping=-1` for dummy draft/padding requests and masks their
persistent block-table reads to avoid stale-row KV writes. | Unify the
constructor with `dcp_sharded`; skip negative request indices and retain
PAD slots in the CPU mapping path. Keep the existing CP=1 restriction
and persistent CPU/device buffers. |
|
[`vllm_ascend/models/glm5next/kv_cache.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/models/glm5next/kv_cache.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) adds
`prefill_end` to Mamba checkpoint allocation, including prompt-end
retention. Release has the new signature; pinned main has the old one. |
Accept `prefill_end` for call compatibility; keep one private Kpool tail
block per request. |
|
[`vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py)
| [vLLM #56734](https://github.com/vllm-project/vllm/pull/56734) uses
`idx_mapping=-1` for dummy draft/padding requests and masks their
persistent block-table reads to avoid stale-row KV writes. | Unify the
slot-mapping kernel, mask block-table loads with `is_real_req`, and emit
PAD for dummy rows; retain Ascend block/window and address-calculation
behavior. |
|
[`vllm_ascend/patch/platform/patch_kv_cache_utils.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_kv_cache_utils.py)
| The pinned `_annotate_eagle_groups` contract uses
`use_trailing_layer_fallback`, replacing the DeepSeek-V4-specific
fallback keyword; the introducing PR was not independently identified.
Fixed contracts: [release:
kv_cache_utils.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/kv_cache_utils.py#L2170).
| Always pass `use_trailing_layer_fallback=True`; retain existing Ascend
cache grouping/annotation behavior. |
|
[`vllm_ascend/patch/platform/patch_mamba_manager.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_mamba_manager.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) adds
`prefill_end` to Mamba checkpoint allocation, including prompt-end
retention. Release has the new signature; pinned main has the old one. |
Accept `prefill_end`, forwarding it only to the release parent while
retaining the existing Ascend allocation logic. |
|
[`vllm_ascend/worker/v2/block_table.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/block_table.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist. | Use one
constructor with optional per-group `dcp_sharded` validation/forwarding;
retain Ascend int32 slot mappings. |

</details>

<details>
<summary>Schedulers and profiling (5 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/core/dyntra_lb_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/dyntra_lb_scheduler.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#58259](https://github.com/vllm-project/vllm/pull/58259) define the
upstream resumable-session queue/handoff lifecycle: stopping a turn can
re-enqueue buffered continuation input.<br><br>Both targets admit
against `max_num_active_reqs` and include parked streaming sessions in
occupied slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Use KV-holder-first queue selection/re-enqueueing, the common
blocked-request helper, deferred bookkeeping and active-slot admission
including parked streams. Preserve the main-only encoder exception.
Remove secondary stop cleanup so upstream can retain/re-enqueue
resumable continuations. |
|
[`vllm_ascend/core/recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/recompute_scheduler.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>Both targets admit against
`max_num_active_reqs` and include parked streaming sessions in occupied
slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Fold the legacy queues into the common KV-holder/deferred path, count
parked streams for active admission, and preserve the version-dependent
encoder condition. Remove the redundant remote-KV waiting debug log as a
local cleanup. |
|
[`vllm_ascend/core/scheduler_profiling_chunk.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/scheduler_profiling_chunk.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>Both targets admit against
`max_num_active_reqs` and include parked streaming sessions in occupied
slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Use the common blocked-request/queue lifecycle, active admission
including parked streams, and the version-dependent encoder budget
condition. |
|
[`vllm_ascend/patch/platform/patch_balance_schedule.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_balance_schedule.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses `_handle_blocked_waiting_request`. |
Fold six obsolete 0.30 queue branches and add the release/main encoder
budget condition. Document the shared `if not request_queue`
drained-queue guard. Retain baseline balancing, running-only DP
snapshots/admission accounting and connector-snapshot cleanup; complete
upstream schedule synchronization is outside this patch. |
|
[`vllm_ascend/profiling_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/profiling_config.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947)
replaces `skipped_waiting` with `kv_holding_waiting` and
`deferred_waiting`, prioritizes KV holders, and uses
`_handle_blocked_waiting_request`. | Retarget the profiling wrapper from
the old blocked-status promotion helper to
`_handle_blocked_waiting_request`. |

</details>

<details>
<summary>EPLB state and routing (2 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/distributed/eplb/eplb_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/distributed/eplb/eplb_state.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) changes
main's EPLB setup to update existing state and reuse its communicator.
Release still creates state from `(model, model_config, mapping)`. |
After the parent's `update_mapping`, refresh Ascend replica routing
tables; consistently resolve an unspecified NPU device index to the
current device. |
|
[`vllm_ascend/worker/v2/eplb.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/eplb.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) changes
main's EPLB setup to update existing state and reuse its communicator.
Release still creates state from `(model, model_config, mapping)`. |
Create `AscendEplbState` on release with the current policy/optional
expert arguments; call the main parent to update the existing state and
communicator. |

</details>

<details>
<summary>Models and MoE operators (6 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/models/kimi_k3.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/models/kimi_k3.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592)/[vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) use
`prefix_delta` and the three-value AttnRes layer contract instead of the
old prepared-input/deferred-MLP contract. | Remove old layer/model
contracts, propagate `prefix_delta` and return the three-value AttnRes
state; preserve Ascend fused operations, DSpark aux selection and SP/PP
transport/output boundaries. |
|
[`vllm_ascend/ops/fused_moe/gate_linear.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/fused_moe/gate_linear.py)
| [vLLM #58234](https://github.com/vllm-project/vllm/pull/58234) unifies
MoE gate layers under `GateLinear` with the current linear constructor
and replaces Step3.5's dedicated FP32 gate class. | Use the current
constructor parameters (`skip_bias_add`, `quant_config`, `return_bias`)
and retain BF16-to-FP32 gate/fallback semantics. CRLF-to-LF
normalization contributes to the large line diff. |
|
[`vllm_ascend/ops/fused_moe/router/grouped_topk_router.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/fused_moe/router/grouped_topk_router.py)
| [vLLM #58880](https://github.com/vllm-project/vllm/pull/58880) removes
`routed_scaling_factor` from routing-method classification, allowing
MiniMax classification with non-unit scaling. | Stop passing
`routed_scaling_factor` to classification; downstream routing-weight
scaling is retained. |
|
[`vllm_ascend/patch/__init__.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/__init__.py)
| The release target is 0.31.0; [vLLM
#56994](https://github.com/vllm-project/vllm/pull/56994) is context for
the retained GLM reasoning patch comment, not a new model capability in
this PR. | Update only the supported-version comment for the retained
GLM reasoning patch. |
|
[`vllm_ascend/patch/worker/patch_step3p5.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_step3p5.py)
| [vLLM #58234](https://github.com/vllm-project/vllm/pull/58234) unifies
MoE gate layers under `GateLinear` with the current linear constructor
and replaces Step3.5's dedicated FP32 gate class. | Always use
`GateLinear` with FP32 parameter/output types instead of the legacy
FP32ReplicatedLinear branch. |

</details>

<details>
<summary>Token scoring and Triton helpers (2 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/patch/worker/patch_triton.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_triton.py)
| [vLLM #58651](https://github.com/vllm-project/vllm/pull/58651) uses
`triton.next_power_of_2` in packed-QK RoPE constexpr evaluation; the
Ascend replacement must also satisfy the installed Triton
JIT/constexpr-function contract. | Use a constexpr-aware
`next_power_of_2` replacement; register with `triton.constexpr_function`
when available, otherwise unwrap `tl.constexpr.value` in the fallback. |
|
[`vllm_ascend/worker/v2/sample/logprob.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/sample/logprob.py)
| [vLLM #54335](https://github.com/vllm-project/vllm/pull/54335) adds
fixed-token prompt scoring and broadcasts candidate IDs with `expand`;
the token-ID row stride can be zero or non-contiguous. | Pass
`token_ids.stride(0)` into the Triton kernel and use it for row
addressing; support broadcast stride zero and strided candidate IDs. |

</details>

BalanceScheduler scope: this PR folds the old queue branches and adapts
encoder-only admission. Its baseline DP balancing, running-only
snapshot/accounting and connector-snapshot cleanup remain; complete
scheduler-body synchronization and a strict AST equivalence requirement
are deferred. The baseline drift guard may skip and does not prove
complete upstream equivalence.

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

The default release dependency becomes vLLM v0.31.0; the verified-main
pin remains unchanged. Fixed-token prompt scoring handles
broadcast/strided IDs correctly and reports an explicit error when used
with unsupported lmhead TP. Resumable Dyntra continuations retain
upstream stop/queue behavior, and PD prompt-tail graph/Mamba metadata
follow the supported upstream contracts.

### How was this patch tested?

#### Test changes organized by file

The table describes test intent and fixture changes; it does not claim
that every changed test was selected or executed on NPU hardware.

<details>
<summary>Unit, PR E2E and nightly test mapping (37 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_compute_token_logprobs.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_compute_token_logprobs.py)
| [vLLM #54335](https://github.com/vllm-project/vllm/pull/54335) | Add
NPU numerical comparisons for broadcast stride=0 and sliced stride=8
token IDs; outside the PR CI selector. |
|
[`tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_num_nans.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_num_nans.py)
| Release-version cleanup; no new upstream behavior. | Update the
default version label to 0.31.0; no algorithm change. |
|
[`tests/e2e/pull_request/four_card/test_kimi_k3.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/four_card/test_kimi_k3.py)
| [vLLM #54222](https://github.com/vllm-project/vllm/pull/54222) | Check
equality between P-worker `remote_prefill_cached_tokens` and the
response cache count; zero hits are valid for a new prompt. |
|
[`tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Use the
common AuxOutput configuration object in V1 guard fixtures. |
|
[`tests/e2e/pull_request/one_card/test_thinking_budget.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/one_card/test_thinking_budget.py)
| [vLLM #56497](https://github.com/vllm-project/vllm/pull/56497) |
Construct `LogitsContext` with expanded mapping, input IDs, positions
and sequence bounds; call `apply(logits, ctx)`. |
|
[`tests/ut/_310p/test_model_runner_v2_310p.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/_310p/test_model_runner_v2_310p.py)
| [vLLM #56456](https://github.com/vllm-project/vllm/pull/56456), [vLLM
#56497](https://github.com/vllm-project/vllm/pull/56497) | Use the
current sampler request signature and pass the added prepare-input LoRA
argument in 310P fixtures. |
|
[`tests/ut/attention/test_mla_cp.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/attention/test_mla_cp.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Mock `get_dcp_world_size_and_rank` and
remove legacy DCP group fixture branching. |
|
[`tests/ut/core/test_circular_buffer.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_circular_buffer.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Pass `replay_boundaries=[tokens-1]` to the current cache-block API. |
|
[`tests/ut/core/test_dyntra_lb_recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_dyntra_lb_recompute_scheduler.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) | Use
the shared KV-holder/deferred queue interfaces in Dyntra/recompute
fixtures. |
|
[`tests/ut/core/test_dyntra_lb_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_dyntra_lb_scheduler.py)
| [vLLM #58259](https://github.com/vllm-project/vllm/pull/58259), [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) | Regress
synchronous/asynchronous resumable continuation handling for running,
paused and preempted requests, buffered/unbuffered input, and final
cleanup; update queue seams. |
|
[`tests/ut/core/test_profiling_chunk.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_profiling_chunk.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934), [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) | Update queue
fixtures/blocked-request helper and active-request capacity field. |
|
[`tests/ut/core/test_recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_recompute_scheduler.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) |
Remove legacy queue branching and use the shared blocked-request seam. |
|
[`tests/ut/core/test_scheduler_connector_block_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_scheduler_connector_block_state.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947), [vLLM
#59029](https://github.com/vllm-project/vllm/pull/59029) | Supply the
baseline `balance_queue` fixture; connector-snapshot cleanup itself
predates this change. |
|
[`tests/ut/distributed/eplb/test_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/distributed/eplb/test_state.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) |
Verify mapping updates refresh Ascend routing tables. |
|
[`tests/ut/distributed/kv_transfer/kv_p2p/test_remote_prefill_lifecycle.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/distributed/kv_transfer/kv_p2p/test_remote_prefill_lifecycle.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) | Use
the shared queue lifecycle rather than version-specific skipped-waiting
fixtures. |
|
[`tests/ut/kv_offload/test_preempt_offload_connector.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/kv_offload/test_preempt_offload_connector.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Always provide prefix replay and request token-count fields in the
offload fixture. |
|
[`tests/ut/models/test_deepseek_v41_release_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_deepseek_v41_release_config.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Assert obsolete flattened multimodal-prefix flags are absent after
architecture conversion. |
|
[`tests/ut/models/test_glm5next_kv_cache.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_glm5next_kv_cache.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) | Pass
the new allocation argument while checking the private-tail block
policy. |
|
[`tests/ut/models/test_kimi_k3_adapter.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_kimi_k3_adapter.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592), [vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) | Update layer
signatures/three-value returns, auxiliary output expectations and
AST-extracted fixtures. |
|
[`tests/ut/models/test_kimi_k3_pp_sp.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_kimi_k3_pp_sp.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592), [vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) | Use the
common Kimi AttnRes contract in PP/SP checks. |
|
[`tests/ut/patch/platform/test_patch_balance_schedule.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_patch_balance_schedule.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947), [vLLM
#59029](https://github.com/vllm-project/vllm/pull/59029) | Use common
queue fixtures; add eight encoder/chunked/prompt-budget cases and
empty/fully deferred queue regressions with/without KV blocks. Correct
the structural guard assertion to `if not request_queue`. Keep the
baseline AST drift check, which can skip. |
|
[`tests/ut/patch/platform/test_patch_engram_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_patch_engram_config.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Expect shared-memory default resolution for this supported fixture
configuration; no universal shared-memory default is claimed. |
|
[`tests/ut/patch/platform/test_prefix_cache_cp_patches.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_prefix_cache_cp_patches.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) |
Supply an explicit `prefill_end` allocation boundary. |
|
[`tests/ut/spec_decode/test_eagle_proposer.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/spec_decode/test_eagle_proposer.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Use the current model-config multimodal
capability interface and remove obsolete skips/branches. |
|
[`tests/ut/spec_decode/test_mla_dspark.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/spec_decode/test_mla_dspark.py)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) |
Assert DFlash context-KV callback forwarding and the shared capture
signature. |
|
[`tests/ut/test_minimax_m3_kv_block_size.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/test_minimax_m3_kv_block_size.py)
| Release-version cleanup; no new upstream behavior. | Remove only an
unused version-helper import. |
|
[`tests/ut/test_platform.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/test_platform.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Use the
current AuxOutput configuration guard for both target versions. |
|
[`tests/ut/worker/test_attn_utils_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_attn_utils_v2.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Initialize `model_state.model_config`
instead of assigning the read-only length property. |
|
[`tests/ut/worker/test_dcp_speculator_metadata_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_dcp_speculator_metadata_v2.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Assert prefill metadata over the padded
request extent. |
|
[`tests/ut/worker/test_model_runner_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58542](https://github.com/vllm-project/vllm/pull/58542) adds
`max_seq_len_np` for PP sampled-token broadcast handling. Present in
release batch state; absent from pinned main.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) replaces the
legacy PCP helper with descriptor-based `partition_batch`, restores
auxiliary hidden states with sampling outputs, and renames the DCP
preparation helper.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent.<br><br>[vLLM
#54335](https://github.com/vllm-project/vllm/pull/54335) routes
fixed-token scoring through the same unpadded logits path as prompt
logprobs, which is incompatible with Ascend lmhead-TP collective row
layouts.<br><br>[vLLM
#58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Cover release/main kwargs and PP fields, PD
graph reclassification, PCP auxiliary restoration and lmhead scoring
guards; update model-state fixtures. |
|
[`tests/ut/worker/test_model_runner_v2_encoder_decoder.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2_encoder_decoder.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Update model-state length fixtures through
model configuration. |
|
[`tests/ut/worker/test_model_runner_v2_mamba.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2_mamba.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) |
Regress prompt-tail masks for FULL/NONE graph modes and zero/three draft
tokens; verify the original mask is unchanged. |
|
[`tests/ut/worker/test_pcp_manager_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_pcp_manager_v2.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Assert
descriptor-based partitioning and hidden/aux restore layout; update
AuxOutput fixture configuration. |
|
[`tests/ut/worker/test_v2_dummy_padding.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_v2_dummy_padding.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture.<br><br>[vLLM
#58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Use the model-config-backed state/dummy
descriptor contract and retain graph-eligibility metadata. |
|
[`tests/ut/worker/v2/test_aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_aclgraph.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980), [vLLM
#58275](https://github.com/vllm-project/vllm/pull/58275) | Update
capture descriptors and dummy-batch keyword expectations. |
|
[`tests/ut/worker/v2/test_eplb_controller.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_eplb_controller.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) | Cover
release state construction versus main in-place state/communicator
reuse. |
|
[`tests/ut/worker/v2/test_eplb_load_collection_phase.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_eplb_load_collection_phase.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) | Match
each target's EPLB setup signature in load-collection fixtures. |

</details>

#### Local A3 nightly validation (2026-10-15; frozen head `444e962`)

These four model runs used **`444e962b239c3a8fc56b9255d601818e6e028b9a`
+ vLLM 0.31.0 (`db9527a`)**, which is also the restored PR head; the
deferred connector hardening is not included. Prefill 138 + Decode 136,
16 NPUs per node; original image, weights, datasets, launch and
benchmark parameters were retained, with only the second-node address
mapped from 139 to 136. All four cases exited pytest 0 on both nodes
(one passed JUnit case per node). OTT is output token/s; TPOT/TTFT are
ms.

| Case | Performance requests | OTT / required minimum | TPOT / TTFT |
AIME2025 accuracy | Result |
| --- | --- | --- | --- | --- | --- |
| Kimi-K2.6 PD | 60/60 | 355.1593 / 337.024075 | 20.5 / 3268.2 | 90%,
within 93.33±10 | Performance + accuracy passed |
| DeepSeek-V4 Flash PD-prefix | Accuracy only | N/A | N/A | 90%, within
90±10 | Accuracy passed |
| GLM-5.1 W8A8C8 128K | 256/256 | 811.7645 / 282.105876 | 39.8 / 32665.6
| No accuracy item | Performance passed |
| MiniMax-M2.7 PD-prefix | 160/160 | 711.0518 / 698.497 | 34.8 / 17438.2
| 90%, within 93.33±10 | Performance + accuracy passed |

All performance requests above, and the valid controls below, were
checked for actual 1024-token outputs, not just success flags.

**Conditional controls:** historical throughput differences triggered
only the affected performance cases against the same PR base `6d1dd70`,
without this PR, + vLLM 0.30.0 (`ced6857`). Kimi: 355.1593 vs 359.8514
OTT (**-1.30%**); the earlier 7.27% loss was not reproduced in this
comparison. TPOT was 20.5 vs 19.7ms (+0.8ms/+4.06%), and average request
latency +3.48%; a single pair does not establish latency equivalence or
a stable regression. GLM: 811.7645 vs 813.3506 OTT (**-0.20%**), TPOT
39.8 vs 39.4ms. Kimi's original random request pacing affects aggregate
OTT. No alternating reruns or unaffected-model 0.30 controls were added.

Archived evidence:
`main2main-nightly-20261013/pr18229-update-444e962-20261015/`
(`FINAL_REPORT.md`, per-node logs/JUnit, raw AISBench outputs,
token-count audit, controls and diagnostic evidence). Both nodes were
released after testing.

#### Deferred follow-up: multi-group receive-failure reporting (not
included)

The request-level receive-failure hardening change has been removed from
this upgrade PR; the branch is restored to the nightly-tested head
`444e962`. The original four nightlies already passed on this head
**without** that fix, so it is not required for these normal-path
workloads to pass.

The fault-path issue remains real: if a multi-group receive actually
fails, the existing connector can report flat block IDs and trigger the
vLLM 0.31 scheduler guard, terminating Decode EngineCore. This is
handled separately in
[#18823](https://github.com/vllm-project/vllm-ascend/pull/18823),
retaining ordinary non-HMA block-level recovery semantics. The upgrade
PR does not claim fault isolation is fixed.

Development fault-injection results belong to the deferred connector
implementation, not this restored head. No new NPU run was performed
when restoring the exact previously tested code.

#### Historical validation for head `23c8b15`

- New [E2E
workflow](https://github.com/vllm-project/vllm-ascend/actions/runs/38562748688)
and [Docs link
check](https://github.com/vllm-project/vllm-ascend/actions/runs/38562748395)
were triggered after the rebase. Results are pending; previous-head CI
does not validate this rebased head.
- A targeted [comment
command](https://github.com/vllm-project/vllm-ascend/pull/18229#issuecomment-6168149194)
requests `test_deepseek_v4_mtp_full_decode_only` against both supported
upstream targets. The [command
workflow](https://github.com/vllm-project/vllm-ascend/actions/runs/38562831465)
is queued; its actual test results remain pending.
- Ruff check and format check passed for all 72 changed Python files;
Python compilation and diff checks passed. Source-extracted execution of
both real CPP routing regressions passed against the required partition
signatures of the exact main/release refs. This validates dispatch
contracts with lightweight dependency stubs and does not replace full
pytest or NPU execution.
- Existing source-extracted scheduler regressions passed on both version
lanes: eight budget scenarios, two queue paths and empty/fully deferred
queue regressions, including negative controls.
- Local full pytest/Torch/NPU and `bash format.sh ci` remain unavailable
in this Windows environment. They require CI validation.
- Previous head `9330488` passed pre-commit, Docs and both CPU UT lanes
(main 10782 passed / 114 skipped; release 10784 passed / 112 skipped).
Its initial NPU matrix passed 41/42 shards; the remaining main A3 shard
failed in unchanged upstream teardown with `psutil.NoSuchProcess`,
before the MTP golden acceptance assertion. The consequent gate failure
and old-head rerun are historical evidence, not a result for the current
head.

#### Coverage limits and historical evidence

The PR CI selector scans `tests/ut` and `tests/e2e/pull_request`; the
new broadcast/strided token-logprob numerical tests under
`tests/e2e/nightly` are outside that selection. A5, standalone
upstream-worker and coverage-upload jobs were skipped in the inspected
run. Skips are not coverage. No dedicated packed-QK RoPE or V1
profiling-randomization standalone UT is added by this final diff.

Previous head `15f8a3d` passed
[E2E](https://github.com/vllm-project/vllm-ascend/actions/runs/38511018361)
and
[Docs](https://github.com/vllm-project/vllm-ascend/actions/runs/38511018193),
including 42 NPU jobs. Its PR-recorded CPU counts were 10574 passed /
113 skipped for verified main and 10576 passed / 111 skipped for
release, with no failures. Those counts belong to that historical head
and are not asserted as current-head counts.

- vLLM main:
https://github.com/vllm-project/vllm/commit/c4df37dfcc7f72ca41cd43801a468526ecf99a2b

---------

Signed-off-by: zhao-stack <80399320+zhao-stack@users.noreply.github.com>
Co-authored-by: shenzhao <shenzhao9@huawei.com>
michael-gpu pushed a commit to practical-inference/vllm-ampere-extended that referenced this pull request Oct 20, 2026
Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>
tangdafu pushed a commit to tangdafu/vllm-ascend that referenced this pull request Oct 20, 2026
### What this PR does / why we need it?

The PR advances the main2main lane from vLLM v0.30.0 (tag commit
`ced6857afa0ea7b2e3f0846a62e1394e90f15607`) to vLLM main
`8cc9aa5ad350f6f80cf3bebb298d410803ff75a9` (installed as `0.30.0.dev`),
adapting vllm-ascend to every upstream change landed after the v0.30.0
release tag. The v0.30.0 lane stays supported: each upstream divergence
is selected with `vllm_version_is("0.30.0")`, so the release keeps the
legacy API and main takes the new one.

| Files | Upstream vLLM change (why it breaks vllm-ascend) | vllm-ascend
adaptation |

|-------|--------------------------------------------------|------------------------|
| `.github/vllm-main-verified.commit` | — (main-lane pin only) |
Verified main commit bumped `ced6857` (v0.30.0) -> `8cc9aa5` |
| `hidden_out` | — (stray artifact) | Accidental empty file created by a
shell redirect in `fe6d042a0`; no functional content (should be removed)
|
| `tests/e2e/pull_request/four_card/test_kimi_k3.py` |
[vllm#54222](vllm-project/vllm#54222) makes the
decode worker report the prefill worker's prefix-cache hits via
`kv_transfer_params["remote_prefill_cached_tokens"]` instead of its own
~100% transferred-KV hit rate, so the existing `cached_tokens > 0`
assertion fails on a fresh 129-token prompt | On main assert the P-side
hit count propagates to the decode output; keep `cached_tokens > 0` only
on v0.30.0 |
| `tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py`
| [vllm#45635](vllm-project/vllm#45635) moved
`enable_return_routed_experts` from `ModelConfig` to
`VllmConfig.aux_output_config`;
`test_stateful_handoff_preserves_decode_graph` mocks only
`model_config`, so `_sync_metadata_across_dp` raises for the dp_size=4
cases | Add `aux_output_config` to the mock `VllmConfig` on main |
| `tests/e2e/pull_request/one_card/test_thinking_budget.py` |
[vllm#56497](vllm-project/vllm#56497) changed
`ThinkingBudgetState.apply` from six positional args to `(logits, ctx:
LogitsContext)`, so the helper fails with a signature/TypeError | Build
`LogitsContext` and call `apply(logits, ctx)` on main; keep the six-arg
call on v0.30.0 |
| `tests/e2e/pull_request/two_card/spec_decode/test_spec_decode.py` |
[vllm#57934](vllm-project/vllm#57934) added a
`VllmConfig` validation rejecting DFlash candidate-head drafts
(`DFlash2DraftModel`/`LiLiCorrDraftModel`) under Model Runner V1;
`test_dflash2_acceptance` runs the V1 path, so config creation fails |
Skip the V1 variant on main (V2 covered by
`test_dflash2_v2_acceptance`); v0.30.0 still runs it |
| `tests/ut/_310p/test_model_runner_v2_310p.py` |
[vllm#56456](vllm-project/vllm#56456) added the
trailing `num_active_loras` to `prepare_inputs`;
[vllm#56497](vllm-project/vllm#56497) dropped
`prompt_len` from `Sampler.add_request` | Version-aware `_add_request`
helper (no `prompt_len` on main) and `prepare_inputs` args
(`num_active_loras` on main) |
| `tests/ut/attention/test_mla_cp.py` | vLLM main resolves the DCP group
through `get_dcp_world_size_and_rank` and computes LSE capability inside
`__new__`, so patching `get_dcp_group` no longer intercepts it | Patch
`get_dcp_world_size_and_rank` on main; keep `get_dcp_group` on v0.30.0 |
| `tests/ut/core/test_recompute_scheduler_short_request_first.py` | vLLM
main reads `ModelConfig.runner_type` in `supports_multimodal_inputs`,
but the patched `__post_init__` no longer initializes it | Set
`model_config.runner_type = "generate"` |
| `tests/ut/distributed/eplb/test_state.py` | vLLM main renamed
`EplbState.cuda_device_index` to `device_index` and `add_model` passes
`device_index=...`, so the old attribute is never set | Assert
`cuda_device_index` on v0.30.0 / `device_index` on main |
|
`tests/ut/distributed/kv_transfer/sparse_kv_offload/test_sparse_kv_offload_manager.py`
| [vllm#56723](vllm-project/vllm#56723) made
`UniformTypeKVCacheSpecs` read `dcp_sharded` from each member spec | Add
`dcp_sharded = False` to `_FakeKVCacheSpec` |
| `tests/ut/kv_offload/test_mooncake_layerwise_connector.py` | Same
[vllm#56723](vllm-project/vllm#56723) per-spec
`dcp_sharded` read | Add `dcp_sharded=False` to the
`UniformTypeKVCacheSpecs` member spec |
| `tests/ut/kv_offload/test_preempt_offload_connector.py` | vLLM main
tracks prefix-replay bookkeeping on the scheduler
(`prefix_replay_tokens`, `request.num_tokens`), which the mock scheduler
does not provide | Initialize `scheduler.prefix_replay_tokens` (and
`request.num_tokens`) on main |
| `tests/ut/models/test_deepseek_v41_release_config.py` |
[vllm#56554](vllm-project/vllm#56554) moved the
mm-prefix decision to the model-arch config converter, so the flattened
released config no longer carries
`is_mm_prefix_lm`/`mm_prefix_clamp_sliding_window` | Version-gate those
assertions (present on v0.30.0, absent on main) and normalize the config
|
| `tests/ut/models/test_kimi_k3_adapter.py` |
[vllm#50592](vllm-project/vllm#50592) /
[vllm#50593](vllm-project/vllm#50593) reworked
the Kimi-K3 AttnResidual API (prefix_delta threading, fused norms) |
Adjust adapter expectations to the `prefix_delta` AttnResidual form on
main |
| `tests/ut/ops/test_gdn_attn_builder.py` | vLLM main reads
`use_v2_model_runner` from the `VllmConfig` built in the test | Add
`use_v2_model_runner=False` to the mock config |
| `tests/ut/patch/platform/test_patch_engram_config.py` | vLLM main
resolves the Engram `dp_shared_memory` default to `True` when the caller
leaves it unset (v0.30.0 keeps it `False`) | Assert the
version-dependent default |
| `tests/ut/patch/platform/test_patch_kv_cache_coordinator.py` |
Upstream `KVCacheCoordinator.__init__` sets `group_block_sizes` and
`SimpleCPUOffloadScheduler` reads it; `AscendHybridKVCacheCoordinator`
builds managers itself, so the attribute is missing (`AttributeError`) |
Cover the new `AscendHybridKVCacheCoordinator.group_block_sizes`
exposure |
| `tests/ut/patch/platform/test_patch_mamba_block_aligned_split.py` |
vLLM main added the `mamba_shared_prefix_checkpoint` scheduler kwarg
read by the patched path | Add `mamba_shared_prefix_checkpoint=False` to
the scheduler mock |
| `tests/ut/spec_decode/test_eagle_proposer.py` | vLLM main removed
`MultiModalRegistry.supports_multimodal_inputs` and reads
`ModelConfig.supports_multimodal_inputs` instead, so patching the
removed method fails | `_supports_multimodal_inputs_patch` helper: patch
the registry method on v0.30.0, set `ModelConfig` flags on main |
| `tests/ut/spec_decode/test_mla_dspark.py` |
[vllm#57632](vllm-project/vllm#57632) inserted
`precompute_context_kv` before `progress_bar_desc` in the DFlash capture
path | Version-aware DFlash `capture` kwargs |
| `tests/ut/test_platform.py` |
[vllm#45635](vllm-project/vllm#45635) introduces
`VllmConfig.aux_output_config`, read by the Ascend platform validator |
Add `aux_output_config` (`None` on v0.30.0, disabled mock on main) to
the mocked `VllmConfig` |
| `tests/ut/worker/test_attn_utils_v2.py` |
[vllm#58149](vllm-project/vllm#58149) made
`max_model_len` a read-only property backed by `model_config`, so
assigning the instance attribute raises `AttributeError` | Set
`model_config.max_model_len` instead of the instance attribute on main |
| `tests/ut/worker/test_dcp_speculator_metadata_v2.py` |
[vllm#56723](vllm-project/vllm#56723) reads
`speculator.dcp_size` and `builder.supports_update_block_table`, and
slices `is_prefilling` to the padded request count | Fixture sets
`spec.dcp_size`/`supports_update_block_table`; version-aware
`is_prefilling` expectation |
| `tests/ut/worker/test_model_runner_v2.py` |
[vllm#58149](vllm-project/vllm#58149)
`max_model_len` property;
[vllm#56456](vllm-project/vllm#56456) added
`num_active_loras` | `max_model_len` workaround; pass the trailing
`num_active_loras` on main; aux-hidden-state restore assertions |
| `tests/ut/worker/test_model_runner_v2_kv_cache.py` |
[vllm#45635](vllm-project/vllm#45635) adds an
aux-output branch; `MagicMock` makes `aux_output_config.enabled` truthy
| Disable `aux_output_config.enabled` so the KV-connector path is
exercised |
| `tests/ut/worker/test_model_runner_v2_mamba.py` | vLLM main
split/reorganized `prepare_inputs` so the Ascend override is now
`_prepare_inputs_impl` | AST test now looks up `_prepare_inputs_impl` |
| `tests/ut/worker/test_pcp_manager_v2.py` |
[vllm#57980](vllm-project/vllm#57980) replaced
`padded_num_tokens`/`padded_num_reqs` with a `BatchExecutionDescriptor`
and dropped `routed_experts`; vLLM main renamed the DCP helper |
`_partition_batch` helper using `BatchExecutionDescriptor`; drop
`routed_experts`; `_prepare_dcp_local_seq_lens` rename |
| `tests/ut/worker/v2/test_aclgraph.py` |
[vllm#58275](vllm-project/vllm#58275) reads
`max_query_len`/`uniform_token_count` off the descriptor when preparing
capture inputs | Version-aware descriptor and `capture` kwargs |
| `vllm_ascend/_310p/attention/attention_v1.py` |
[vllm#53175](vllm-project/vllm#53175) added an
optional `kv_cache_spec` to `get_supported_kernel_block_sizes`, so the
zero-arg Ascend override raises `TypeError` when loading the MTP drafter
| Apply the `@supports_kernel_block_spec` decorator |
| `vllm_ascend/_310p/worker/v2/block_table.py` |
[vllm#56723](vllm-project/vllm#56723) passes a
per-group `dcp_sharded` to `BlockTables.__init__` (unexpected kwarg);
[vllm#56734](vllm-project/vllm#56734) sets
`idx_mapping == -1` for dummy draft steps, so the native 310P path
addresses block-table row `-1` | Version-split `__init__` accepting
`dcp_sharded`; skip negative `req_idx` in the 310P native slot-mapping
path |
| `vllm_ascend/_310p/worker/v2/model_runner.py` |
[vllm#56456](vllm-project/vllm#56456) added the
trailing `num_active_loras` positional to
`GPUModelRunner.prepare_inputs`, so the 310P override no longer matches
| Version-split `prepare_inputs`, accepting `num_active_loras` on main |
| `vllm_ascend/_310p/worker/v2/sampler.py` |
[vllm#56497](vllm-project/vllm#56497) dropped
`prompt_len` from `Sampler.add_request`, so
`GPUModelRunner.add_requests` fails with a missing/extra positional |
Version-split `add_request`; shared body moved to `_add_request_impl` |
| `vllm_ascend/attention/attention_v1.py` |
[vllm#53175](vllm-project/vllm#53175)
`kv_cache_spec` signature break; and on main the speculative-decode
request metadata stays at the real request extent, so a padded
FULL-graph decode makes FIA reject the TND replay (`queryT !=
last(actualSequenceLengthQ)`, error 561002) |
`@supports_kernel_block_spec`; on main append the padded tail to
`actual_seq_lengths_q` for V2 multi-token decode, whole block behind
`vllm_version_is("0.30.0")` |
| `vllm_ascend/attention/dsa_v1.py` |
[vllm#53175](vllm-project/vllm#53175)
`get_supported_kernel_block_sizes(kv_cache_spec)` signature break |
Apply the decorator to the 6 DSA backends |
| `vllm_ascend/attention/fa3_v1.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/indexer.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/indexer_kpool.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator to both indexer backends |
| `vllm_ascend/attention/mla_v1.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/sfa_v1.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator |
| `vllm_ascend/attention/utils.py` |
[vllm#53175](vllm-project/vllm#53175) made
`get_supported_kernel_block_sizes` accept `kv_cache_spec` and made
`_largest_kernel_block_within` pass it; Ascend's zero-arg staticmethods
raise `TypeError` | New `supports_kernel_block_spec` decorator that
accepts/ignores `kv_cache_spec` on main and keeps the zero-arg static
method on v0.30.0 |
| `vllm_ascend/distributed/eplb/state.py` | vLLM main renamed
`EplbState.cuda_device_index` to `device_index`, so
`AscendEPLBController.prepare_load` raises `AttributeError:
'AscendEplbState' object has no attribute 'cuda_device_index'` | Set
`cuda_device_index` on v0.30.0 / `device_index` on main |
| `vllm_ascend/lora/punica_npu.py` |
[vllm#53555](vllm-project/vllm#53555) added the
abstract `apply_lora_full_linear` (sequence classification), so
`PunicaWrapperNPU` can no longer be instantiated (`TypeError: Can't
instantiate abstract class`) | Implement the per-adapter einsum fallback
for the classification head (skips the half/bf16-only BGMV shrink
kernel) |
| `vllm_ascend/models/kimi_k3.py` |
[vllm#50592](vllm-project/vllm#50592) /
[vllm#50593](vllm-project/vllm#50593):
`KimiDecoderLayer.forward` threads `prefix_delta`,
`forward_attn_residual` returns a 3-tuple and the fused norm path is
used, so `AscendKimiDecoderLayer.forward_attn_residual` fails with a
signature/unpack error | Version-gate AttnResidual: fused-norm
`_apply_ascend_attn_res`, `forward_attn_residual` threading
`prefix_delta` and returning the 3-tuple on main; v0.30.0 keeps the
2-tuple |
| `vllm_ascend/models/minimax_m3/msa_m3.py` |
[vllm#53175](vllm-project/vllm#53175) signature
break | Apply the decorator to the MiniMax-M3 indexer/sparse backends |
| `vllm_ascend/ops/fused_moe/gate_linear.py` |
[vllm#58234](vllm-project/vllm#58234) extended
`GateLinear.__init__` with `skip_bias_add`/`quant_config`/`return_bias`
and routed qwen3_moe (and others) through it, so loading Qwen3 MoE fails
with `Gate AscendGateLinear.__init__` (unexpected kwargs) |
Version-split `AscendGateLinear.__init__` (main forwards the new args,
still forcing FP32) and `forward` returns the single output so
`return_bias` is honored |
| `vllm_ascend/ops/fused_moe/router/grouped_topk_router.py` |
[vllm#58880](vllm-project/vllm#58880) removed
`routed_scaling_factor` from the fused MiniMax2 routing config, so
passing it raises an unexpected-kwarg error on main | Pass
`routed_scaling_factor` only on v0.30.0 |
| `vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py` |
[vllm#56734](vllm-project/vllm#56734) marks
dummy draft decode runs with `idx_mapping == -1` and skips the
block-table read; the forked Ascend kernel used the raw index and
aborted with an invalid GM address (`error code 507035`) | Main-only
guarded kernel: skip block-table reads and emit `PAD_SLOT_ID` for
`idx_mapping == -1`; v0.30.0 keeps the original kernel |
| `vllm_ascend/patch/platform/patch_kv_cache_coordinator.py` | Upstream
`KVCacheCoordinator.__init__` sets `group_block_sizes`, which
`SimpleCPUOffloadScheduler` reads; the Ascend subclass constructs
managers itself and never sets it, so startup fails with
`AttributeError: 'AscendHybridKVCacheCoordinator' object has no
attribute 'group_block_sizes'` | Expose `group_block_sizes` after
building the managers (fixes vllm-project#17831) |
| `vllm_ascend/patch/platform/patch_kv_cache_utils.py` |
[vllm#55390](vllm-project/vllm#55390) renamed
`_annotate_eagle_groups`'s positional-fallback param from
`use_deepseek_v4_fallback` to `use_trailing_layer_fallback`, so the
Ascend packed-KV-cache-group patch fails with an unexpected-keyword
`TypeError` | Pass the correct param per version |
| `vllm_ascend/patch/worker/patch_step3p5.py` | vLLM main replaced
`FP32ReplicatedLinear` with `GateLinear` inside `step3p5.FusedMoEBlock`,
so the gate import/construction no longer exists on main | Version-gate
the import and `_patched_fused_moe_block_init` gate construction
(`FP32ReplicatedLinear` vs `GateLinear`) |
| `vllm_ascend/patch/worker/patch_triton.py` |
[vllm#58651](vllm-project/vllm#58651) added
`packed_qk_rope.py`, whose kernel calls
`triton.next_power_of_2(rotary_dim)` with a `tl.constexpr`; the injected
host helper calls `(n-1).bit_length()`, so the Kimi vision tower's
`profile_run` aborts with `AttributeError('constexpr' object has no
attribute 'bit_length')` | On main wrap `next_power_of_2` to unwrap
`tl.constexpr` before delegating |
| `vllm_ascend/patch/worker/patch_v2/patch_model_runner.py` |
[vllm#45635](vllm-project/vllm#45635) moved
routed-experts output to the AuxOutput connector (wired in
`GPUModelRunner.initialize_kv_cache`); the Ascend fork predates it, so
the worker emits no `aux_output_connector_output` and the scheduler
raises `AssertionError: auxiliary output worker output is missing`.
[vllm#56723](vllm-project/vllm#56723) added
`dcp_sharded` and dropped `attn_cg_support` | Build
`get_aux_output_connector` when enabled (main); collect/forward
per-group `dcp_sharded`; drop `attn_cg_support` on main |
| `vllm_ascend/platform.py` |
[vllm#45635](vllm-project/vllm#45635) requires
Model Runner V2 for AuxOutput; Ascend is out-of-tree, so the upstream
guard is skipped and an MRV1 run fails with the same missing-aux-output
assertion | Add `_validate_aux_output_config`: reject
`aux_output_config.enabled` under Model Runner V1 |
| `vllm_ascend/worker/v2/aclgraph_utils.py` |
[vllm#57980](vllm-project/vllm#57980) renamed
`maybe_prepare_dcp_local_seq_lens` to `prepare_dcp_local_seq_lens` and
moved the `cp_size > 1` guard to callers;
[vllm#57632](vllm-project/vllm#57632) reaches
model methods through `ModelWithContext` during capture | Alias both DCP
helpers and guard `cp_size > 1`; add `ModelWithContext.__getattr__`
forwarding to the wrapped model on main |
| `vllm_ascend/worker/v2/block_table.py` |
[vllm#56723](vllm-project/vllm#56723) passes a
per-group `dcp_sharded` list to `BlockTables.__init__`, so engine
startup fails with `TypeError: AscendBlockTables.__init__() got an
unexpected keyword argument 'dcp_sharded'` | Version-split `__init__`
accepting and forwarding `dcp_sharded` on main |
| `vllm_ascend/worker/v2/input_batch.py` |
[vllm#57270](vllm-project/vllm#57270) added
`is_padding` to `InputBatch.make_dummy` to route profiling dummy tokens
to MoE experts | `make_dummy` accepts and forwards `is_padding` on main
|
| `vllm_ascend/worker/v2/model_runner.py` |
[vllm#56456](vllm-project/vllm#56456) added
`num_active_loras`;
[vllm#57980](vllm-project/vllm#57980) dropped
the module-level `maybe_partition_pcp_batch` and folded the aux-hidden
restore into `restore_for_sampling`, so the replicated-PCP fast path
leaves `aux_hidden_states` in the PCP-local layout and the draft copy
fails (`self [5, 4096] vs src [3, 4096]`) | Split
`prepare_inputs`/`_prepare_inputs_impl` with `num_active_loras` on main;
call `pcp_manager.partition_batch(batch, desc)`; restore PCP-local
`aux_hidden_states` on main |
| `vllm_ascend/worker/v2/pcp_manager.py` |
[vllm#57980](vllm-project/vllm#57980) replaced
`padded_num_tokens` with a `BatchExecutionDescriptor` and threads
`aux_hidden_states` through `restore_for_sampling`;
[vllm#56456](vllm-project/vllm#56456) forwards
`padded_num_reqs` | Version-split `partition_batch` (descriptor) and
`restore_for_sampling` (`aux_hidden_states`); forward `padded_num_reqs`
|
| `vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py` |
[vllm#58275](vllm-project/vllm#58275) makes
draft capture pass `max_query_len`; the Ascend override left it
unbounded (`num_tokens`), diverging from upstream for mixed FULL graphs
| Forward `max_query_len=desc.max_query_len or desc.uniform_token_count`
on main |
| `vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py` |
[vllm#57632](vllm-project/vllm#57632) added a
trailing `precompute_context_kv` to `DFlashCudaGraphManager.capture`, so
the Ascend override's positional `super().capture()` call shifts |
Version-split `capture`, accepting and forwarding
`precompute_context_kv` on main (passed by keyword) |

> **Notes**
> - `hidden_out` is an accidental empty file introduced by a shell
redirect in `fe6d042a0`; remove it before merging.
> - The branch commits `cacf5b7d5` (`model_runner_v1.py` routed-experts)
and `f763bc65e` (workflow edits) were reverted later in the branch, so
they do not appear in the net PR diff and are omitted.

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

### How was this patch tested?


- vLLM main:
vllm-project/vllm@ced6857

---------

Signed-off-by: hfadzxy <starmoon_zhang@163.com>
Signed-off-by: wxsIcey <1790571317@qq.com>
Co-authored-by: wxsIcey <1790571317@qq.com>
tangdafu pushed a commit to tangdafu/vllm-ascend that referenced this pull request Oct 20, 2026
…tibility (vllm-project#18229)

### What this PR does / why we need it?

Upgrade the release dependency from vLLM v0.30.0 to
[v0.31.0](https://github.com/vllm-project/vllm/commit/db9527a46873454610df6dbedf79a36d6bf1a7f6)
while keeping the independently supported verified-main target at
[c4df37d](https://github.com/vllm-project/vllm/commit/c4df37dfcc7f72ca41cd43801a468526ecf99a2b).
Rebase on latest Ascend main `c2382c6`, preserving the CPP profiling
changes from #18622. The file mapping below describes the diff for
`23c8b15` against `c2382c6`.

The two targets have different APIs despite both being supported: retain
version-dependent forwarding for profiling randomization, PP batch
lengths, Mamba allocation, EPLB setup and encoder-only prefill
admission. Remove obsolete 0.30 branches only where both targets now
share the contract.

| Contract | Verified main `c4df37d` | Release v0.31.0 `db9527a` |
| --- | --- | --- |
| Profiling | Parent calls omit `randomize_inputs` | Forward the flag
through V1/V2/310P and MC2 |
| PP batch state | No `max_seq_len_np` | Preserve the field in
`AscendInputBatch` |
| Mamba allocation | Parent has no `prefill_end` | Forward checkpoint
boundary |
| EPLB setup | Update existing state/communicator | Construct state from
model and mapping |
| Non-chunked prefill | Keep encoder-only budget exception | Keep
release budget rejection |

#### Changes organized by downstream file

Upstream links identify the reason or contract being adapted. For
existing main behavior that becomes common to both targets, the change
is removal of the old release branch, not a new port of the complete
upstream implementation. File links are pinned to this PR head; [the
complete fixed
diff](https://github.com/vllm-project/vllm-ascend/compare/c2382c67aa6be12f1c822733cd47d021f61b0b23...23c8b15c2709978463490b0e8531bf5f9f27b9c1)
shows the exact edits.

<details>
<summary>Dependency markers, images and documentation (13
files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`.github/vllm-release-tag.commit`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/.github/vllm-release-tag.commit)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Advance the release marker
to `v0.31.0`; leave the verified-main marker at `c4df37d`. |
|
[`Dockerfile`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.310p`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.310p)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.310p.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.310p.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a3`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a3)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a3.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a3.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a5`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a5)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.a5.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.a5.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`Dockerfile.openEuler`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/Dockerfile.openEuler)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Set the release `VLLM_TAG`
default to `v0.31.0`; existing built images are not changed by this
default. |
|
[`README.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/README.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Update the release CI
support version to 0.31.0. |
|
[`README.zh.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/README.zh.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Update the Chinese release
CI support version to 0.31.0. |
|
[`docs/source/tutorials/models/DeepSeek-V4.1-Flash.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/docs/source/tutorials/models/DeepSeek-V4.1-Flash.md)
| Release target advances to
[v0.31.0](https://github.com/vllm-project/vllm/releases/tag/v0.31.0);
verified main remains pinned independently. | Use separate release and
verified-main marker commands for the two build targets. |
|
[`vllm_ascend/ops/triton/docs/v2/spec_decode/prepare_dflash_inputs.md`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/triton/docs/v2/spec_decode/prepare_dflash_inputs.md)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Update the documented
DFlash ABI version to 0.31.0; no new kernel behavior is introduced by
this document change. |

</details>

<details>
<summary>Model runners, graphs and platform integration (14
files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/_310p/model_runner_310p.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/model_runner_310p.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls. | Forward the profiling randomization flag through the 310P V1
override to the NPU V1 runner. |
|
[`vllm_ascend/_310p/worker/v2/model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/model_runner.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent. | Forward release-only
randomization; accept `num_active_loras` in the common prepare
signature, use the shared PCP/input-batch contract and compute complete
prompt-tail/decode-graph metadata in CPU input preparation. |
|
[`vllm_ascend/_310p/worker/v2/sampler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/sampler.py)
| [vLLM #56497](https://github.com/vllm-project/vllm/pull/56497)
introduces V2 `LogitsContext` and custom logits-processor lifecycle;
`Sampler.add_request` no longer takes `prompt_len`. | Adopt
`add_request(req_idx, sampling_params)` and remove the legacy
prompt-length argument; retain the 310P CPU generator/sampling
implementation. |
|
[`vllm_ascend/attention/attention_v1.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/attention/attention_v1.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility. | Remove the 0.30 condition around
V2 speculative-padding handling while retaining actual prefill/decode
metadata semantics. |
|
[`vllm_ascend/patch/worker/patch_v2/patch_model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_v2/patch_model_runner.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist.<br><br>[vLLM
#45635](https://github.com/vllm-project/vllm/pull/45635) moves
routed-expert output to `AuxOutputConfig`/the AuxOutput connector; [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) removes the
legacy runner initialization keyword. | Read `dcp_sharded` from cache
specs and forward it to block tables; initialize the AuxOutput connector
from `aux_output_config.enabled`; drop the legacy `attn_cg_support`
keyword. |
|
[`vllm_ascend/platform.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/platform.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635) moves
routed-expert output to `AuxOutputConfig`/the AuxOutput connector; [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) removes the
legacy runner initialization keyword. | Apply the existing V1 AuxOutput
configuration guard to both targets, removing the old 0.30 early return.
|
|
[`vllm_ascend/worker/model_runner_v1.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/model_runner_v1.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls. | Accept `randomize_inputs` in profiling/dummy execution and
enter `maybe_randomize_inputs` inside forward context when requested;
preserve the Ascend execution path. |
|
[`vllm_ascend/worker/v2/aclgraph_utils.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/aclgraph_utils.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980)
replaces the legacy PCP helper with descriptor-based `partition_batch`,
restores auxiliary hidden states with sampling outputs, and renames the
DCP preparation helper.<br><br>[vLLM
#57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Use
`prepare_dcp_local_seq_lens`; delegate model-wrapper attribute lookup to
the original model so DFlash context-KV callbacks remain accessible. |
|
[`vllm_ascend/worker/v2/input_batch.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/input_batch.py)
| [vLLM #58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture. | Always retain
prompt-tail and graph-eligibility fields and forward dummy-batch
`max_query_len`/`is_padding`; remove obsolete 0.30 branches. |
|
[`vllm_ascend/worker/v2/model_runner.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/model_runner.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58542](https://github.com/vllm-project/vllm/pull/58542) adds
`max_seq_len_np` for PP sampled-token broadcast handling. Present in
release batch state; absent from pinned main.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) replaces the
legacy PCP helper with descriptor-based `partition_batch`, restores
auxiliary hidden states with sampling outputs, and renames the DCP
preparation helper.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent.<br><br>[vLLM
#54335](https://github.com/vllm-project/vllm/pull/54335) routes
fixed-token scoring through the same unpadded logits path as prompt
logprobs, which is incompatible with Ascend lmhead-TP collective row
layouts. | Use release-only kwargs for profiling/execute and MC2 dummy
execution; forward release-only `max_seq_len_np`. After PD request
reclassification, recompute `has_prefill`, decode-graph eligibility and
uniform token count. Accept `num_active_loras` in the common prepare
signature without adding FastPrefillHelper behavior. Use
descriptor-based PCP partitioning and restore auxiliary states before
replicated drafting. Extend the lmhead-TP guard to fixed-token scoring,
tolerating workers without `token_id_scores`. |
|
[`vllm_ascend/worker/v2/model_states/mamba_hybrid.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/model_states/mamba_hybrid.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400)
requires decode-like prompt tails to use decode-row Mamba metadata for
speculative rollback. | Build a local mask `is_prefilling_np &
~prefill_runs_as_decode_np` so prompt tails are decode rows; do not
mutate the batch's original prefill mask. |
|
[`vllm_ascend/worker/v2/pcp_manager.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/pcp_manager.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980)
replaces the legacy PCP helper with descriptor-based `partition_batch`,
restores auxiliary hidden states with sampling outputs, and renames the
DCP preparation helper. | Unify descriptor-based partitioning, including
CPP profile capture after #18622, and the `(batch, hidden, aux)`
sampling restore contract; restore and trim auxiliary states together
with hidden states to the unpadded global token extent. |
|
[`vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/spec_decode/autoregressive/aclgraph.py)
| [vLLM #58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture. | Always pass
`desc.max_query_len or desc.uniform_token_count` to autoregressive
capture. |
|
[`vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) passes
`precompute_context_kv` into DFlash FULL-graph capture; wrapped draft
models must expose the underlying callback. | Always receive and forward
`precompute_context_kv` under the Ascend communicator/model-capture
wrappers. |

</details>

<details>
<summary>KV allocation and block tables (6 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/_310p/worker/v2/block_table.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/_310p/worker/v2/block_table.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist.<br><br>[vLLM
#56734](https://github.com/vllm-project/vllm/pull/56734) uses
`idx_mapping=-1` for dummy draft/padding requests and masks their
persistent block-table reads to avoid stale-row KV writes. | Unify the
constructor with `dcp_sharded`; skip negative request indices and retain
PAD slots in the CPU mapping path. Keep the existing CP=1 restriction
and persistent CPU/device buffers. |
|
[`vllm_ascend/models/glm5next/kv_cache.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/models/glm5next/kv_cache.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) adds
`prefill_end` to Mamba checkpoint allocation, including prompt-end
retention. Release has the new signature; pinned main has the old one. |
Accept `prefill_end` for call compatibility; keep one private Kpool tail
block per request. |
|
[`vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/triton/v2/block_table/compute_slot_mappings.py)
| [vLLM #56734](https://github.com/vllm-project/vllm/pull/56734) uses
`idx_mapping=-1` for dummy draft/padding requests and masks their
persistent block-table reads to avoid stale-row KV writes. | Unify the
slot-mapping kernel, mask block-table loads with `is_real_req`, and emit
PAD for dummy rows; retain Ascend block/window and address-calculation
behavior. |
|
[`vllm_ascend/patch/platform/patch_kv_cache_utils.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_kv_cache_utils.py)
| The pinned `_annotate_eagle_groups` contract uses
`use_trailing_layer_fallback`, replacing the DeepSeek-V4-specific
fallback keyword; the introducing PR was not independently identified.
Fixed contracts: [release:
kv_cache_utils.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/kv_cache_utils.py#L2170).
| Always pass `use_trailing_layer_fallback=True`; retain existing Ascend
cache grouping/annotation behavior. |
|
[`vllm_ascend/patch/platform/patch_mamba_manager.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_mamba_manager.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) adds
`prefill_end` to Mamba checkpoint allocation, including prompt-end
retention. Release has the new signature; pinned main has the old one. |
Accept `prefill_end`, forwarding it only to the release parent while
retaining the existing Ascend allocation logic. |
|
[`vllm_ascend/worker/v2/block_table.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/block_table.py)
| [vLLM #56723](https://github.com/vllm-project/vllm/pull/56723) adds
`dcp_sharded` to distinguish sharded attention KV from replicated
Mamba/GDN state when target DCP and DCP=1 draft coexist. | Use one
constructor with optional per-group `dcp_sharded` validation/forwarding;
retain Ascend int32 slot mappings. |

</details>

<details>
<summary>Schedulers and profiling (5 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/core/dyntra_lb_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/dyntra_lb_scheduler.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#58259](https://github.com/vllm-project/vllm/pull/58259) define the
upstream resumable-session queue/handoff lifecycle: stopping a turn can
re-enqueue buffered continuation input.<br><br>Both targets admit
against `max_num_active_reqs` and include parked streaming sessions in
occupied slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Use KV-holder-first queue selection/re-enqueueing, the common
blocked-request helper, deferred bookkeeping and active-slot admission
including parked streams. Preserve the main-only encoder exception.
Remove secondary stop cleanup so upstream can retain/re-enqueue
resumable continuations. |
|
[`vllm_ascend/core/recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/recompute_scheduler.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>Both targets admit against
`max_num_active_reqs` and include parked streaming sessions in occupied
slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Fold the legacy queues into the common KV-holder/deferred path, count
parked streams for active admission, and preserve the version-dependent
encoder condition. Remove the redundant remote-KV waiting debug log as a
local cleanup. |
|
[`vllm_ascend/core/scheduler_profiling_chunk.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/core/scheduler_profiling_chunk.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses
`_handle_blocked_waiting_request`.<br><br>Both targets admit against
`max_num_active_reqs` and include parked streaming sessions in occupied
slots; related queue/Elastic-EP changes are [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) and [vLLM
#53934](https://github.com/vllm-project/vllm/pull/53934). Fixed
contracts: [release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L127),
[release:
scheduler.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/sched/scheduler.py#L892).
| Use the common blocked-request/queue lifecycle, active admission
including parked streams, and the version-dependent encoder budget
condition. |
|
[`vllm_ascend/patch/platform/patch_balance_schedule.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/platform/patch_balance_schedule.py)
| [vLLM #59029](https://github.com/vllm-project/vllm/pull/59029) gives
main an encoder-only exception to the non-chunked prefill budget check;
release keeps the budget rejection condition.<br><br>[vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) replaces
`skipped_waiting` with `kv_holding_waiting` and `deferred_waiting`,
prioritizes KV holders, and uses `_handle_blocked_waiting_request`. |
Fold six obsolete 0.30 queue branches and add the release/main encoder
budget condition. Document the shared `if not request_queue`
drained-queue guard. Retain baseline balancing, running-only DP
snapshots/admission accounting and connector-snapshot cleanup; complete
upstream schedule synchronization is outside this patch. |
|
[`vllm_ascend/profiling_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/profiling_config.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947)
replaces `skipped_waiting` with `kv_holding_waiting` and
`deferred_waiting`, prioritizes KV holders, and uses
`_handle_blocked_waiting_request`. | Retarget the profiling wrapper from
the old blocked-status promotion helper to
`_handle_blocked_waiting_request`. |

</details>

<details>
<summary>EPLB state and routing (2 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/distributed/eplb/eplb_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/distributed/eplb/eplb_state.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) changes
main's EPLB setup to update existing state and reuse its communicator.
Release still creates state from `(model, model_config, mapping)`. |
After the parent's `update_mapping`, refresh Ascend replica routing
tables; consistently resolve an unspecified NPU device index to the
current device. |
|
[`vllm_ascend/worker/v2/eplb.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/eplb.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) changes
main's EPLB setup to update existing state and reuse its communicator.
Release still creates state from `(model, model_config, mapping)`. |
Create `AscendEplbState` on release with the current policy/optional
expert arguments; call the main parent to update the existing state and
communicator. |

</details>

<details>
<summary>Models and MoE operators (6 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/models/kimi_k3.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/models/kimi_k3.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592)/[vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) use
`prefix_delta` and the three-value AttnRes layer contract instead of the
old prepared-input/deferred-MLP contract. | Remove old layer/model
contracts, propagate `prefix_delta` and return the three-value AttnRes
state; preserve Ascend fused operations, DSpark aux selection and SP/PP
transport/output boundaries. |
|
[`vllm_ascend/ops/fused_moe/gate_linear.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/fused_moe/gate_linear.py)
| [vLLM #58234](https://github.com/vllm-project/vllm/pull/58234) unifies
MoE gate layers under `GateLinear` with the current linear constructor
and replaces Step3.5's dedicated FP32 gate class. | Use the current
constructor parameters (`skip_bias_add`, `quant_config`, `return_bias`)
and retain BF16-to-FP32 gate/fallback semantics. CRLF-to-LF
normalization contributes to the large line diff. |
|
[`vllm_ascend/ops/fused_moe/router/grouped_topk_router.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/ops/fused_moe/router/grouped_topk_router.py)
| [vLLM #58880](https://github.com/vllm-project/vllm/pull/58880) removes
`routed_scaling_factor` from routing-method classification, allowing
MiniMax classification with non-unit scaling. | Stop passing
`routed_scaling_factor` to classification; downstream routing-weight
scaling is retained. |
|
[`vllm_ascend/patch/__init__.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/__init__.py)
| The release target is 0.31.0; [vLLM
#56994](https://github.com/vllm-project/vllm/pull/56994) is context for
the retained GLM reasoning patch comment, not a new model capability in
this PR. | Update only the supported-version comment for the retained
GLM reasoning patch. |
|
[`vllm_ascend/patch/worker/patch_step3p5.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_step3p5.py)
| [vLLM #58234](https://github.com/vllm-project/vllm/pull/58234) unifies
MoE gate layers under `GateLinear` with the current linear constructor
and replaces Step3.5's dedicated FP32 gate class. | Always use
`GateLinear` with FP32 parameter/output types instead of the legacy
FP32ReplicatedLinear branch. |

</details>

<details>
<summary>Token scoring and Triton helpers (2 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`vllm_ascend/patch/worker/patch_triton.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/patch/worker/patch_triton.py)
| [vLLM #58651](https://github.com/vllm-project/vllm/pull/58651) uses
`triton.next_power_of_2` in packed-QK RoPE constexpr evaluation; the
Ascend replacement must also satisfy the installed Triton
JIT/constexpr-function contract. | Use a constexpr-aware
`next_power_of_2` replacement; register with `triton.constexpr_function`
when available, otherwise unwrap `tl.constexpr.value` in the fallback. |
|
[`vllm_ascend/worker/v2/sample/logprob.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/vllm_ascend/worker/v2/sample/logprob.py)
| [vLLM #54335](https://github.com/vllm-project/vllm/pull/54335) adds
fixed-token prompt scoring and broadcasts candidate IDs with `expand`;
the token-ID row stride can be zero or non-contiguous. | Pass
`token_ids.stride(0)` into the Triton kernel and use it for row
addressing; support broadcast stride zero and strided candidate IDs. |

</details>

BalanceScheduler scope: this PR folds the old queue branches and adapts
encoder-only admission. Its baseline DP balancing, running-only
snapshot/accounting and connector-snapshot cleanup remain; complete
scheduler-body synchronization and a strict AST equivalence requirement
are deferred. The baseline drift guard may skip and does not prove
complete upstream equivalence.

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

The default release dependency becomes vLLM v0.31.0; the verified-main
pin remains unchanged. Fixed-token prompt scoring handles
broadcast/strided IDs correctly and reports an explicit error when used
with unsupported lmhead TP. Resumable Dyntra continuations retain
upstream stop/queue behavior, and PD prompt-tail graph/Mamba metadata
follow the supported upstream contracts.

### How was this patch tested?

#### Test changes organized by file

The table describes test intent and fixture changes; it does not claim
that every changed test was selected or executed on NPU hardware.

<details>
<summary>Unit, PR E2E and nightly test mapping (37 files)</summary>

| Downstream file | Upstream change / contract | Ascend adaptation |
| --- | --- | --- |
|
[`tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_compute_token_logprobs.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_compute_token_logprobs.py)
| [vLLM #54335](https://github.com/vllm-project/vllm/pull/54335) | Add
NPU numerical comparisons for broadcast stride=0 and sliced stride=8
token IDs; outside the PR CI selector. |
|
[`tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_num_nans.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_num_nans.py)
| Release-version cleanup; no new upstream behavior. | Update the
default version label to 0.31.0; no algorithm change. |
|
[`tests/e2e/pull_request/four_card/test_kimi_k3.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/four_card/test_kimi_k3.py)
| [vLLM #54222](https://github.com/vllm-project/vllm/pull/54222) | Check
equality between P-worker `remote_prefill_cached_tokens` and the
response cache count; zero hits are valid for a new prompt. |
|
[`tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/one_card/test_model_runner_v1_with_device.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Use the
common AuxOutput configuration object in V1 guard fixtures. |
|
[`tests/e2e/pull_request/one_card/test_thinking_budget.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/e2e/pull_request/one_card/test_thinking_budget.py)
| [vLLM #56497](https://github.com/vllm-project/vllm/pull/56497) |
Construct `LogitsContext` with expanded mapping, input IDs, positions
and sequence bounds; call `apply(logits, ctx)`. |
|
[`tests/ut/_310p/test_model_runner_v2_310p.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/_310p/test_model_runner_v2_310p.py)
| [vLLM #56456](https://github.com/vllm-project/vllm/pull/56456), [vLLM
#56497](https://github.com/vllm-project/vllm/pull/56497) | Use the
current sampler request signature and pass the added prepare-input LoRA
argument in 310P fixtures. |
|
[`tests/ut/attention/test_mla_cp.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/attention/test_mla_cp.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Mock `get_dcp_world_size_and_rank` and
remove legacy DCP group fixture branching. |
|
[`tests/ut/core/test_circular_buffer.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_circular_buffer.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Pass `replay_boundaries=[tokens-1]` to the current cache-block API. |
|
[`tests/ut/core/test_dyntra_lb_recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_dyntra_lb_recompute_scheduler.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) | Use
the shared KV-holder/deferred queue interfaces in Dyntra/recompute
fixtures. |
|
[`tests/ut/core/test_dyntra_lb_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_dyntra_lb_scheduler.py)
| [vLLM #58259](https://github.com/vllm-project/vllm/pull/58259), [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) | Regress
synchronous/asynchronous resumable continuation handling for running,
paused and preempted requests, buffered/unbuffered input, and final
cleanup; update queue seams. |
|
[`tests/ut/core/test_profiling_chunk.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_profiling_chunk.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934), [vLLM
#58947](https://github.com/vllm-project/vllm/pull/58947) | Update queue
fixtures/blocked-request helper and active-request capacity field. |
|
[`tests/ut/core/test_recompute_scheduler.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_recompute_scheduler.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) |
Remove legacy queue branching and use the shared blocked-request seam. |
|
[`tests/ut/core/test_scheduler_connector_block_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/core/test_scheduler_connector_block_state.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947), [vLLM
#59029](https://github.com/vllm-project/vllm/pull/59029) | Supply the
baseline `balance_queue` fixture; connector-snapshot cleanup itself
predates this change. |
|
[`tests/ut/distributed/eplb/test_state.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/distributed/eplb/test_state.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) |
Verify mapping updates refresh Ascend routing tables. |
|
[`tests/ut/distributed/kv_transfer/kv_p2p/test_remote_prefill_lifecycle.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/distributed/kv_transfer/kv_p2p/test_remote_prefill_lifecycle.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947) | Use
the shared queue lifecycle rather than version-specific skipped-waiting
fixtures. |
|
[`tests/ut/kv_offload/test_preempt_offload_connector.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/kv_offload/test_preempt_offload_connector.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Always provide prefix replay and request token-count fields in the
offload fixture. |
|
[`tests/ut/models/test_deepseek_v41_release_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_deepseek_v41_release_config.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Assert obsolete flattened multimodal-prefix flags are absent after
architecture conversion. |
|
[`tests/ut/models/test_glm5next_kv_cache.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_glm5next_kv_cache.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) | Pass
the new allocation argument while checking the private-tail block
policy. |
|
[`tests/ut/models/test_kimi_k3_adapter.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_kimi_k3_adapter.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592), [vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) | Update layer
signatures/three-value returns, auxiliary output expectations and
AST-extracted fixtures. |
|
[`tests/ut/models/test_kimi_k3_pp_sp.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/models/test_kimi_k3_pp_sp.py)
| [vLLM #50592](https://github.com/vllm-project/vllm/pull/50592), [vLLM
#50593](https://github.com/vllm-project/vllm/pull/50593) | Use the
common Kimi AttnRes contract in PP/SP checks. |
|
[`tests/ut/patch/platform/test_patch_balance_schedule.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_patch_balance_schedule.py)
| [vLLM #58947](https://github.com/vllm-project/vllm/pull/58947), [vLLM
#59029](https://github.com/vllm-project/vllm/pull/59029) | Use common
queue fixtures; add eight encoder/chunked/prompt-budget cases and
empty/fully deferred queue regressions with/without KV blocks. Correct
the structural guard assertion to `if not request_queue`. Keep the
baseline AST drift check, which can skip. |
|
[`tests/ut/patch/platform/test_patch_engram_config.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_patch_engram_config.py)
| Pinned cache allocation requires replay boundaries ([vLLM
#58368](https://github.com/vllm-project/vllm/pull/58368)); DeepSeek-V4.1
architecture metadata and Engram configuration ([vLLM
#56214](https://github.com/vllm-project/vllm/pull/56214)) use their
current configuration contracts. Individual configuration migrations are
linked to fixed source where not precisely attributed. Fixed contracts:
[release:
single_type_kv_cache_manager.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/v1/core/single_type_kv_cache_manager.py#L482),
[release:
model_arch.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/model_arch.py#L59),
[release:
engram.py](https://github.com/vllm-project/vllm/blob/db9527a46873454610df6dbedf79a36d6bf1a7f6/vllm/config/engram.py#L89).
| Expect shared-memory default resolution for this supported fixture
configuration; no universal shared-memory default is claimed. |
|
[`tests/ut/patch/platform/test_prefix_cache_cp_patches.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/patch/platform/test_prefix_cache_cp_patches.py)
| [vLLM #59175](https://github.com/vllm-project/vllm/pull/59175) |
Supply an explicit `prefill_end` allocation boundary. |
|
[`tests/ut/spec_decode/test_eagle_proposer.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/spec_decode/test_eagle_proposer.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Use the current model-config multimodal
capability interface and remove obsolete skips/branches. |
|
[`tests/ut/spec_decode/test_mla_dspark.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/spec_decode/test_mla_dspark.py)
| [vLLM #57632](https://github.com/vllm-project/vllm/pull/57632) |
Assert DFlash context-KV callback forwarding and the shared capture
signature. |
|
[`tests/ut/test_minimax_m3_kv_block_size.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/test_minimax_m3_kv_block_size.py)
| Release-version cleanup; no new upstream behavior. | Remove only an
unused version-helper import. |
|
[`tests/ut/test_platform.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/test_platform.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Use the
current AuxOutput configuration guard for both target versions. |
|
[`tests/ut/worker/test_attn_utils_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_attn_utils_v2.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Initialize `model_state.model_config`
instead of assigning the read-only length property. |
|
[`tests/ut/worker/test_dcp_speculator_metadata_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_dcp_speculator_metadata_v2.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Assert prefill metadata over the padded
request extent. |
|
[`tests/ut/worker/test_model_runner_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2.py)
| [vLLM #58411](https://github.com/vllm-project/vllm/pull/58411) adds
`randomize_inputs` for memory profiling to avoid all-zero MoE input
concentration. Present in release; absent from the pinned-main parent
calls.<br><br>[vLLM
#58542](https://github.com/vllm-project/vllm/pull/58542) adds
`max_seq_len_np` for PP sampled-token broadcast handling. Present in
release batch state; absent from pinned main.<br><br>[vLLM
#58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) replaces the
legacy PCP helper with descriptor-based `partition_batch`, restores
auxiliary hidden states with sampling outputs, and renames the DCP
preparation helper.<br><br>[vLLM
#56456](https://github.com/vllm-project/vllm/pull/56456) adds trailing
`num_active_loras` to `prepare_inputs`, keeping dispatch and
fast-prefill graph/padding selection consistent.<br><br>[vLLM
#54335](https://github.com/vllm-project/vllm/pull/54335) routes
fixed-token scoring through the same unpadded logits path as prompt
logprobs, which is incompatible with Ascend lmhead-TP collective row
layouts.<br><br>[vLLM
#58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Cover release/main kwargs and PP fields, PD
graph reclassification, PCP auxiliary restoration and lmhead scoring
guards; update model-state fixtures. |
|
[`tests/ut/worker/test_model_runner_v2_encoder_decoder.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2_encoder_decoder.py)
| [vLLM #58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Update model-state length fixtures through
model configuration. |
|
[`tests/ut/worker/test_model_runner_v2_mamba.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_model_runner_v2_mamba.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) |
Regress prompt-tail masks for FULL/NONE graph modes and zero/three draft
tokens; verify the original mask is unchanged. |
|
[`tests/ut/worker/test_pcp_manager_v2.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_pcp_manager_v2.py)
| [vLLM #45635](https://github.com/vllm-project/vllm/pull/45635), [vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) | Assert
descriptor-based partitioning and hidden/aux restore layout; update
AuxOutput fixture configuration. |
|
[`tests/ut/worker/test_v2_dummy_padding.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/test_v2_dummy_padding.py)
| [vLLM #58400](https://github.com/vllm-project/vllm/pull/58400) adds
`prefill_runs_as_decode_np` and `decode_graph_eligible` for single-token
prompt tails with existing context; `has_prefill` alone no longer
determines FULL-decode eligibility.<br><br>[vLLM
#58275](https://github.com/vllm-project/vllm/pull/58275)/[vLLM
#57980](https://github.com/vllm-project/vllm/pull/57980) expose
`max_query_len`/`is_padding` on dummy batches and an explicit
query-length bound for autoregressive graph capture.<br><br>[vLLM
#58149](https://github.com/vllm-project/vllm/pull/58149) makes
`ModelState.max_model_len` a model-config-backed property; [vLLM
#57913](https://github.com/vllm-project/vllm/pull/57913) moves
multimodal capability to `ModelConfig`; [vLLM
#56723](https://github.com/vllm-project/vllm/pull/56723) updates DCP
state/metadata contracts. | Use the model-config-backed state/dummy
descriptor contract and retain graph-eligibility metadata. |
|
[`tests/ut/worker/v2/test_aclgraph.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_aclgraph.py)
| [vLLM #57980](https://github.com/vllm-project/vllm/pull/57980), [vLLM
#58275](https://github.com/vllm-project/vllm/pull/58275) | Update
capture descriptors and dummy-batch keyword expectations. |
|
[`tests/ut/worker/v2/test_eplb_controller.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_eplb_controller.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) | Cover
release state construction versus main in-place state/communicator
reuse. |
|
[`tests/ut/worker/v2/test_eplb_load_collection_phase.py`](https://github.com/vllm-project/vllm-ascend/blob/23c8b15c2709978463490b0e8531bf5f9f27b9c1/tests/ut/worker/v2/test_eplb_load_collection_phase.py)
| [vLLM #53934](https://github.com/vllm-project/vllm/pull/53934) | Match
each target's EPLB setup signature in load-collection fixtures. |

</details>

#### Local A3 nightly validation (2026-10-15; frozen head `444e962`)

These four model runs used **`444e962b239c3a8fc56b9255d601818e6e028b9a`
+ vLLM 0.31.0 (`db9527a`)**, which is also the restored PR head; the
deferred connector hardening is not included. Prefill 138 + Decode 136,
16 NPUs per node; original image, weights, datasets, launch and
benchmark parameters were retained, with only the second-node address
mapped from 139 to 136. All four cases exited pytest 0 on both nodes
(one passed JUnit case per node). OTT is output token/s; TPOT/TTFT are
ms.

| Case | Performance requests | OTT / required minimum | TPOT / TTFT |
AIME2025 accuracy | Result |
| --- | --- | --- | --- | --- | --- |
| Kimi-K2.6 PD | 60/60 | 355.1593 / 337.024075 | 20.5 / 3268.2 | 90%,
within 93.33±10 | Performance + accuracy passed |
| DeepSeek-V4 Flash PD-prefix | Accuracy only | N/A | N/A | 90%, within
90±10 | Accuracy passed |
| GLM-5.1 W8A8C8 128K | 256/256 | 811.7645 / 282.105876 | 39.8 / 32665.6
| No accuracy item | Performance passed |
| MiniMax-M2.7 PD-prefix | 160/160 | 711.0518 / 698.497 | 34.8 / 17438.2
| 90%, within 93.33±10 | Performance + accuracy passed |

All performance requests above, and the valid controls below, were
checked for actual 1024-token outputs, not just success flags.

**Conditional controls:** historical throughput differences triggered
only the affected performance cases against the same PR base `6d1dd70`,
without this PR, + vLLM 0.30.0 (`ced6857`). Kimi: 355.1593 vs 359.8514
OTT (**-1.30%**); the earlier 7.27% loss was not reproduced in this
comparison. TPOT was 20.5 vs 19.7ms (+0.8ms/+4.06%), and average request
latency +3.48%; a single pair does not establish latency equivalence or
a stable regression. GLM: 811.7645 vs 813.3506 OTT (**-0.20%**), TPOT
39.8 vs 39.4ms. Kimi's original random request pacing affects aggregate
OTT. No alternating reruns or unaffected-model 0.30 controls were added.

Archived evidence:
`main2main-nightly-20261013/pr18229-update-444e962-20261015/`
(`FINAL_REPORT.md`, per-node logs/JUnit, raw AISBench outputs,
token-count audit, controls and diagnostic evidence). Both nodes were
released after testing.

#### Deferred follow-up: multi-group receive-failure reporting (not
included)

The request-level receive-failure hardening change has been removed from
this upgrade PR; the branch is restored to the nightly-tested head
`444e962`. The original four nightlies already passed on this head
**without** that fix, so it is not required for these normal-path
workloads to pass.

The fault-path issue remains real: if a multi-group receive actually
fails, the existing connector can report flat block IDs and trigger the
vLLM 0.31 scheduler guard, terminating Decode EngineCore. This is
handled separately in
[#18823](https://github.com/vllm-project/vllm-ascend/pull/18823),
retaining ordinary non-HMA block-level recovery semantics. The upgrade
PR does not claim fault isolation is fixed.

Development fault-injection results belong to the deferred connector
implementation, not this restored head. No new NPU run was performed
when restoring the exact previously tested code.

#### Historical validation for head `23c8b15`

- New [E2E
workflow](https://github.com/vllm-project/vllm-ascend/actions/runs/38562748688)
and [Docs link
check](https://github.com/vllm-project/vllm-ascend/actions/runs/38562748395)
were triggered after the rebase. Results are pending; previous-head CI
does not validate this rebased head.
- A targeted [comment
command](https://github.com/vllm-project/vllm-ascend/pull/18229#issuecomment-6168149194)
requests `test_deepseek_v4_mtp_full_decode_only` against both supported
upstream targets. The [command
workflow](https://github.com/vllm-project/vllm-ascend/actions/runs/38562831465)
is queued; its actual test results remain pending.
- Ruff check and format check passed for all 72 changed Python files;
Python compilation and diff checks passed. Source-extracted execution of
both real CPP routing regressions passed against the required partition
signatures of the exact main/release refs. This validates dispatch
contracts with lightweight dependency stubs and does not replace full
pytest or NPU execution.
- Existing source-extracted scheduler regressions passed on both version
lanes: eight budget scenarios, two queue paths and empty/fully deferred
queue regressions, including negative controls.
- Local full pytest/Torch/NPU and `bash format.sh ci` remain unavailable
in this Windows environment. They require CI validation.
- Previous head `9330488` passed pre-commit, Docs and both CPU UT lanes
(main 10782 passed / 114 skipped; release 10784 passed / 112 skipped).
Its initial NPU matrix passed 41/42 shards; the remaining main A3 shard
failed in unchanged upstream teardown with `psutil.NoSuchProcess`,
before the MTP golden acceptance assertion. The consequent gate failure
and old-head rerun are historical evidence, not a result for the current
head.

#### Coverage limits and historical evidence

The PR CI selector scans `tests/ut` and `tests/e2e/pull_request`; the
new broadcast/strided token-logprob numerical tests under
`tests/e2e/nightly` are outside that selection. A5, standalone
upstream-worker and coverage-upload jobs were skipped in the inspected
run. Skips are not coverage. No dedicated packed-QK RoPE or V1
profiling-randomization standalone UT is added by this final diff.

Previous head `15f8a3d` passed
[E2E](https://github.com/vllm-project/vllm-ascend/actions/runs/38511018361)
and
[Docs](https://github.com/vllm-project/vllm-ascend/actions/runs/38511018193),
including 42 NPU jobs. Its PR-recorded CPU counts were 10574 passed /
113 skipped for verified main and 10576 passed / 111 skipped for
release, with no failures. Those counts belong to that historical head
and are not asserted as current-head counts.

- vLLM main:
https://github.com/vllm-project/vllm/commit/c4df37dfcc7f72ca41cd43801a468526ecf99a2b

---------

Signed-off-by: zhao-stack <80399320+zhao-stack@users.noreply.github.com>
Co-authored-by: shenzhao <shenzhao9@huawei.com>
mgehre-amd pushed a commit to ROCm/vllm that referenced this pull request Oct 20, 2026
* [DSV4.1] Add encoder cuda graph support for deepseek-v4.1-flash (vllm-project#56625)

Signed-off-by: Isotr0py <Isotr0py@outlook.com>

* [Feature][Humming] Humming feature integration (vllm-project#56685)

Signed-off-by: jinzhen.ljz <jinzhen.ljz@antgroup.com>
Signed-off-by: mgoin <mgoin64@gmail.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: mgoin <mgoin64@gmail.com>

* [Misc] Rename --enable-mamba-fine-grained-prefix-cache (vllm-project#53945 follow-up) (vllm-project#57382)

Signed-off-by: Roi Koren <roik@nvidia.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Refactor] Remove dead kernel code (vllm-project#57621)

Signed-off-by: yewentao256 <zhyanwentao@126.com>

* [ROCm][CI] Query HIP device memory for test GPU teardown waits. (vllm-project#57450)

Signed-off-by: Sheral Kumar <shekumar@amd.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [KVConnector][MoRIIO] Transfer hybrid mamba/KDA recurrent state in READ mode (vllm-project#51052)

Signed-off-by: Yichao Zhu <Yichao.Zhu@amd.com>

* [XPU][UT]Bugfix when the process can't see all the world_size meet accuracy issue. (vllm-project#57779)

Signed-off-by: yisheng <yi.sheng@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

* [Perf][DSV4.1] Overlap mHC coefficients for small TP batches (vllm-project#57603)

Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
Co-authored-by: Codex <noreply@openai.com>

* [Bugfix][Spec Decode] Stop dummy draft decode steps from writing KV through stale block-table rows (vllm-project#56734)

Signed-off-by: Yifan Qiao <yifanqiao@inferact.ai>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* [Docs] Add ECMooncakeConnector usage example for EPD (vllm-project#57742)

Signed-off-by: jiangkuaixue123 <jiangxiaozhou111@163.com>
Co-authored-by: Codex <noreply@openai.com>

* [Bugfix][KV Connector] Propagate cache reset failure during sleep (vllm-project#54581)

Signed-off-by: CrazyCoder <18235787078@163.com>
Signed-off-by: aoshen02 <aoshen@inferact.ai>
Co-authored-by: aoshen02 <aoshen@inferact.ai>
Co-authored-by: Codex <noreply@openai.com>

* [Doc] Refresh Kthena integration guide (vllm-project#57314)

Signed-off-by: Zhou Zihang <z@mcac.cc>
Co-authored-by: Jee Jee Li <pandaleefree@gmail.com>

* [ROCm][DSv4.1] Keep the Engram tables in host memory on ROCm (vllm-project#57491)

* [Profiler] Unify platform-aware torch profiling (vllm-project#57460)

* [BUGFIX][HY4]  Record indexer completion event for full CUDA graph capture (vllm-project#57811)

Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>

* [Build] Fix DeepGEMM CUDA 12.9 release builds (vllm-project#57554)

Signed-off-by: khluu <khluu000@gmail.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>
Co-authored-by: Jee Jee Li <pandaleefree@gmail.com>

* [Perf][DSV4.1] Fuse TP all-reduce with mHC input preparation (vllm-project#57643)

Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
Co-authored-by: Codex <noreply@openai.com>

* [Bugfix] DiffusionGemma: fix multimodal support (vllm-project#57589)

Signed-off-by: Matt Mastracci <matthew@mastracci.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Lucas Wilkinson <LucasWilkinson@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Core][KDA] Generalize Mamba prefill checkpoint builder and exporter (vllm-project#57783)

Signed-off-by: chaunceyjiang <chaunceyjiang@gmail.com>
Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
Co-authored-by: zjy0516 <riverclouds.zhu@qq.com>

* [XPU][CI] fallback to 7-args of moe_align_block_size (vllm-project#57855)

Signed-off-by: zhenwei-intel <zhenwei.liu@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

* [ROCm][Tests] Avoid pooling cleanup waits against live shared engines (vllm-project#57864)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [MRV2][XPU] use xpu sample kernel in mrv2 sampler (vllm-project#57277)

Signed-off-by: zhenwei-intel <zhenwei.liu@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

* [Tests] Release HF embedding weights after prompt extraction (vllm-project#57868)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Bugfix] Fix Whisper engine crash on audio clips longer than 30s (vllm-project#57769)

Signed-off-by: Tianyao Wu <rayroy31@gmail.com>

* [Bugfix][Model] Mistral3: align placeholder grid with public processor (vllm-project#53758)

Signed-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Bugfix] Fix xgrammar feature gate bypass when JSON Schema type is a list (vllm-project#48416)

Signed-off-by: john <6712432+CaiJohn@users.noreply.github.com>
Co-authored-by: john <6712432+CaiJohn@users.noreply.github.com>
Co-authored-by: Codex <noreply@openai.com>

* [Perf][Attention] Avoid redundant sparse attention metadata operations (vllm-project#57885)

Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Bugfix][DSV4.1] Restrict mHC overlap to full CUDA graphs (vllm-project#57874)

Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Perf][ROCm] Add a ROCm path for Hy4 and compile the backbone (vllm-project#57526)

Signed-off-by: Aakif Nawaz <aakif.nawaz@amd.com>

* [Model][Engram] Share host tables across co-located DP replicas by default (vllm-project#57651)

Signed-off-by: Juntian Liu <Juntianl777@gmail.com>
Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: zjy0516 <riverclouds.zhu@qq.com>

* [CI][ROCm] Make Python-only installation failures blocking (vllm-project#57870)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [AMD][Minimax-M3][perf] Enable packed LBHNC AITER QK-norm fusion for MiniMax-M3 on ROCm (vllm-project#54535)

Signed-off-by: Wei-Ting Liao <wei-ting.liao@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Shanshan Shen <467638484@qq.com>

* [CI][ROCm] Mirror remaining portable suites without duplicate coverage (vllm-project#57877)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [CI][ROCm] Increase timeout for MI300 Distributed DP Extended (vllm-project#57903)

Signed-off-by: Djordje Ramic <djoramic@amd.com>

* [AuxOutput] Add block-keyed storage for routed-expert outputs (vllm-project#45635)

Signed-off-by: aoshen02 <aoshen@inferact.ai>
Signed-off-by: Nick Hill <nickhill123@gmail.com>
Co-authored-by: aoshen02 <aoshen@inferact.ai>
Co-authored-by: OpenAI Codex <codex@openai.com>
Co-authored-by: Roger Wang <hey@rogerw.io>
Co-authored-by: Nick Hill <nickhill123@gmail.com>
Co-authored-by: Codex <noreply@openai.com>

* [Bugfix][ROCm][DSv4.1] Disable SWA bounded replay on ROCm (vllm-project#57906)

Signed-off-by: Fangzhou Ai <fangzhou.ai@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* [Test] Organize structured output utility tests (vllm-project#57545)

Signed-off-by: john <6712432+CaiJohn@users.noreply.github.com>
Co-authored-by: john <6712432+CaiJohn@users.noreply.github.com>

* [CI][ROCm] Add ten AMD parity groups (vllm-project#57876)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Security] Prefer fresh multimodal payloads over a stale receiver cache (vllm-project#57833)

Signed-off-by: Juan Pérez de Algaba <jperezde@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* [CI][XPU] Deselect Ray UT in XPU V1 test Job (vllm-project#57889)

Signed-off-by: Chaojun Zhang <chaojun.zhang@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

* [Bugfix][Multimodal] Tolerate malformed EXIF in Molmo 2 image preprocessing (vllm-project#57234)

Signed-off-by: hotragn <hotragn.pettugani_2024@woxsen.edu.in>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* [Frontend] Add streaming parity tests and docs for derender (vllm-project#57922)

Signed-off-by: Martin Hickey <martin.hickey@ie.ibm.com>

* [ROCm][Tests] Reduce host memory when downcasting FP32 HF references (vllm-project#57869)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [MM] Move `supports_multimodal_inputs` and cache out of registry (vllm-project#57913)

Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>

* [Pooling] Fix normalization of chunked long-text embeddings (vllm-project#57498)

Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>

* [Bugfix][Frontend] Accept diarized transcription responses in run-batch (vllm-project#57948)

Signed-off-by: Sergio Figueras <sergio@yourecm.com>

* [ROCm][DSv4] Enable DSpark adaptive verification (vllm-project#52362)

Signed-off-by: Tuukka Sarvi <tuukka.sarvi@amd.com>
Signed-off-by: larryli2-amd <larryli2@amd.com>
Co-authored-by: larryli2-amd <larryli2@amd.com>

* [Bugfix] Fix external LB DP rank handling when replicas share nodes (vllm-project#53743)

Signed-off-by: Tony Lin <tony.lin@intel.com>

* [docs] Fix legacy hf CLI references (vllm) (vllm-project#57958)

Signed-off-by: Wauplin <lucainp@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [Bugfix][NIXL] Fix DCP pulls across MLA cache regions (vllm-project#57389)

Signed-off-by: Lucas Wilkinson <lwilkinson@neuralmagic.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [ROCm] Refactor tuned gemms (vllm-project#55001)

Signed-off-by: Andy Friedrich <afriedri@amd.com>
Signed-off-by: afriedri <afriedri@amd.com>
Co-authored-by: Douglas Lehr <91553416+dllehr-amd@users.noreply.github.com>
Co-authored-by: Shanshan Shen <467638484@qq.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Bugfix] unskip InternViT test for transformers v5 compatibility (vllm-project#55767)

Signed-off-by: sahil <sahil@example.com>
Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk>

* [MM] Move get_dummy_processor_inputs into MM processor (vllm-project#57967)

Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>

* [ROCm][CI] Use ROCm backend for DeepSeek V4.1 ViT test (vllm-project#57931)

Signed-off-by: Djordje Ramic <djoramic@amd.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [Feature] Add first-class KV hints request envelope for programmatic KV management (vllm-project#53423)

Signed-off-by: Karen Chung <karenc@nvidia.com>

* [Docs] Add an Engram feature page explaining Engram usage in vLLM (vllm-project#57910)

Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>

* [ROCm][Perf] Route the fused shared-expert gate GEMM through the platform dispatcher (vllm-project#54185)

Signed-off-by: Mikko Tukiainen <Mikko.Tukiainen@amd.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Engram] Drop redundant VLLM_PLE_CPU_OFFLOAD env var (vllm-project#57937)

Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>

* [Bugfix][MoE] Reject hash routing for unsupported monolithic backends (vllm-project#57867)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Bugfix][ROCm] Reject unsupported EP for monolithic AITER MXFP4 MoE (vllm-project#57866)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Docker] Use zstd for CI images and offer a Docker Hub variant (vllm-project#55608)

Signed-off-by: Nils Matteson <nilsmatteson@icloud.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Kimi-K3][AMD] Return KDA and MLA projection outputs directly (vllm-project#50592)

Signed-off-by: Liuyinfeng01 <yinfeliu@amd.com>
Co-authored-by: Liuyinfeng01 <199041580+LiuYinfeng01@users.noreply.github.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [CI][Build] Harden triton-cpu sleef submodule fetch in CPU image build (vllm-project#57871)

Signed-off-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>
Co-authored-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>

* [Bugfix][Kernel] Skip the fused silu-mul block-quant fast path when a swiglu clamp is set (vllm-project#57984)

Signed-off-by: Garrett Goon <garrett@primeintellect.ai>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [Frontend] Add reusable TP1 initialized-engine snapshots (vllm-project#51360)

Signed-off-by: Nils Matteson <nilsmatteson@icloud.com>
Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>
Co-authored-by: elehayym <52448798+Yuzu23@users.noreply.github.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Pooling] MRV2 pooling shutdown model ref (vllm-project#57737)

Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>

* [CI] Split (H200) LM Eval Large Models into per-model jobs (vllm-project#57965)

Signed-off-by: Thang Nguyen <thangnguyenvn647@gmail.com>
Co-authored-by: Kimi Code <noreply@moonshot.cn>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [Scheduler] Soften Long Prefill Tokens Threshhold (vllm-project#57951)

Signed-off-by: Robert Shaw <robertgshaw2@gmail.com>
Signed-off-by: Robert Shaw <robshaw@redhat.com>
Co-authored-by: Robert Shaw <robshaw@redhat.com>

* [Perf][Attention] Reduce GLM sparse MLA preparation overhead (vllm-project#57458)

Signed-off-by: Summer Yang <girasoleyang@gmail.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Jiangyun Zhu <riverclouds.zhu@qq.com>

* [Bugfix] Annotate MTP draft KV cache groups positionally on the hybrid grouping path (vllm-project#55390)

Signed-off-by: Navjot Singh <navjot.singh@shopify.com>
Co-authored-by: Codex <noreply@openai.com>

* [Bugfix][GDN] Fix stateless first-chunk classification (vllm-project#51565)

Signed-off-by: taking-lying-flat <1615405@qq.com>
Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
Co-authored-by: zjy0516 <riverclouds.zhu@qq.com>

* [CI] Add pre-commit check that new tests are tethered to Buildkite jobs (vllm-project#54867)

Signed-off-by: Turner Jabbour <doubleujabbour@gmail.com>
Signed-off-by: Turner <doubleujabbour@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Kevin H. Luu <khluu000@gmail.com>
Co-authored-by: Nick Hill <nickhill123@gmail.com>

* [XPU] Fix Nemotron FP8 LM-eval config: drop CUDA-only moe_backend and wire to new Buildkite job (vllm-project#49685)

Signed-off-by: Chaojun Zhang <chaojun.zhang@intel.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [Docker] Expose bundled vllm-rs on PATH (vllm-project#57606)

Signed-off-by: Alec Flowers <aflowers@nvidia.com>
Signed-off-by: Alec <35311602+alec-flowers@users.noreply.github.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Bugen Zhao <i@bugenzhao.com>

* [Fast Start] Cache the MTP draft model in a separate daemon group (vllm-project#57312)

Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Signed-off-by: Isotr0py <Isotr0py@outlook.com>
Co-authored-by: Isotr0py <Isotr0py@outlook.com>

* [Rust Frontend] Add MiMo V2.5 parser support (vllm-project#57933)

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>

* [Bugfix][Spec Decode] Cap DFlash/DSpark profiling query batch (vllm-project#56448)

Signed-off-by: wangyicong <wangyicong@bytedance.com>

* [RL][Sleep] Retain frozen weights across level-2 sleep (vllm-project#57891)

Signed-off-by: aoshen02 <aoshen02@users.noreply.github.com>
Co-authored-by: aoshen02 <aoshen02@users.noreply.github.com>
Co-authored-by: Codex <noreply@openai.com>

* [ROCm][Bugfix] Explicitly reject FSE=1 with DPA+ETP deployment for DeepSeek-V4 (vllm-project#57919)

Signed-off-by: Shanshan Shen <87969357+shen-shanshan@users.noreply.github.com>

* [Spec Decode] Enable async scheduling for DFlash (vllm-project#58065)

* [Frontend][Rust] Add mm-processor benchmark for Rust frontend (vllm-project#51922)

Signed-off-by: Karthik Gangula <gangula-karthik@users.noreply.github.com>
Signed-off-by: gangula-karthik <gkarthik923@gmail.com>
Signed-off-by: Isotr0py <Isotr0py@outlook.com>
Co-authored-by: Karthik Gangula <gangula-karthik@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: Isotr0py <Isotr0py@outlook.com>

* [Rust Frontend] Introduce parser-owned output grammar interfaces (vllm-project#55269)

Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* [Security] Reject min_tokens that exceeds the filled max_tokens default (vllm-project#57731)

Signed-off-by: Juan Pérez de Algaba <jperezde@redhat.com>

* [Bugfix][Frontend] Validate mixed prompt embedding mask lengths (vllm-project#57006)

Signed-off-by: 子华 <huaxi.shx@alibaba-inc.com>
Co-authored-by: Codex <noreply@openai.com>

* [Bugfix][Qwen2.5-VL] Honor video fps for temporal M-RoPE (vllm-project#47736)

Signed-off-by: Ting Sun <suntcrick@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Rust Frontend] Build full-output grammars from initialized reasoning parsers (vllm-project#57340)

Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Co-authored-by: Codex <noreply@openai.com>

* [ROCm][Perf] Avoid extra reshape kernel in Qwen GDN output norm (vllm-project#47842)

Signed-off-by: Mikko Tukiainen <Mikko.Tukiainen@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* [Kernel] Add opt-in load-time MXFP4 dequantization (vllm-project#50814)

Signed-off-by: Liuyinfeng01 <yinfeliu@amd.com>
Co-authored-by: Shanshan Shen <467638484@qq.com>

* [Rust Frontend] Separate multimodal instrumentation from request timing (vllm-project#58084)

Signed-off-by: Bugen Zhao <i@bugenzhao.com>

* [Kernel][DSV4.1] Fuse MXFP8 wo_b GEMM with sequence-parallel reduce-scatter (vllm-project#57428)

Signed-off-by: Thien Tran <gau.nernst@yahoo.com.sg>
Signed-off-by: Canlin <canlinguosdu@gmail.com>
Co-authored-by: Thien Tran <gau.nernst@yahoo.com.sg>
Co-authored-by: OpenAI Codex <codex@openai.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Jee Jee Li <pandaleefree@gmail.com>

* [CI] Emit a kernel symbol map from the csrc build (opt-in, for test selection) (vllm-project#58097)

Signed-off-by: khluu <khluu000@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* [perf] wire FA and FlashMLA for sm90 GLM5Next NoPE SparseMLA (vllm-project#55385)

Signed-off-by: JaredforReal <w13431838023@gmail.com>
Co-authored-by: Kimi Code <noreply@moonshot.cn>
Co-authored-by: Leoyzen <leoyzen@gmail.com>
Co-authored-by: Lucas Wilkinson <LucasWilkinson@users.noreply.github.com>

* [CPU] Add device-memory-utilization CLI alias (vllm-project#56547)

Signed-off-by: louie-tsai <louie.tsai@intel.com>
Signed-off-by: Louie Tsai <louie.tsai@intel.com>
Co-authored-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>

* [Rust Frontend] Construct model-owned vision processors through specs (vllm-project#58109)

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>

* [BugFix][Core] Make the structured-output grammar poll non-blocking (vllm-project#55931)

Signed-off-by: ubwzwd <ubwzwd@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Artem Perevedentsev <aperevedents@nvidia.com>

* [XPU][CI]Remove model_runner_v2 test from Intel GPU CI (vllm-project#58050)

Signed-off-by: zengxian <xiangdong.zeng@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

* [Bugfix][Structured Outputs] Reject empty `structural_tag` at request validation (vllm-project#47450)

Signed-off-by: linnea-lin-00638949 <15521435947@163.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Artem Perevedentsev <aperevedents@nvidia.com>

* [Build] Fix CUDA 12 KV connector dependency selection (vllm-project#57945)

Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>

* [Bugfix][GLM-5.3-Flash] Run the dense MLP layers on the sequence-parallel shard (vllm-project#58061)

Signed-off-by: Jared Wen <w13431838023@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Bugfix][Structured Output] Disallow MRV1 + PP>1 + async sched + structured output (vllm-project#56250)

Signed-off-by: Artem Perevedentsev <aperevedents@nvidia.com>
Co-authored-by: CNE Pierre FICHEPOIL <pierre-1.fichepoil@gendarmerie.interieur.gouv.fr>

* [Feat][XPU] VLLM_BATCH_INVARIANT support for Dense/MoE models (vllm-project#55881)

Signed-off-by: Tony Lin <tony.lin@intel.com>
Co-authored-by: Flora Feng <4florafeng@gmail.com>

* [SpecDecode] Restore residual-logits comments in _resample_kernel (vllm-project#58166)

Signed-off-by: Lucas Wilkinson <lwilkins@redhat.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* [Bugfix] Narrow AuxOutput KV restrictions to known PD connectors (vllm-project#58150)

Signed-off-by: aoshen02 <aoshen@inferact.ai>

* [Bugfix] prioritize architecture capability before DeepGEMM availability check (vllm-project#58073)

Signed-off-by: Tony Lin <tony.lin@intel.com>

* [Bugfix][Attention] Avoid NaN in the Triton softcap for large attention logits (vllm-project#56579)

Signed-off-by: Kushal Dabbe <72650064+kushaldabbe@users.noreply.github.com>
Co-authored-by: opencode <noreply@opencode.ai>
Co-authored-by: Misha Goin <mgoin64@gmail.com>

* [Bugfix][Engram] Fall back when /dev/shm is absent before sharing tables (vllm-project#57914)

Signed-off-by: Juntian Liu <juntianl@inferact.ai>
Signed-off-by: Juntian Liu <Juntianl777@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Bugfix] hadacore_transform: respect inplace parameter to fix garbage outputs with QuIP transforms (vllm-project#43462)

Signed-off-by: Gilles Turpin <turpingilles15@gmail.com>
Co-authored-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com>

* [Bugfix][ROCm] Dispatch the QuantFP8 CUDA fallback on the class (vllm-project#58136)

Signed-off-by: Stefan Koncarevic <Stefan.Koncarevic@amd.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [ROCm][DSv4.1][Perf] Fuse the inverse RoPE into the sparse decode reduce (vllm-project#57435)

Signed-off-by: Fangzhou Ai <fangzhou.ai@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [Fast Start] Support data parallelism in the weight cache daemon  (vllm-project#57386)

Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Signed-off-by: Isotr0py <Isotr0py@outlook.com>
Co-authored-by: Isotr0py <Isotr0py@outlook.com>

* [Bugfix] batch_invariant: keep non-AllReduce collectives enabled on NCCL >= 2.31 (vllm-project#58179)

Signed-off-by: Guanxin Li <38149783+guanxingithub@users.noreply.github.com>
Co-authored-by: Flora Feng <4florafeng@gmail.com>

* [MRV2] Release weight offloader on shutdown (vllm-project#57834)

Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>

* [Bugfix][V1] Honor enable_jit_warmup for V2 kernel warmup (vllm-project#55146)

Co-authored-by: mgoin <mgoin64@gmail.com>

* [ROCm][CI] Add GELU activation for AiterExperts in the modular-kernel coverage (vllm-project#58030)

Signed-off-by: Divakar Verma <divakar.verma@amd.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [Bugfix][V1] Read ModelState max_model_len from model config (vllm-project#58149)

Signed-off-by: Chenglun Hu <chenglunhu@gmail.com>
Signed-off-by: mgoin <mgoin64@gmail.com>
Co-authored-by: mgoin <mgoin64@gmail.com>

* [Bugfix][Model][Spec Decode] Defer disposable GLM MTP head (vllm-project#55442)

Signed-off-by: Luca Motz <luca.motz@icloud.com>

* [Refactor] Remove dead code multiple places (vllm-project#58002)

Signed-off-by: yewentao256 <zhyanwentao@126.com>

* [Core] structured generation mode for DiffusionGemma model (Jev-like) (vllm-project#57250)

Signed-off-by: Matt Mastracci <matthew@mastracci.com>
Signed-off-by: Lucas Wilkinson <lwilkins@redhat.com>
Signed-off-by: Razorback16 <razorback16@protonmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Lucas Wilkinson <lwilkins@redhat.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Razorback16 <razorback16@protonmail.com>

* [Kernel] Remove AllSpark INT8 W8A16 GEMM backend (vllm-project#58001)

Signed-off-by: mgoin <mgoin64@gmail.com>

* [CI] Build the torch-nightly image on Ubuntu 24.04 (vllm-project#58204)

* [Bugfix] Backport Inductor custom-op pattern matching fix (vllm-project#58189)

Signed-off-by: mgoin <mgoin64@gmail.com>

* [Core] Disable JIT warmup in eager mode (vllm-project#58197)

Signed-off-by: mgoin <mgoin64@gmail.com>

* [CI] Split LM Eval TurboQuant KV Cache into per-config jobs (vllm-project#57113)

Signed-off-by: Thang Nguyen <thangnguyenvn647@gmail.com>
Co-authored-by: Kimi <noreply@moonshot.ai>

* [CI] Shard (H200 MIG 18GB) Spec Decode Draft Model across whole-directory replicas (vllm-project#58193)

Signed-off-by: Thang Nguyen <thangnguyenvn647@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* [Perf] Remove CPU-GPU sync in heterogeneous vocabulary speculative decoding (vllm-project#57396)

* [ROCm][Build][The Rock] Bump Triton version to 3.8.x tip-of-tree with source build in The Rock image (vllm-project#58006)

Signed-off-by: Randall Smith <Randall.Smith@amd.com>

* [Bugfix][ROCm] Use the platform FP8 range in the concat MLA q test (vllm-project#58153)

Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [ROCm][Model][Bugfix] Enable GLM-5.2-MXFP4 on the deepseek_v32 path and fix sparse attention correctness (vllm-project#51915)

Signed-off-by: Jack Hu <Jack.Hu@amd.com>
Signed-off-by: Jack Hu <jack.hu@amd.com>
Signed-off-by: Douglas Lehr <Doug.Lehr@amd.com>
Co-authored-by: James E T Smith <jamesETsmith@users.noreply.github.com>
Co-authored-by: Douglas Lehr <91553416+dllehr-amd@users.noreply.github.com>
Co-authored-by: Douglas Lehr <Doug.Lehr@amd.com>

* [ROCm] Use silu_and_mul_with_clamp's torch._C op (vllm-project#52052)

Signed-off-by: Tres Popp <tres.popp@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Shanshan Shen <467638484@qq.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>

* [Bugfix] Skip VllmConfig re-validation for with_hf_config submodel views (vllm-project#58212)

Signed-off-by: Nick Hill <nickhill123@gmail.com>
Co-authored-by: Kimi Code <noreply@moonshot.ai>
Co-authored-by: Roger Wang <rogerw@inferact.ai>

* [EPD] Support metadata-only audio inputs (vllm-project#57887)

Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk>

* [ROCm][DSv4][Perf] Fuse the inverse RoPE into the sparse decode reduce (vllm-project#57451)

Signed-off-by: Fangzhou Ai <fangzhou.ai@amd.com>

* [ROCm][Compile] Support BF16 AsyncTP fusion (vllm-project#58098)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>

* [CI][Bugfix] Update IPC test caller for vllm-project#57312's _apply_entries signature (vllm-project#58107)

Signed-off-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>
Co-authored-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>
Co-authored-by: Kevin H. Luu <khluu000@gmail.com>

* [ROCm][CI] Stage G gating (vllm-project#50922)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <codex@openai.com>

* [Bugfix] Set worker runtime threads before profiling and compilation (vllm-project#55891)

Signed-off-by: Andreas Karatzas <andreas.karatzas@protonmail.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Nick Hill <nickhill123@gmail.com>

* [XPU] Wire up SYCL apply_rotary_emb kernel in ApplyRotaryEmb (vllm-project#55721)

Signed-off-by: Michal Ganczarenko <michal.ganczarenko@intel.com>
Signed-off-by: Michał Ganczarenko <michal.ganczarenko@intel.com>
Co-authored-by: Claude <noreply@anthropic.com>

* [Compilation] Fix QuTLASS compilation with PyTorch 2.13 (vllm-project#58173)

Signed-off-by: yewentao256 <zhyanwentao@126.com>

* [Spec decode] Support variable-length decode for Kimi-K3 adaptive ver (vllm-project#52988)

Signed-off-by: Albert Cheng <albecheng@nvidia.com>
Signed-off-by: Albert Cheng (Engrg-Hardware 1) <albecheng@login-bia01.bia.clusters.nvidia.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Chislett <bchislett@nvidia.com>

* [XPU][CI] Deselect tests/v1/spec_decode/test_mtp.py::test_glm_mtp_defers_lm_head (vllm-project#58237)

Signed-off-by: zengxian <xiangdong.zeng@intel.com>

* [MoE] Use GateLinear for all MoE models (vllm-project#58234)

Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>

* [Bugfix][Frontend] Keep length finish_reason for max_tokens-truncated streaming tool calls (vllm-project#46303)

Signed-off-by: Ting Sun <suntcrick@gmail.com>

* [ROCm][Perf] Use wvSplitK for single-output GEMMs (vllm-project#53283)

Signed-off-by: tangzzycc <3081129260@qq.com>

* [Tests] Select V2 for diffusion scheduler unit tests (vllm-project#58272)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: OpenAI Codex <codex@openai.com>

* [Quantization] Select per-token NVFP4 MoE backends explicitly (vllm-project#57176)

Signed-off-by: aoshen02 <aoshen@inferact.ai>
Signed-off-by: S1ro1 <matej.sirovatka@gmail.com>
Signed-off-by: aoshen02 <aoshen02@users.noreply.github.com>
Co-authored-by: aoshen02 <aoshen@inferact.ai>
Co-authored-by: OpenAI Codex <noreply@openai.com>
Co-authored-by: aoshen02 <aoshen02@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* [ROCm][CI] Mirror the three TurboQuant evaluation groups on MI355 (vllm-project#58282)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [ROCm][CI] Add MI355 dense NVFP4 and MoRI kernel mirrors (vllm-project#58281)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [Mooncake] Address review nits from vllm-project#56855 (vllm-project#57174)

Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>
Co-authored-by: Yifan Qiao <17067717+ivanium@users.noreply.github.com>

* [Refactor][Quantization] Make FP8 and MLA weight transforms reusable pure functions (vllm-project#57732)

Signed-off-by: aoshen02 <aoshen@inferact.ai>
Co-authored-by: Yongye Zhu <zyy1102000@gmail.com>

* [ROCm][Compile] Fuse AITER static FP8 attention output (vllm-project#58099)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [ROCm][Bugfix] Register MRV2 sampler JIT warmups (vllm-project#58092)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <codex@openai.com>

* [Perf][Attention] Avoid CPU-GPU sync in DCP sequence lengths (vllm-project#58169)

Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>

* [CI][Bugfix] Extend groupwise rms_norm scale tolerance to CUDA (vllm-project#58252)

Signed-off-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>
Co-authored-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>

* Disable pre-commit check-test-tethering

Prevent this check from running in our branch because we are not testing
our branch with Buildkite.

Signed-off-by: Dan Eble <Dan.Eble@amd.com>

---------

Signed-off-by: Isotr0py <Isotr0py@outlook.com>
Signed-off-by: jinzhen.ljz <jinzhen.ljz@antgroup.com>
Signed-off-by: mgoin <mgoin64@gmail.com>
Signed-off-by: Roi Koren <roik@nvidia.com>
Signed-off-by: yewentao256 <zhyanwentao@126.com>
Signed-off-by: Sheral Kumar <shekumar@amd.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Signed-off-by: Yichao Zhu <Yichao.Zhu@amd.com>
Signed-off-by: yisheng <yi.sheng@intel.com>
Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
Signed-off-by: Yifan Qiao <yifanqiao@inferact.ai>
Signed-off-by: jiangkuaixue123 <jiangxiaozhou111@163.com>
Signed-off-by: CrazyCoder <18235787078@163.com>
Signed-off-by: aoshen02 <aoshen@inferact.ai>
Signed-off-by: Zhou Zihang <z@mcac.cc>
Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>
Signed-off-by: khluu <khluu000@gmail.com>
Signed-off-by: Matt Mastracci <matthew@mastracci.com>
Signed-off-by: chaunceyjiang <chaunceyjiang@gmail.com>
Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
Signed-off-by: zhenwei-intel <zhenwei.liu@intel.com>
Signed-off-by: Tianyao Wu <rayroy31@gmail.com>
Signed-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>
Signed-off-by: john <6712432+CaiJohn@users.noreply.github.com>
Signed-off-by: Aakif Nawaz <aakif.nawaz@amd.com>
Signed-off-by: Juntian Liu <Juntianl777@gmail.com>
Signed-off-by: Wei-Ting Liao <wei-ting.liao@amd.com>
Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Signed-off-by: Djordje Ramic <djoramic@amd.com>
Signed-off-by: Nick Hill <nickhill123@gmail.com>
Signed-off-by: Fangzhou Ai <fangzhou.ai@amd.com>
Signed-off-by: Juan Pérez de Algaba <jperezde@redhat.com>
Signed-off-by: Chaojun Zhang <chaojun.zhang@intel.com>
Signed-off-by: hotragn <hotragn.pettugani_2024@woxsen.edu.in>
Signed-off-by: Martin Hickey <martin.hickey@ie.ibm.com>
Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>
Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>
Signed-off-by: Sergio Figueras <sergio@yourecm.com>
Signed-off-by: Tuukka Sarvi <tuukka.sarvi@amd.com>
Signed-off-by: larryli2-amd <larryli2@amd.com>
Signed-off-by: Tony Lin <tony.lin@intel.com>
Signed-off-by: Wauplin <lucainp@gmail.com>
Signed-off-by: Lucas Wilkinson <lwilkinson@neuralmagic.com>
Signed-off-by: Andy Friedrich <afriedri@amd.com>
Signed-off-by: afriedri <afriedri@amd.com>
Signed-off-by: sahil <sahil@example.com>
Signed-off-by: Karen Chung <karenc@nvidia.com>
Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>
Signed-off-by: Mikko Tukiainen <Mikko.Tukiainen@amd.com>
Signed-off-by: Nils Matteson <nilsmatteson@icloud.com>
Signed-off-by: Liuyinfeng01 <yinfeliu@amd.com>
Signed-off-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>
Signed-off-by: Garrett Goon <garrett@primeintellect.ai>
Signed-off-by: Thang Nguyen <thangnguyenvn647@gmail.com>
Signed-off-by: Robert Shaw <robertgshaw2@gmail.com>
Signed-off-by: Robert Shaw <robshaw@redhat.com>
Signed-off-by: Summer Yang <girasoleyang@gmail.com>
Signed-off-by: Navjot Singh <navjot.singh@shopify.com>
Signed-off-by: taking-lying-flat <1615405@qq.com>
Signed-off-by: Turner Jabbour <doubleujabbour@gmail.com>
Signed-off-by: Turner <doubleujabbour@gmail.com>
Signed-off-by: Alec Flowers <aflowers@nvidia.com>
Signed-off-by: Alec <35311602+alec-flowers@users.noreply.github.com>
Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: wangyicong <wangyicong@bytedance.com>
Signed-off-by: aoshen02 <aoshen02@users.noreply.github.com>
Signed-off-by: Shanshan Shen <87969357+shen-shanshan@users.noreply.github.com>
Signed-off-by: Karthik Gangula <gangula-karthik@users.noreply.github.com>
Signed-off-by: gangula-karthik <gkarthik923@gmail.com>
Signed-off-by: 子华 <huaxi.shx@alibaba-inc.com>
Signed-off-by: Ting Sun <suntcrick@gmail.com>
Signed-off-by: Thien Tran <gau.nernst@yahoo.com.sg>
Signed-off-by: Canlin <canlinguosdu@gmail.com>
Signed-off-by: JaredforReal <w13431838023@gmail.com>
Signed-off-by: louie-tsai <louie.tsai@intel.com>
Signed-off-by: Louie Tsai <louie.tsai@intel.com>
Signed-off-by: ubwzwd <ubwzwd@gmail.com>
Signed-off-by: zengxian <xiangdong.zeng@intel.com>
Signed-off-by: linnea-lin-00638949 <15521435947@163.com>
Signed-off-by: Jared Wen <w13431838023@gmail.com>
Signed-off-by: Artem Perevedentsev <aperevedents@nvidia.com>
Signed-off-by: Lucas Wilkinson <lwilkins@redhat.com>
Signed-off-by: Kushal Dabbe <72650064+kushaldabbe@users.noreply.github.com>
Signed-off-by: Juntian Liu <juntianl@inferact.ai>
Signed-off-by: Gilles Turpin <turpingilles15@gmail.com>
Signed-off-by: Stefan Koncarevic <Stefan.Koncarevic@amd.com>
Signed-off-by: Guanxin Li <38149783+guanxingithub@users.noreply.github.com>
Signed-off-by: Divakar Verma <divakar.verma@amd.com>
Signed-off-by: Chenglun Hu <chenglunhu@gmail.com>
Signed-off-by: Luca Motz <luca.motz@icloud.com>
Signed-off-by: Razorback16 <razorback16@protonmail.com>
Signed-off-by: Randall Smith <Randall.Smith@amd.com>
Signed-off-by: Jack Hu <Jack.Hu@amd.com>
Signed-off-by: Jack Hu <jack.hu@amd.com>
Signed-off-by: Douglas Lehr <Doug.Lehr@amd.com>
Signed-off-by: Tres Popp <tres.popp@amd.com>
Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Signed-off-by: Andreas Karatzas <andreas.karatzas@protonmail.com>
Signed-off-by: Michal Ganczarenko <michal.ganczarenko@intel.com>
Signed-off-by: Michał Ganczarenko <michal.ganczarenko@intel.com>
Signed-off-by: Albert Cheng <albecheng@nvidia.com>
Signed-off-by: Albert Cheng (Engrg-Hardware 1) <albecheng@login-bia01.bia.clusters.nvidia.com>
Signed-off-by: tangzzycc <3081129260@qq.com>
Signed-off-by: S1ro1 <matej.sirovatka@gmail.com>
Signed-off-by: Dan Eble <Dan.Eble@amd.com>
Co-authored-by: Isotr0py <Isotr0py@outlook.com>
Co-authored-by: Jinzhen Lin <jinzhen.ljz@antgroup.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: mgoin <mgoin64@gmail.com>
Co-authored-by: roikoren755 <26850796+roikoren755@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com>
Co-authored-by: Sheral Kumar <shekumar@amd.com>
Co-authored-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: YukioZzz <Yichao.Zhu@amd.com>
Co-authored-by: YiSheng5 <yi.sheng@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>
Co-authored-by: Woosuk Kwon <woosuk@inferact.ai>
Co-authored-by: Yifan Qiao <yifanqiao@inferact.ai>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: jiangkuaixue123 <jiangxiaozhou111@163.com>
Co-authored-by: CrazyCoder <18235787078@163.com>
Co-authored-by: aoshen02 <aoshen@inferact.ai>
Co-authored-by: Zhou Zihang <mail@zzhgo.com>
Co-authored-by: Jee Jee Li <pandaleefree@gmail.com>
Co-authored-by: JohnQinAMD <yanyuan.qin@amd.com>
Co-authored-by: czhu-cohere <conway.zhu@cohere.com>
Co-authored-by: Kevin H. Luu <khluu000@gmail.com>
Co-authored-by: Matt Mastracci <matthew@mastracci.com>
Co-authored-by: Lucas Wilkinson <LucasWilkinson@users.noreply.github.com>
Co-authored-by: Chauncey <chaunceyjiang@gmail.com>
Co-authored-by: zjy0516 <riverclouds.zhu@qq.com>
Co-authored-by: liuzhenwei <zhenweiliu@habana.ai>
Co-authored-by: Tianyao Wu <54675599+twu3202@users.noreply.github.com>
Co-authored-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>
Co-authored-by: CaiJohn <CaiJohn@users.noreply.github.com>
Co-authored-by: john <6712432+CaiJohn@users.noreply.github.com>
Co-authored-by: akii96 <aakif.nawaz@amd.com>
Co-authored-by: Juntian Liu <Juntianl777@gmail.com>
Co-authored-by: weitliao <wei-ting.liao@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Shanshan Shen <467638484@qq.com>
Co-authored-by: djramic <djoramic@amd.com>
Co-authored-by: Hongxin Xu <70438206+xhx1022@users.noreply.github.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
Co-authored-by: Roger Wang <hey@rogerw.io>
Co-authored-by: Nick Hill <nickhill123@gmail.com>
Co-authored-by: Fangzhou Ai <31551580+Fangzhou-Ai@users.noreply.github.com>
Co-authored-by: Juan Pérez de Algaba <124347725+jperezdealgaba@users.noreply.github.com>
Co-authored-by: Chaojun Zhang <chaojun.zhang@intel.com>
Co-authored-by: Hotragn Pettugani <103170876+Hotragn@users.noreply.github.com>
Co-authored-by: Martin Hickey <martin.hickey@ie.ibm.com>
Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk>
Co-authored-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>
Co-authored-by: sfigs <sergio@yourecm.com>
Co-authored-by: Tuukka Sarvi <tuukka.sarvi@amd.com>
Co-authored-by: larryli2-amd <larryli2@amd.com>
Co-authored-by: Tony Lin <tony.lin@intel.com>
Co-authored-by: Lucain <lucainp@gmail.com>
Co-authored-by: afriedri <afriedri@amd.com>
Co-authored-by: Douglas Lehr <91553416+dllehr-amd@users.noreply.github.com>
Co-authored-by: Sahil Patel <91423311+Sip4818@users.noreply.github.com>
Co-authored-by: Karen Chung <karenc@nvidia.com>
Co-authored-by: Nicolò Lucchesi <nicolo.lucchesi@mistral.ai>
Co-authored-by: Mikko Tukiainen <mikko.tukiainen@amd.com>
Co-authored-by: Nils Matteson <nilsmatteson@icloud.com>
Co-authored-by: yinfengLiu <yinfeliu@amd.com>
Co-authored-by: Liuyinfeng01 <199041580+LiuYinfeng01@users.noreply.github.com>
Co-authored-by: vllm-agent <claw@inferact.ai>
Co-authored-by: kimi-no-na-wa <kimi-no-na-wa@users.noreply.github.com>
Co-authored-by: Garrett Goon <44747910+garrett361@users.noreply.github.com>
Co-authored-by: elehayym <52448798+Yuzu23@users.noreply.github.com>
Co-authored-by: Thang Nguyen <69278249+Thangnguyenvn98@users.noreply.github.com>
Co-authored-by: Kimi Code <noreply@moonshot.cn>
Co-authored-by: Robert Shaw <114415538+robertgshaw2-redhat@users.noreply.github.com>
Co-authored-by: Robert Shaw <robshaw@redhat.com>
Co-authored-by: Summer Yang <girasoleyang@gmail.com>
Co-authored-by: Navjot Singh <navjot.singh@uwaterloo.ca>
Co-authored-by: cherry77-cloud <1615405@qq.com>
Co-authored-by: Turner Jabbour <doubleujabbour@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Alec <35311602+alec-flowers@users.noreply.github.com>
Co-authored-by: Bugen Zhao <i@bugenzhao.com>
Co-authored-by: siyu <mg21330037@smail.nju.edu.cn>
Co-authored-by: Yicong Wang <wangyicong@bytedance.com>
Co-authored-by: aoshen02 <aoshen02@users.noreply.github.com>
Co-authored-by: Jeff (Junze) Ma <93145857+majunze2001@users.noreply.github.com>
Co-authored-by: karthik <56480632+gangula-karthik@users.noreply.github.com>
Co-authored-by: Karthik Gangula <gangula-karthik@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: shaohuaxi <huaxi.shx@alibaba-inc.com>
Co-authored-by: Ting SUN <suntcrick@gmail.com>
Co-authored-by: Canlin Guo <canlinguosdu@gmail.com>
Co-authored-by: Thien Tran <gau.nernst@yahoo.com.sg>
Co-authored-by: Jared Wen <w13431838023@gmail.com>
Co-authored-by: Leoyzen <leoyzen@gmail.com>
Co-authored-by: Louie Tsai <louie.tsai@intel.com>
Co-authored-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
Co-authored-by: ubwzwd <ubwzwd@gmail.com>
Co-authored-by: Artem Perevedentsev <aperevedents@nvidia.com>
Co-authored-by: xiangdong <40376367+zxd1997066@users.noreply.github.com>
Co-authored-by: linyafeng <15521435947@163.com>
Co-authored-by: CNE Pierre FICHEPOIL <pierre-1.fichepoil@gendarmerie.interieur.gouv.fr>
Co-authored-by: Flora Feng <4florafeng@gmail.com>
Co-authored-by: Kushal <72650064+kushaldabbe@users.noreply.github.com>
Co-authored-by: opencode <noreply@opencode.ai>
Co-authored-by: Gilles Turpin <turpingilles15@gmail.com>
Co-authored-by: stefankoncarevic <Stefan.Koncarevic@amd.com>
Co-authored-by: Guanxin Li <38149783+guanxingithub@users.noreply.github.com>
Co-authored-by: pengyihang <1017861497@qq.com>
Co-authored-by: Divakar Verma <137818590+divakar-amd@users.noreply.github.com>
Co-authored-by: hcl <chenglunhu@gmail.com>
Co-authored-by: lucamotz <luca.motz@icloud.com>
Co-authored-by: Lucas Wilkinson <lwilkins@redhat.com>
Co-authored-by: Razorback16 <razorback16@protonmail.com>
Co-authored-by: Andrey Talman <atalman@fb.com>
Co-authored-by: Kimi <noreply@moonshot.ai>
Co-authored-by: Michael Lapshin <55516685+MichaelLapshin@users.noreply.github.com>
Co-authored-by: rasmith <Randall.Smith@amd.com>
Co-authored-by: Jack Hu <jack.hu@amd.com>
Co-authored-by: James E T Smith <jamesETsmith@users.noreply.github.com>
Co-authored-by: Douglas Lehr <Doug.Lehr@amd.com>
Co-authored-by: Tres <tpopp@users.noreply.github.com>
Co-authored-by: Roger Wang <rogerw@inferact.ai>
Co-authored-by: Tianyu Guo <guoty@inferact.ai>
Co-authored-by: Michał Ganczarenko <michal.ganczarenko@intel.com>
Co-authored-by: Albert Cheng <albecheng@nvidia.com>
Co-authored-by: Benjamin Chislett <bchislett@nvidia.com>
Co-authored-by: 00CC <83797617+tangzzycc@users.noreply.github.com>
Co-authored-by: Matej Sirovatka <54212263+S1ro1@users.noreply.github.com>
Co-authored-by: Yifan Qiao <17067717+ivanium@users.noreply.github.com>
Co-authored-by: Yongye Zhu <zyy1102000@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cohere Related to Cohere models glm gpt-oss Related to GPT-OSS models llama Related to Llama models mistral Related to Mistral models qwen Related to Qwen models ready ONLY add when PR is ready to merge/full CI is needed

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants