29 个 commit,涉及 139 个文件,+3788/-1247 行变动。

概要

统计项 数值
Commit 数 29
变更文件 139
新增行数 +3788
删除行数 -1247

Commit 列表

📦 Other

  • b23bd73 #47245 — [XPU]add sycl path for Mhc (#47245)
    • 作者: Liangqiusong | +5/-20 | 1 个文件

    This PR replaces the native/Triton-based fallback implementations in the forward_xpu methods of the MHC (Multi-Head Chunking) layer with dedicated SYCL kernel calls for the DeepSeek V4 (DSv4) model on Intel XPU. Specifically, it: Replaces self.forward_native(…) calls with optimized SYCL kernel ops: - torch.ops._xpu_C.mhc_pre (in MHCPreOp.forward_xpu) - torch.ops._xpu_C.mhc_post (in MHCPostOp.for…

  • e2d7ade #49161 — [Rust Frontend] Bump xgrammar-structural-tag and enable local extension (#49161)
    • 作者: Bugen Zhao | +84/-85 | 20 个文件
    • Bump xgrammar-structural-tag to v0.2.0 (which mirrors upstream Python release v0.2.4). - Replace Parser::structural_tag_model() which returns an exhaustive enum Model from xgrammar-structural-tag, with structural_tag_builder() -> Option<&dyn StructuralTagBuilder> where upstream Model automatically implements, while still leave the room for us to add local extensions by creating new types impleme…
  • 15cb8e1 #49159 — [Multimodal] Allow keeping original image mode for ImageIO (#49159)
    • 作者: Isotr0py | +77/-15 | 5 个文件
    • Allow image_mode=None to keep image’s original mode during MediaIO ## Test Result —
  • f007cce #48679 — [KV Offload] Support self-describing KV events with TieringOffloadingSpec (#48679)
    • 作者: Chang Guo | +452/-65 | 6 个文件

    Related to #38260 and follows up on #43468. #43468 added opt-in self-describing KV events for GPU-to-CPU stores, but TieringOffloadingSpec still rejected the flag. Tier promotions also bypass the normal store path, so their CPU BlockStored events had only placeholder payloads. Those placeholders do not include token IDs, a parent hash, or a block size. Without that data, Dynamo cannot index the pr…

  • 530ee36 #49144 — fix(openai): reject non-numeric logprobs with 400 instead of 500 (#49144)
    • 作者: hcl | +49/-0 | 4 个文件

    check_logprobs is a mode=“before” validator, so it compares prompt_logprobs/logprobs (completion) and prompt_logprobs/top_logprobs (chat) against ints on the raw request body. A non-numeric JSON value hits the comparison and raises TypeError → HTTP 500. Repro: Type-guard the fields up front so a bad value returns a clean 400 instead. Numeric input is unchanged; added unit tests for both request ty…

  • 818cf61 #49042 — [Rust Frontend] Fix macro-based content format detection (#49042)
    • 作者: Reid | +34/-3 | 2 个文件

    The Rust chat template detector only recognized loops directly over message.content. It missed templates that pass the content into a macro and iterate with {% for item in content %}. Qwen3.5 uses the macro form, causing auto mode to incorrectly select the string content format. Multimodal messages consequently lost the <|vision_start|> and <|vision_end|> wrappers around <|image_pad|>, which could…

  • 823eaf6 #48334 — [XPU] FP8 o_proj with fp8_bmm and load-time scale transpose (#48334)
    • 作者: Xiaochang Wu | +124/-15 | 5 个文件

    Replace the BF16 reference _o_proj path (rocm_inv_rope_einsum) in XPU DeepSeek-V4 attention with a native FP8 BMM path using fp8_bmm, and optimize scale handling by moving transpose+reshape to load time. vllm/model_executor/kernels/linear/scaled_mm/xpu.py - Restore process_weights_after_loading in XPUFp8BlockScaledMMKernel: - Transpose weight_scale_inv from checkpoint layout [N/128, K/128] to …

  • f1f1259 #48781 — [Rust Frontend] Use zero-copy slicing for multimodal tensors (#48781)
    • 作者: Sage | +91/-99 | 4 个文件

    Summary After multimodal content is prepared, its batched results are separated into individual image or video patches before being sent onward. An extra copy was happening during this handoff. This change removes that redundant copy while preserving the same output. This is safe because it does not change how inputs are processed or what is sent onward; it only removes a temporary duplicate. …

  • df13b5a #47122 — [XPU] [MoE] add quant input when prepare for fusedmoe (#47122)
    • 作者: zofia | +37/-4 | 3 个文件

    Based on https://github.com/vllm-project/vllm/pull/47256 and https://github.com/vllm-project/vllm-xpu-kernels/pull/450

  • 4938d44 #47871 — [CPU] fixes heterogeneous NIXL KV transfer into CPU_ATTN decode workers (#47871)
    • 作者: Sihan Chen | +15/-13 | 2 个文件

    fix heterogeneous NIXL KV transfer into CPU_ATTN decode workers, and resolve Prefill(XPU) -> Decode(CPU) accuracy issue. The accuracy issue was fixed earlier in https://github.com/vllm-project/vllm/pull/38935. However after https://github.com/vllm-project/vllm/pull/44393 , the layout was changed again. This PR fixes the issue. Prefill (XPU) -> Decode (CPU) accuracy is validated locally in prefill …

  • 5c9f655 #47641 — [Hardware][CPU] Enable granite-4 model on cpu (#47641)
    • 作者: Akash kaothalkar | +1283/-62 | 21 个文件

    Enables the IBM Granite 4.0 model family (8 variants: h-micro, h-micro-base, h-small, h-small-base, h-tiny, h-tiny-base, tiny-preview, tiny-base-preview) to run correctly on CPU (ppc64le/Power10) with vLLM. This addresses [. #27971 — CPU inference failure for granite-4.0-h-tiny]. ## Test Result —

  • ef0aa7c #49044 — [ROCm] [Release] [Per-commit] Reenable per commit rocm wheel (#49044)
    • 作者: TJian | +354/-357 | 1 个文件

    Test Result —

🐛 Bug Fix

  • 0a5069e #48563 — [Bugfix][Gemma4] Fix ModelOpt mixed-precision MoE config mapping (#48563)
    • 作者: wangqian | +45/-4 | 3 个文件

    Fix ModelOpt MIXED_PRECISION dispatch for Gemma4 checkpoints whose quantized_layers records the MoE parent module as model.language_model.layers.N.experts. The issue was reproduced and validated with wangqia0309/gemma-4-26B-A4B-it_nvfp4_experts_fp8_dense_fp8_attn-kv_fp8, which uses NVFP4 experts, FP8 dense and attention layers, and an FP8 KV cache. vLLM registers the runtime FusedMoE module under …

  • 8ce53a6 #47574 — [Bugfix] Zero new KV blocks for quantized + sliding-window hybrid caches (#47574)
    • 作者: EdalatiAli | +18/-1 | 1 个文件

    A hybrid KV cache that quantizes full-attention layers but keeps sliding-window layers in higher precision (–kv-cache-dtype fp8 –kv-cache-dtype-skip-layers sliding_window) produces NaN / all-zero output once the input exceeds the sliding window. Uniform fp8 and bf16 are fine; only the hybrid combo fails (seen on Blackwell + FlashInfer). ## Root cause Attention groups share one block pool. Th…

  • d835ad5 #49111 — [Bugfix][Rust Frontend] Map missing prompt logprobs for single-token prompts in chat and raw generate (#49111)
    • 作者: Salt Sato | +94/-53 | 4 个文件

    A single-token prompt has no scored prompt-logprobs positions, and the two model runners represent that case differently: Model Runner V1 returns an empty [0, k+1] tensor that decodes to zero scored positions, while Model Runner V2 omits the payload entirely (gpu/sample/prompt_logprob.py hits start_idx >= end_idx after excluding the unscored leading token and never writes the request into prompt_l…

  • 37bf988 #47295 — [XPU][Bugfix] Fix GroupCoordinator device_index (#47295)
    • 作者: Michał Ganczarenko | +4/-7 | 1 个文件

    Fix regression introduced in #45026 (ebfbcfe46) where GroupCoordinator.init makes all subgroups inherit device_index from _WORLD. For CUDA this is safe — device_index passes through logical_device_id_to_visible_device_id() before reaching torch.device(). For XPU and out-of-tree platforms, self.device is set directly as torch.device(f"{platform}:{self.device_index}") with no further remapping. …

  • 9459fc6 #45989 — [Bugfix][RL] Set vLLM config during weight reload (#45989)
    • 作者: aoshen02 | +45/-12 | 2 个文件

    RL weight updates re-run layer post-processing after model initialization. Those paths may call get_current_vllm_config(), but the worker reload APIs did not establish the config context, causing an assertion failure on the FP8 MoE + DeepEP path. This PR wraps the stable worker-level reload boundaries with set_current_vllm_config(): - regular reload_weights - RL start_weight_update, update_weights…

  • 9bc266d #49071 — [Bugfix][KV Offload] Propagate EAGLE mode to SimpleCPU coordinator (#49071)
    • 作者: Yifan Qiao | +3/-3 | 1 个文件

    Propagate EAGLE-family speculative decoding state to the CPU KV-cache coordinator used by SimpleCPUOffloadConnector. The GPU-side coordinator derives use_eagle from VllmConfig.speculative_config, but the SimpleCPU coordinator hard-coded it to False. As a result, CPU prefix-cache lookup did not apply EAGLE’s final-block handling and could reuse the volatile trailing block instead of recomputing the…

  • dcfebf9 #48674 — [Bugfix] Fix logprobs token-string collision from SentencePiece space… (#48674)
    • 作者: aoshen02 | +194/-8 | 2 个文件

    … stripping Fixes #44319 SentencePiece’s decode() strips the leading space from the first token (add_dummy_prefix inverse), causing distinct tokens like “▁true” (id=1565) and “true” (id=3009) to both decode to “true”. When the Legacy Completions API builds top_logprobs as dict[str, float], these collide and overwrite each other — making logprob values appear to change with the requested count. Fix…

  • 2730b65 #49108 — [Bugfix] Fix broken NVVM caused by CuteDSL 4.6.0 (#49108)
    • 作者: Thien Tran | +11/-4 | 2 个文件

    CuteDSL 4.6.0 introduces breaking changes to the NVVM functions. This breaks CuteDSL kernels that use vllm.cute_utils._tcgen05 - GDN prefill - BF16x3 router GEMM Related to #47442 Ran the unit tests ## Test Result —

  • ace9fda #47932 — [CI/Build][BugFix][The Rock][AMD] Add spawn method in vision examples to avoid reinitialization (#47932)
    • 作者: rasmith | +8/-0 | 2 个文件

    This PR adds os.environ[“VLLM_WORKER_MULTIPROC_METHOD”] = “spawn” to the LLM launches in examples/generate/multimodal/vision_language_multi_image_offline.py and examples/generate/multimodal/vision_language_offline.py to avoid reinitialization of CUDA/HIP. Without this, the examples can fail with the following error: In particular, this fails when testing with Python 3.14 ## Test Result Both exampl…

  • e6d1310 #48984 — [Bugfix] Reject removed pooling parameters (#48984)
    • 作者: Taneem Ibrahim | +108/-17 | 9 个文件

    Follow-up to #33477 and #33794. The pooling API removed normalize in favor of use_activation, removed the score task in favor of classify, and split the old encode task into token_embed and token_classify. Two validation gaps remained: 1. OpenAI request models allow unknown fields, so /v1/embeddings, /pooling, and /classify silently accepted removed fields. Validating inside each union member prod…

🔩 Misc

  • ae10e85 #47210 — [Misc][Docs] Remove duplicate CodeGeex4 row in XPU model table (#47210)
    • 作者: Lena Onyshchenko | +0/-2 | 1 个文件

    THUDM/CodeGeex4-All-9B was listed 3x in the XPU supported models table. Keep one.

  • 47d0597 #47211 — [Misc][Docs] Fix broken csrc kernel links in fusions doc (#47211)
    • 作者: Lena Onyshchenko | +2/-2 | 1 个文件

    Both kernels moved under csrc/libtorch_stable/; update the two 404’d links. Made with Cursor

🦀 Rust Frontend

  • c01618f #48930 — [Rust][Benchmark] Integrate vllm-bench to vllm-rs & vllm CLI (#48930)
    • 作者: Bugen Zhao | +421/-280 | 12 个文件

    Signed-off-by: Bugen Zhao i@bugenzhao.com Integrate the Rust benchmark client vllm-bench introduced in #48107 with the main vLLM CLI (both vllm and vllm-rs). The bench crate has been refactored into a reusable library so that the vllm-rs binary can depend on it and integrate with it. The standalone vllm-bench binary is still kept as a thin wrapper around that binary to facilitate development and…

📖 Documentation

  • 5245c80 #49100 — [Doc] Document blocks_per_chunk in the KV offloading guide (#49100)
    • 作者: Itay Etelis | +4/-3 | 1 个文件

    Document the blocks_per_chunk key added in #48878 (docs follow-up requested by maintainers). - Add blocks_per_chunk to the kv_connector_extra_config reference table; note the mutual exclusion on the block_size row. - Cover blocks_per_chunk in the chunk-mode note of self_describing_kv_events and in Tuning Tips.

🧪 CI/Tests

  • 752bd10 #49128 — [ROCm][CI] Fix sparse MLA metadata sync fixture (#49128)
    • 作者: Andreas Karatzas | +2/-0 | 1 个文件

    The failing AMD CI run raised AttributeError: _num_compute_units in the synthetic sparse-MLA builder fixture. git bisect from c233d90aa826df072872df47b201450059be8e71 to b6ff8a2f509cc7ac9c58176f5115a836aa1e08bd identified e94243893dd30256f58644ad4ecf779be757dff8, introduced by regression PR #46832, as the first bad commit. Production construction already initializes the new field; this test intent…

  • 1dcbbd9 #43024 — [CI] Move compatible 1xL4 jobs to H200 35GB MIG (#43024)
    • 作者: Kevin H. Luu | +129/-15 | 17 个文件
    • Give 17 compatible implicit single-GPU job groups not covered by #43164 H200 35GB MIG execution. Together, the two PRs give 20 of the 25 audited groups H200 execution; two migrated groups retain narrow L4 compatibility subsets for hardware-sensitive cases. - Refresh the original broad migration branch against current main and reduce it from the stale 48-job snapshot to the exact compatible remai…

🔧 Refactor

  • ac5f38a #49003 — [Refactor] Extract StructuredOutputsParams creation logic from Request.to_sampling_params (#49003)
    • 作者: yzong-rh | +95/-98 | 5 个文件

    Add extract_structured_outputs() helpers that normalize a request’s StructuredOutputsParams before building sampling params. Facilitate future Parser.adjust_request() implementation of https://github.com/vllm-project/vllm/pull/48116 and https://github.com/vllm-project/vllm/pull/45560 by consolidating the StructuredOutputsParams extraction logic. Deduplicate the structured-output normalization logi…