38 个 commit,涉及 189 个文件,+6151/-2588 行变动。

概要

统计项 数值
Commit 数 38
变更文件 189
新增行数 +6151
删除行数 -2588

Commit 列表

📦 Other

  • 54503ec #43117 — fix(processor): route MiMo-V2-Omni media fetch through MediaConnector (#43117)
    • 作者: Ievgen Bondarenko | +22/-76 | 1 个文件

    What this PR does Fixes SSRF + arbitrary local file read in MiMoV2OmniMultiModalProcessor by routing caller-supplied media strings through MediaConnector instead of raw requests.get / Image.open calls. vllm/transformers_utils/processors/mimo_v2_omni.py had two sinks: - _fetch_image() at line 231 - issued requests.get(src, timeout=30) directly on any http:// or https:// string, did Image.open(s…

  • 0067311 #48333 — fix(entrypoints): stop resolve_items leaking in-flight media fetch tasks on partial failure (#48333)
    • 作者: ErenAta16 | +52/-4 | 2 个文件

    AsyncMultiModalItemTracker.resolve_items fans out each modality’s media fetches with plain asyncio.gather. When one fetch in a modality fails (bad URL, timeout, an SSRF/domain-allowlist rejection, a decode error), gather propagates that exception immediately, but it does not cancel or await the sibling fetches for that same modality that are still in flight. Those tasks keep running detached from …

  • 51878e5 #44455 — [2/N][KV-Cache Layout Refactor] Pack K/V into the content dim across attention backends (#44455)
    • 作者: Lucas Wilkinson | +664/-604 | 31 个文件

    PR #42374 (first part of RFC #42082) has been split into 4 PRs: #44454 [1/N][KV-Cache Layout Refactor] Refactor DSV4 KV cache config -> #44455 [2/N][KV-Cache Layout Refactor] Pack K/V into the content dim across attention backends #44456 [3/N][KV-Cache Layout Refactor] Standardize Mamba cache; drop get_transfer_cache_regions #44458 [4/N][KV-Cache Layout Refactor] Standardize KV cache layout Packs …

  • 76fedaa #48232 — [XPU][UT]Fix InternS1ProForConditionalGeneration AssertionError (#48232)
    • 作者: Yejing Lai | +6/-0 | 1 个文件

    Fix UT tests/models/test_initialization.py::test_can_initialize_large_subset[InternS1ProForConditionalGeneration] meet AssertionError: 2 cannot be divided by 8 Root cause: InternS1Pro uses router_n_groups instead of n_group.

  • 19069bc #48335 — FP32 router GEMV optimization (#48335)
    • 作者: Jee Jee Li | +284/-67 | 4 个文件

    Test Result —

  • 0b6636c #48079 — [XPU]remove is_xxx from moe class and bump up kernels (#48079)
    • 作者: Qiming Zhang | +7/-37 | 3 个文件

    Align with https://github.com/vllm-project/vllm-xpu-kernels/pull/376 Tested below model, results is meaningful. model=Qwen/Qwen3-30B-A3B model=Qwen/Qwen2.5-Omni-7B-AWQ model=openai/gpt-oss-20b model=Qwen/Qwen3-30B-A3B-FP8 model=INCModel/Qwen3-30B-A3B-Instruct-2507-MXFP8-LLMC Bump up xpu kernels.

  • 4a6440a #47867 — Bump Transformers version to 5.13.0 (#47867)
    • 作者: Harry Mellor | +30/-24 | 12 个文件

    PRs needed for Transformers patch: - https://github.com/huggingface/transformers/pull/47148 - https://github.com/huggingface/transformers/pull/47174 - https://github.com/huggingface/transformers/pull/47245 — Errors resolved: - AttributeError: ‘str’ object has no attribute ‘module’ - https://github.com/huggingface/transformers/pull/46876 added if key.module.startswith(“transformers.”): wh…

  • bec0a4e #48269 — [Revert] [Build] Update vllm …builds FA3 with torch stable API (#48269)
    • 作者: Lucas Wilkinson | +1/-1 | 1 个文件
    • Effectively a revert of https://github.com/vllm-project/vllm/pull/46644 - Bump the bundled vllm-flash-attn source pin from b3964b1d8b95d8e8447435668ab169a2700bab65 to bb9a72e7dde0dc614ffc663e052cd6a19ce73a42. - Picks up vllm-project/flash-attention#160, which reverts vllm-project/flash-attention#152 after it broke FLASH_ATTN_MLA_SPARSE in vllm-project/vllm#48221. ## Tests - git diff –check - uv…
  • 3d99b04 #48278 — [Logs] DP Supervisor Log Improvement (#48278)
    • 作者: Robert Shaw | +96/-42 | 2 个文件

    Test Result —

  • 1bf3997 #47851 — [Quantization] Bound peak memory when repacking FP4 MoE weights for Marlin (#47851)
    • 作者: Joe Rowell | +34/-43 | 1 个文件

    The FP4 MoE Marlin prep functions repack each expert’s weight into a Python list and torch.cat the list into the final [E, …] tensor. At the cat, the per-expert list and the concatenated result are both live, transiently holding ~2x the repacked weight footprint. For large MoE checkpoints on unified-memory devices (e.g. GB10 where “GPU” memory is shared host DRAM) this spike can exhaust the box …

  • 29fd688 #48268 — Add VLLM_FLASHINFER_AUTOTUNE_SKIP_OPS and skip CuTeDSL fp4_gemm autotuning by default (#48268)
    • 作者: Michael Goin | +46/-2 | 2 个文件

    CuTe-DSL mm_fp4 autotuning JIT-compiles a fresh kernel per candidate tactic, adding 7+ minutes to warmup, while its fallback tactic is already the analytical heuristic — so skipping it is free. This passes skip_ops={“fp4_gemm”} (FlashInfer 0.6.13, flashinfer-ai/flashinfer#3396) to the warmup autotune, scoped to when the CuTe-DSL NVFP4 linear kernel is actually selected since all mm_fp4 backends tu…

  • f378f79 #47785 — handle topk_ids padding in align sum kernel (#47785)
    • 作者: gnovack | +63/-54 | 2 个文件

    Some all-to-all backends use -1 in the topk_ids to indicate that a token is routed to a non-local expert (e.g. see DeepEP elastic dispatch logic), but currently the moe_align_block_size kernel does not handle -1 values. For example this logic will attempt to read expert_map[-1]; Confirmed MoE kernel tests:

  • c227aaa #47419 — [ROCm] Enable DeepSeek-V4 DSpark speculative decoding on AMD (MI350X / MI355X, gfx950) (#47419)
    • 作者: larryli2-amd | +586/-14 | 6 个文件

    DSpark speculative decoding for DeepSeek-V4-Pro (1.6T) was previously NVIDIA-only in vLLM: vllm/models/deepseek_v4/init.py sets DSparkDeepseekV4ForCausalLM = None on ROCm, so –speculative-config ‘{“method”:“dspark”,…}’ fails at model-load time on AMD GPUs. This PR enables DSpark on ROCm by porting the draft model to the AMD subpackage and wiring the two pieces the draft depends on t…

  • 08dfd68 #47857 — [Model] Add LongCat-Flash-Lite (n-gram embedding) (#47857)
    • 作者: Michael Goin | +630/-12 | 16 个文件

    Adds LongcatFlashNgramForCausalLM, the n-gram-embedding variant of LongCat-Flash, as a Model-Runner-V2 model. The n-gram input layer’s per-request token history is isolated in a ModelState (rather than threaded through the shared runner, as the abandoned #33611 attempt did), and the n-gram id hashing runs in a small CUDA kernel adapted from SGLang. The model auto-selects the V2 runner and a no-com…

  • 978a6df #48041 — [Build/CI] Build arm64 PR and postmerge image builds for Blackwell SM10x and SM110 (#48041)
    • 作者: Tyler Michael Smith | +3/-2 | 1 个文件

    The main benefit here is to deploy an image built in CI for a pull request directly onto a GB200 or GB300, which is not possible today.

  • 85c09e9 #41811 — fix: correct load_weights track logic and enable weight integrity for… (#41811)
    • 作者: HuYiPeng | +87/-0 | 2 个文件

    Problem Description ### Purpose 1. Fix the weight file missing detection vulnerability in filter_duplicate_safetensors_files() - Add disk file existence validation before intersection check - Detect weight files referenced in index.json but actually missing - Raise FileNotFoundError directly - Cover all model scenarios with index files 2. Fix the issue of no notification for quantized model wei…

  • fabec87 #48153 — [Model] Migrate MistralLarge3ForCausalLM to AutoWeightsLoader (#48153)
    • 作者: FAN YUCHEN | +89/-57 | 2 个文件

    [Model] Migrate MistralLarge3ForCausalLM to AutoWeightsLoader Migrates MistralLarge3ForCausalLM from manual load_weights to AutoWeightsLoader + WeightsMapper, addressing part of #15697. Changes: - Replaced the 22-entry remapping dict + _remap_mistral_to_ds method with a WeightsMapper using start/end-anchored regex patterns - Also migrated EagleMistralLarge3ForCausalLM using WeightsMapper.or() …

  • c241c7a #47883 — [Rust Frontend] Add roundtrip fixtures for more chat parsers (#47883)
    • 作者: Reid | +42/-0 | 1 个文件

    Add Rust chat roundtrip coverage for additional existing parser routes: - MiniMaxAI/MiniMax-M3: reasoning + tool calls - zai-org/GLM-4.5: reasoning + tool calls - zai-org/GLM-4.6: reasoning + tool calls - nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16: reasoning ## Test Result —

  • e23b193 #42424 — Deepstream video backend (#42424)
    • 作者: ViranjanPagar | +212/-11 | 3 个文件

    Adds a DeepStream-based video loader backend (VLLM_VIDEO_LOADER_BACKEND=deepstream) for GPU-resident NVDEC video decode, plus streaming chat-completion endpoints for live RTSP captioning. Implements RFC #41843. What this enables: - File input — decode H.264 / H.265 video files on GPU via NVDEC + GStreamer instead of OpenCV/PyAV (CPU). Chunks decode in parallel through a pool of GStreamer p…

  • 424df4f #48211 — [Model][CI/Build] Cosmos3: enable registry tests and register Cosmos3-Super (#48211)
    • 作者: Mingfei Guo | +8/-2 | 3 个文件

    is_available_online=False was set on the Cosmos3 registry entry in #43356 because the checkpoint wasn’t published yet. nvidia/Cosmos3-Nano went public days after the merge, but the flag stayed, so the registry-driven tests (initialization, multimodal processing, tensor schema) still skip this architecture. This PR: - Removes the stale flag. - Registers nvidia/Cosmos3-Super as an extras model and l…

  • 074bdd0 #47959 — [Rust Frontend] Integrate MM video support (#47959)
    • 作者: Bugen Zhao | +1571/-516 | 16 个文件

    #47530 has bumped the version of llm-multimodal where basic video support was included. This PR adds support for OpenAI-style video_url chat content and reshapes the existing multimodal path from image-specific code into per-modality preparation, so that it will also be easier for us to add more modality in the future. Note that the current video path uses the existing llm-multimodal ffmpeg-backed…

  • 216ee58 #48126 — Add XPU nightly and release image publishing to DockerHub (#48126)
    • 作者: wenjun liu | +55/-0 | 3 个文件

    What changed Add a nightly Buildkite step to publish XPU images after the XPU manifest is created in release-pipeline.yaml. Add a dedicated XPU nightly publish script in push-nightly-builds-xpu.sh. Extend the release image publishing flow in publish-release-images.sh to publish XPU release tags and push manifest tags. ## Test Result —

  • 28eaf05 #44472 — [XPU] Enable v1/sample tests on XPU CI (#44472)
    • 作者: Chaojun Zhang | +1/-3 | 1 个文件

    Enable the full v1/sample test suite on XPU CI.

🧪 CI/Tests

  • 1bd8f80 #48328 — [CI] Point CI at Transformers release rather than release branch (#48328)
    • 作者: Harry Mellor | +8/-8 | 8 个文件
  • f36284a #47180 — [CI] Add TORCH_NIGHTLY=1 build mode (run full suite on torch nightly) (#47180)
    • 作者: Andrey Talman | +82/-14 | 5 个文件

    Add an opt-in path to build and run the existing vLLM CI suite against the latest PyTorch nightly wheels, to produce a continuous “vLLM vs torch nightly” signal (e.g. a daily Buildkite scheduled build). This is the clean replacement for the earlier draft #46510, which carried a stale description and a couple of bugs (fixed here). #46510 can be closed once this lands. ## Behavior When TORCH…

  • 433f291 #48186 — [CI] Right-size test-area timeouts from nightly durations (#48186)
    • 作者: Kevin H. Luu | +183/-183 | 30 个文件

    Right-size timeout_in_minutes across all .buildkite/test_areas/*.yaml files based on the actual per-job runtimes observed in the nightly full CI run (build 77252, source: schedule, “Full CI run - nightly”). The nightly full run relaxes per-step timeouts and runs every job to completion, so it exposes true runtimes. Many premerge timeouts are either well below the real runtime (risking spurious…

🔩 Misc

  • 04d553f #47316 — [Misc] Use meta tensor for KV cache stride calculation (#47316)
    • 作者: Lucas Wilkinson | +1/-1 | 1 个文件

    Summary: - Use a meta tensor when computing the default stride for padded KV cache views. - Avoid allocating a real tensor just to read .stride(). Tests: - .venv/bin/python -m pytest tests/v1/worker/test_attn_utils.py -q - pre-commit run ruff-check –files vllm/v1/worker/gpu/attn_utils.py - commit hooks AI assistance was used to prepare this change.

  • 68ea76e #48220 — [Misc] Remove dead code in ViT functionality test (#48220)
    • 作者: Isotr0py | +0/-438 | 1 个文件
    • Remove tests/models/multimodal/generation/test_vit_backend_functionality.py which is always skipped, because we have already had tests/models/multimodal/generation/test_vit_cudagraph.py which also covered encoder CG. ## Test Result —

🐛 Bug Fix

  • 9c18e90 #47314 — [BugFix] Fix packed HND KV cache reshape for FlashAttention (#47314)
    • 作者: Lucas Wilkinson | +1/-1 | 1 个文件

    Fixes #47054. Summary: - Preserve packed KV cache physical layout before permuting back to backend logical shape. - This keeps FlashAttention HND caches logically shaped as [blocks, 2, block_size, heads, dim]. Repro used during debugging: Tests: - tested above repro - .venv/bin/python -m pytest tests/v1/worker/test_attn_utils.py -q - pre-commit run ruff-check –files vllm/v1/worker/gpu/attn_utils….

  • 0923879 #46276 — [BugFix] weights processing peak memory reduction for nvfp4 MoE layers (#46276)
    • 作者: Jimmy Lee | +36/-29 | 2 个文件

    When serving MoE models such as nvidia/Qwen3.6-35B-A3B-NVFP4 with moe_backend flashinfer_b12x on 16GB of vram, reorder_w1w3_to_w3w1 returns 2 new replacement tensors (weight, scale) which result in OOM. This PR implements in-place chunk swaps to mitigate memory spikes on more resource constrained systems. The algorithm will use a chunk size to be half the size of the input tensor or 64MB, whicheve…

  • ed908cf #45984 — [Bugfix] Fix thinking_token_budget not enforced after natural re-entry (#45984)
    • 作者: Ashwin Giridharan | +453/-47 | 3 个文件

    Fixes #45974. Complements PR #43757 (which fixed forced-end re-entry). Together they fully fix #43708. After a model naturally emits before exhausting its budget, ThinkingBudgetStateHolder fails to detect subsequent blocks. The state machine retains stale start_thinking/end_thinking positions from Block 1, so _find_last_sequence_index re-finds old tokens and the new block is never…

  • 26ff616 #48276 — [Bugfix][Test] Register Qwen/Qwen3.5-4B example model (#48276)
    • 作者: Nick Hill | +1/-0 | 1 个文件

    #48113 retargeted DFlashDraftModel from Qwen/Qwen3.5-4B to Qwen/Qwen3-4B, which removed the only tests/models/registry.py reference to Qwen/Qwen3.5-4B. tests/renderers/test_hf.py::test_resolve_content_format_hf_defined[Qwen/Qwen3.5-4B-openai] still looks that model up via HF_EXAMPLE_MODELS.find_hf_info and now fails with “No example model defined for Qwen/Qwen3.5-4B”. Register Qwen/Qwen3.5-4B as a…

  • 735def4 #48045 — [Bugfix] Fix FlashMLA dense fp8 metadata crash (num_sm_parts clamp) (#48045)
    • 作者: Matthew Bonanni | +1/-1 | 1 个文件

    Fixes #47935 ## Root cause FlashMLA’s get_mla_decoding_metadata_dense_fp8 computes This can be 0 when ceil_div(num_q_tokens_per_head_k, block_size_m) > sm_count (with num_heads_k == 1). The bf16/fp16 version clamps the minimum to 1: https://github.com/vllm-project/FlashMLA/blob/a6ec2ba7bd0a7dff98b3f4d3e6b52b159c48d78b/csrc/api/dense_decode.h#L79 In vLLM, num_q_tokens_per_head_k = max_query_len * n…

  • b12cca6 #39988 — [Bugfix] Fix turboquant FP8 cast failure for BF16 models on Ampere GPUs (#39988)
    • 作者: XuZhou | +1/-1 | 1 个文件

    Fix turboquant attention backend crash when running BF16 models (e.g. Qwen2). Triton’s convert_custom_float8 only supports FP16/FP32 inputs. When the model’s KV dtype is BF16, the direct BF16 → FP8 cast in _tq_fused_store_fp8 triggers an AssertionError. Fix by casting to FP32 first, which is safe and lossless for all input dtypes (FP16, BF16, FP32). bash .venv/bin/python -m vllm.entrypoints.openai…

  • 7614b88 #48113 — [Bugfix][Spec Decode] Fix DFlash draft/target layer-count mismatch (#48113)
    • 作者: Nick Hill | +9/-1 | 2 个文件

    The DFlashDraftModel test paired z-lab/Qwen3-4B-DFlash-b16 with Qwen/Qwen3.5-4B, but that drafter’s dflash_config.target_layer_ids ([1, 9, 17, 25, 33], resolved with +1 to aux layers (2, 10, 18, 26, 34)) require a target with at least 35 layers. Qwen3.5-4B has only 32, so the aux hidden state for layer 34 is never produced: the drafter’s fc is sized for 5 concatenated aux features but receives 4, …

🔧 Refactor

  • e257faf #48158 — [Refactor] Remove unused rocm kernel combine_topk_swa_indices_ragged (#48158)
    • 作者: Wentao Ye | +0/-236 | 2 个文件

    Remove unused rocm kernel combine_topk_swa_indices_ragged and related test

⚡ Performance

  • 300e337 #46998 — [Perf] fuse more rmsnorm and all-reduce in qwen3.5 (#46998)
    • 作者: Jiangyun Zhu | +21/-31 | 2 个文件

    Qwen3NextDecoderLayer currently passes a preallocated output buffer into its attention submodules, which write their result via slice assignment: It prevents all reduce rmsnorm fusion PR main ## Test Result main |Tasks|Version| Filter |n-shot| Metric | |Value | |Stderr| |—–|——:|—————-|—–:|———–|—|—–:|—|—–:| |gsm8k| 3|flexible-extract| 5|exact_match|↑ |0.9310|± |…

✨ New Feature

  • 5715fde #44301 — [Feature][Parser] Support include_reasoning param for non-Harmony models (#44301)
    • 作者: alberto | +765/-26 | 13 个文件

    Adds include_reasoning support for non-Harmony models across both the Responses API and the unified Parser interface. OpenAI’s include_reasoning parameter lets clients suppress reasoning content (e.g., blocks) from the API response without affecting the model’s actual inference. The model still reasons, but the chain-of-thought is stripped before returning the response. This red…