Skip to content

Commit 7662ec9

Browse files
[CI] main2main vllm v0.26.0 (vllm-project#12859)
### What this PR does / why we need it? main2main vllm upgrade to v0.26.0 --- #### 1. Version / Docker / Documentation (Version Alignment) | File | Change Reason | |------|---------------| | `.github/vllm-release-tag.commit` | Update CI tracking tag: `v0.25.1` → `v0.26.0` | | `Dockerfile` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.310p` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.310p.openEuler` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.a3` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.a3.openEuler` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.a5` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.a5.openEuler` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `Dockerfile.openEuler` | `ARG VLLM_TAG=v0.25.1` → `v0.26.0` | | `README.md` | Update main branch description: "CI commitment for vLLM v0.26.0 tag" | | `README.zh.md` | Same update in Chinese README | | `.gitleaks.toml` | Add allowlist for `vllm_ascend/patch/worker/patch_qwen3_5.py` (prevent monkey-patch class names from being flagged as secrets) | --- #### 2. Test Code (Remove v0.25.1 Compatibility Branches) | File | Change Reason | |------|---------------| | `tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_fused_recurrent_gated_delta_rule.py` | Drop `vllm_version_is("0.25.1")` branch; unify on `vllm.third_party.flash_linear_attention.ops` import path | | `tests/e2e/nightly/single_node/ops/singlecard_ops/triton/test_fused_sigmoid_gating_delta_rule.py` | Same as above; remove v0.25.1 legacy import branch | | `tests/e2e/pull_request/one_card/model_runner_v2/test_basic.py` | Remove `_SKIP_V025_MRV2_SPEC_DECODE` skip marker (MRV2 spec decode is now available in v0.26.0) | | `tests/ut/distributed/ascend_store/test_coordinator.py` | `find_longest_cache_hit` test removes v0.25.1 2-tuple return check; unify on 3-tuple assertion | | `tests/ut/ops/test_gdn_attn_builder.py` | Drop v0.25.1 `vllm.model_executor.layers.fla.ops.index` compatibility branch | | `tests/ut/ops/test_gdn_layerwise_kv.py` | `_run_gdn_forward` adapts to v0.26.0 unified signature (remove `result is None` legacy branch) | | `tests/ut/patch/test_hunyuan_vl_processor_compat.py` | Monkeypatch simulated version switches from `0.25.1` to `0.26.0` | | `tests/ut/test_compressed_prefix_cache.py` | `find_longest_cache_hit` / `_hybrid_coordinator` assertions unified to v0.26.0 3-tuple return value | | `tests/ut/worker/test_pcp_manager_v2.py` | Remove `@pytest.mark.skipif(vllm_version_is("0.25.1"))` markers and conditional `from vllm.v1.worker.gpu.pcp_manager import PCPManager` import | --- #### 3. Core Scheduler / KV Cache (v0.26.0 API Adaptation) | File | Change Reason | |------|---------------| | `vllm_ascend/core/recompute_scheduler.py` | ① `_finish_recomputed_request` unified to list comprehension comparison (v0.26.0 returns `Request` objects instead of tuples); ② `get_computed_blocks` unpacking adds `shared_prefix_boundary` as 3rd element; ③ `update_from_output` simplifies `num_in_flight_tokens` deduction condition | | `vllm_ascend/core/scheduler_profiling_chunk.py` | `ProfilingChunkScheduler.schedule()` unifies `get_computed_blocks` unpacking to 3-tuple | | `vllm_ascend/core/single_type_kv_cache_manager.py` | ① `get_num_blocks_to_allocate` branches merged; ② `find_longest_cache_hit` uses `block_pool.hash_block_size`; ③ return value unified to 2-tuple; ④ `get_manager_for_kv_cache_spec` uses `max_in_flight_tokens` parameter | --- #### 4. AscendStore (KV Transfer) | File | Change Reason | |------|---------------| | `vllm_ascend/distributed/kv_transfer/kv_pool/ascend_store/coordinator.py` | ① `block_hashes_for_spec` directly returns `block_hashes` (hash-size resolution moved into manager); ② remove v0.25.1 `get_block_hashes` call and import; ③ `_find_longest_cache_hit` removes v0.25.1 manual hit_length calculation | | `vllm_ascend/distributed/kv_transfer/kv_pool/ascend_store/pool_scheduler.py` | `requested_hash_block_size = vllm_config.cache_config.prefix_match_unit` (v0.25.1 used `hash_block_size`) | | `vllm_ascend/distributed/kv_transfer/kv_pool/ascend_store/pool_worker.py` | Synced with above: `prefix_match_unit` replaces `hash_block_size` | --- #### 5. Ops Module (Unify flash_linear_attention Import Path) | File | Change Reason | |------|---------------| | `vllm_ascend/_310p/ops/fla/idex.py` | `prepare_lens`/`tensor_cache` imported directly from `vllm.third_party.flash_linear_attention.ops` (legacy `vllm.model_executor.layers.fla.ops` path deprecated) | | `vllm_ascend/_310p/ops/fla/l2norm.py` | `tensor_cache` switched to v0.26.0 new path | | `vllm_ascend/ops/bailing_moe_linear_attn.py` | `layernorm_fn` switched to `third_party.flash_linear_attention.ops.layernorm_guard` | | `vllm_ascend/ops/gdn.py` | `l2norm_fwd` switched to new path | | `vllm_ascend/ops/triton/fla/chunk.py` | `SUPPRESS_LEVEL` switched to `third_party.flash_linear_attention.ops.utils` | | `vllm_ascend/ops/vocab_parallel_embedding.py` | `_apply_head` directly calls parent `super()._apply_head(...)`; remove `lm_head.quant_method.apply` legacy branch | --- #### 6. Patch Module (Compatibility Patch Cleanup) | File | Change Reason | |------|---------------| | `vllm_ascend/patch/__init__.py` | Remove `hunyuan_vl_processor_compat.py` patch documentation (v0.26.0 already merged vLLM PR #47867) | | `vllm_ascend/patch/hunyuan_vl_processor_compat.py` | `vllm_version_is("0.25.1")` → `vllm_version_is("0.26.0")` (patch target switch) | | `vllm_ascend/patch/platform/patch_kv_cache_coordinator.py` | Multiple sites unified to v0.26.0 behavior: `_select_kv_token_budget` returns `max_in_flight_tokens`; `enable_partial_hash_hits` removes pre-condition; `_get_block_hashes` returns bare `block_hashes` (remove `BlockHashListWithBlockSize` wrapper); `find_longest_cache_hit` unified to 3-tuple return; use `max_in_flight_tokens` parameter | | `vllm_ascend/patch/platform/patch_mamba_manager.py` | `AscendMambaManager` removes v0.25.1 hand-implemented mamba hit lookup; unify to call upstream `super().find_longest_cache_hit(...)` | | `vllm_ascend/patch/worker/__init__.py` | `patch_eagle_speculator` / `patch_dflash_speculator` changed to unconditional enable | | `vllm_ascend/patch/worker/patch_idex_310.py` | `fla_index` switched to `third_party.flash_linear_attention.ops.index` | | `vllm_ascend/patch/worker/patch_qwen3_5.py` | Remove `_IS_VLLM_RELEASE` flag and v0.25.1 `Qwen3_5DecoderLayer.forward` replacement branch; MTP condition simplified to unconditional; `_ascend_all_gather_hidden_and_residual` patched unconditionally | | `vllm_ascend/patch/worker/patch_triton.py` | `fla_ops`/`fla_fused_recurrent`/`fla_layernorm_guard` all switched to `third_party.flash_linear_attention.ops.*` path | --- #### 7. Worker V2 (Model Runner V2 Adaptation) | File | Change Reason | |------|---------------| | `vllm_ascend/__init__.py` | Adjust `install_hunyuan_vl_processor_compat()` call order (v0.26.0 load order changed: moved after `register_model`) | | `vllm_ascend/worker/block_table.py` | Before `_compute_slot_mapping_kernel` call, unconditionally set `KV_CACHE_BLOCK_SIZE` and `BLOCKS_PER_KV_BLOCK` constants (enable vLLM #40996 kernel parameters) | | `vllm_ascend/worker/v2/attn_utils.py` | In `build_attn_metadata`, `seq_lens_cpu_upper_bound is None` check removes `not vllm_version_is("0.25.1")` pre-condition | | `vllm_ascend/worker/v2/model_runner.py` | ① `sort_batch_req_ids` and `maybe_build_ascend_pcp_manager` moved out of conditional block; ② `prepare_inputs` unified to call `sort_batch_req_ids(num_tokens_per_req, self.decode_query_len)` | --- #### 8. Spec Decode (Multi-Step Decode / Draft Attn Metadata Signature Adaptation) | File | Change Reason | |------|---------------| | `vllm_ascend/worker/v2/sample/gumbel.py` | logits dtype adaptation: v0.26+ no longer upcasts to FP32; `BLOCK_SIZE` reduced from `44032` to `32768` (to fit Ascend A2/A3 UB 192 KB limit) | | `vllm_ascend/worker/v2/spec_decode/autoregressive/speculator.py` | `_multi_step_decode` and `_build_draft_attn_metadata` split into v0.26.0 / else dual implementations (v0.26.0 drops `seq_lens_cpu_upper_bound` / `step` parameters) | | `vllm_ascend/worker/v2/spec_decode/dflash/aclgraph.py` | `__init__` removes `**kwargs` forwarding; `capture()` simplifies call (v0.26.0 `causal` parameter moved from `__init__` into `capture()`) | | `vllm_ascend/worker/v2/spec_decode/dflash/speculator.py` | `_build_draft_attn_metadata` split into version-specific dual implementations; `propose()` `input_batch` cache moved out of conditional block | | `vllm_ascend/worker/v2/spec_decode/dspark/speculator.py` | Same pattern as dflash: dual implementations + unconditional `input_batch` cache | | `vllm_ascend/worker/v2/spec_decode/eagle/aclgraph.py` | `create_forward_fn` differentiates lambda by v0.26.0: v0.26.0 drops `seq_lens_cpu_upper_bound` parameter | | `vllm_ascend/worker/v2/spec_decode/mtp/speculator.py` | `_build_draft_attn_metadata` split into version-specific dual implementations (v0.26.0 drops `seq_lens_cpu_upper_bound`/`step`) | ### Does this PR introduce _any_ user-facing change? ### How was this patch tested? - vLLM version: v0.25.1 - vLLM main: vllm-project/vllm@d02df74 Signed-off-by: hfadzxy <starmoon_zhang@163.com>
1 parent e3bb5f5 commit 7662ec9

52 files changed

Lines changed: 395 additions & 569 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/vllm-release-tag.commit

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.25.1
1+
v0.26.0

.gitleaks.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ paths = [
6060
]
6161
rules = ["generic-api-key"]
6262

63+
# Allow monkey-patch identifier false positives in patch_qwen3_5.py
64+
# (generic-api-key matches long class/function names like
65+
# Qwen3_5MultiTokenPredictor.forward = qwen3_5_mtp_forward)
66+
[[allowlists]]
67+
paths = [
68+
"^vllm_ascend/patch/worker/patch_qwen3_5.py"
69+
]
70+
rules = ["generic-api-key"]
71+
6372
# Placeholder allowlist for syntax validation; does not permit any files
6473
[[allowlists]]
6574
paths = ["^$"]

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
3939

4040
# Install vLLM
4141
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
42-
ARG VLLM_TAG=v0.25.1
42+
ARG VLLM_TAG=v0.26.0
4343
ARG VLLM_COMMIT=""
4444
RUN if [ -n "$VLLM_COMMIT" ]; then \
4545
git init /vllm-workspace/vllm && \

Dockerfile.310p

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
3333

3434
# Install vLLM
3535
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
36-
ARG VLLM_TAG=v0.25.1
36+
ARG VLLM_TAG=v0.26.0
3737
ARG VLLM_COMMIT=""
3838
RUN if [ -n "$VLLM_COMMIT" ]; then \
3939
git init /vllm-workspace/vllm && \

Dockerfile.310p.openEuler

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
3232

3333
# Install vLLM
3434
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
35-
ARG VLLM_TAG=v0.25.1
35+
ARG VLLM_TAG=v0.26.0
3636
ARG VLLM_COMMIT=""
3737
RUN if [ -n "$VLLM_COMMIT" ]; then \
3838
git init /vllm-workspace/vllm && \

Dockerfile.a3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
4141

4242
# Install vLLM
4343
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
44-
ARG VLLM_TAG=v0.25.1
44+
ARG VLLM_TAG=v0.26.0
4545
ARG VLLM_COMMIT=""
4646
RUN if [ -n "$VLLM_COMMIT" ]; then \
4747
git init /vllm-workspace/vllm && \

Dockerfile.a3.openEuler

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
3838

3939
# Install vLLM
4040
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
41-
ARG VLLM_TAG=v0.25.1
41+
ARG VLLM_TAG=v0.26.0
4242
ARG VLLM_COMMIT=""
4343
RUN if [ -n "$VLLM_COMMIT" ]; then \
4444
git init /vllm-workspace/vllm && \

Dockerfile.a5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
4141

4242
# Install vLLM
4343
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
44-
ARG VLLM_TAG=v0.25.1
44+
ARG VLLM_TAG=v0.26.0
4545
RUN git clone --depth 1 -b $VLLM_TAG $VLLM_REPO /vllm-workspace/vllm
4646
# In x86, triton will be installed by vllm. But in Ascend, triton doesn't work correctly. we need to uninstall it.
4747
RUN VLLM_TARGET_DEVICE="empty" python3 -m pip install -e /vllm-workspace/vllm/[audio] --extra-index https://download.pytorch.org/whl/cpu/ && \

Dockerfile.a5.openEuler

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
3838

3939
# Install vLLM
4040
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
41-
ARG VLLM_TAG=v0.25.1
41+
ARG VLLM_TAG=v0.26.0
4242
RUN git clone --depth 1 -b $VLLM_TAG $VLLM_REPO /vllm-workspace/vllm
4343
# In x86, triton will be installed by vllm. But in Ascend, triton doesn't work correctly. we need to uninstall it.
4444
RUN VLLM_TARGET_DEVICE="empty" python3 -m pip install -e /vllm-workspace/vllm/[audio] --extra-index https://download.pytorch.org/whl/cpu/ && \

Dockerfile.openEuler

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RUN pip config set global.index-url ${PIP_INDEX_URL} && \
3838

3939
# Install vLLM
4040
ARG VLLM_REPO=https://github.com/vllm-project/vllm.git
41-
ARG VLLM_TAG=v0.25.1
41+
ARG VLLM_TAG=v0.26.0
4242
ARG VLLM_COMMIT=""
4343
RUN if [ -n "$VLLM_COMMIT" ]; then \
4444
git init /vllm-workspace/vllm && \

0 commit comments

Comments
 (0)