共 25 个 commit,涉及 392 个文件,+4868/-464 行变动。
概要
| 统计项 | 数值 |
|---|---|
| Commit 数 | 25 |
| 变更文件 | 392 |
| 新增行数 | +4868 |
| 删除行数 | -464 |
Commit 列表
🧪 CI/Tests
- 93e3bc8 #48418 — [XPU][CI]Adjust timeout_in_minutes in Intel GPU CI (#48418)
- 作者: xiangdong | +18/-18 | 7 个文件
Adjust timeout_in_minutes in Intel GPU CI ## Test Result —
- 487dfb3 #48472 — [CI] Add SPDX license header to Rust/Protobuf sources (#48472)
- 作者: Bugen Zhao | +813/-30 | 253 个文件
Signed-off-by: Bugen Zhao i@bugenzhao.com Extend the SPDX license header pre-commit hook to cover Rust and Protobuf sources as well. ## Test Result —
- b7b58d1 #46527 — [ROCm][CI] Cache Rust builds by source inputs (#46527)
- 作者: Andreas Karatzas | +337/-37 | 3 个文件
This boosts perf of the ROCm Docker path where Rust rebuilt even when the PR did not touch Rust. Empirically, rust-build can take avg 5 mins on BK because the stage inherited the full fetch_vllm source tree, so any repo change could invalidate the cargo build layer. The Rust build now uses narrow input stages that copy or sparse-checkout only the Rust sources, rust-toolchain.toml, requirements/bui…
- 27c3e57 #48222 — [CI][Rust Frontend] Pin cargo tool versions (#48222)
- 作者: Bugen Zhao | +35/-46 | 1 个文件
This PR pins the tool versions installed in cargo CI for Rust frontend to enhance reproducibility, to prevent issues like #48170 from happening again. The versions here are extracted from the latest successful run. For tools installed by cargo binstall, use semantic version requirements so that patch updates are still applied. ## Test Result —
- 370b678 #48394 — [CI][2/N] reduce CI time (#48394)
- 作者: Jiangyun Zhu | +8/-4 | 2 个文件
After https://github.com/vllm-project/vllm/pull/48219, the CI wall time is as follows(based on https://buildkite.com/vllm/ci/builds/77652/waterfall): This PR reduces CI wall time by parallelizing long-running kernel and attention tests - Kernels Core Operation:parallelism: 3 - 1:43:07 -> 40min - Kernels Helion:parallelism: 2 - 1:36:13 -> 36min - V1 attention H100:parallelism: 2 - **1:07:14…
📦 Other
- c2c9f7c #48467 — remove force channels_last in Idefics3MultiModalProcessor (#48467)
- 作者: Yan Ma | +4/-1 | 1 个文件
After transformers bumped to 5.13.1(#47867), force channels_last would permute already-CHW tensors and cause below error: pytest -s -v tests/models/multimodal/processing/test_tensor_schema.py::test_model_tensor_schema[HuggingFaceTB/SmolVLM2-2.2B-Instruct] ## Test Result —
- 1be6e93 #48483 — lower memory required for capturing cudagraphs for large cudagraph sizes (#48483)
- 作者: Omer Ullman Argov | +5/-1 | 1 个文件
Fix an over-allocation during memory estimates. When attempting to capture CUDA graphs with large sizes, the dummy KV cache allocated 1 block per-token. However, we only ever need one block per-sequence. This over allocation makes it impossible to capture CUDA graphs for large sizes since it just OOMs. With this fix, the dummy KV cache allocates the true safe minimum of blocks, preventing the …
- b3cfca9 #48490 — [Mypy Fix] Split mypy work (#48490)
- 作者: Wentao Ye | +24/-1 | 1 个文件
There are 1700+ failures for “vllm/model_executor/models”,, this PR split the work so it should be easier to pick subtasks.
- 107a03b #48390 — [Core] Support fp32 lm_head for generation models via head_dtype (RFC #48305 §3.6) (#48390)
- 作者: Karthik Kothuri | +249/-15 | 6 个文件
RL training-inference consistency (RFC #48305 §3.6, “Dtype Replay”) requires vLLM’s rollout logits to match a trainer that computes the lm_head in fp32. vLLM already has ModelConfig.head_dtype (merged for pooling models in #23810), but it was restricted to pooling models — generation models silently fell back to the model dtype. This PR extends head_dtype to generation models (the goal of …
- bea70c7 #48011 — [Attention] Make sliding-window support an explicit backend capability (#48011)
- 作者: Nicolò Lucchesi | +41/-0 | 10 个文件
1/2 of https://github.com/vllm-project/vllm/pull/48012 , needed to get proper backend selection support. I split the PRs because this one is the one which has a ~very tiny impact on existing auto-selector logic, as explained below. cc @MatthewBonanni ### Problem Attention backend selection models every capability constraint explicitly (supports_sink, is_sparse, is_mla, …) except sliding window, so…
- 9e57de7 #40714 — [CPU] Create Proper Numa topology for s390x (#40714)
- 作者: Rehan Khan | +84/-105 | 7 个文件
Create Proper numa topology for s390x. On s390x the cores heirarchy is drawer > book > socket > core and previously only sockets were being considered which hurt the perfomance in TP cases. Create the image and test with TP to check if hierarchy is properly maintained or not ## Test Result —
- 05fa818 #46090 — [CPU][Spec Decode] Support DFlash speculative decoding for GDN models on CPU (#46090)
- 作者: guybd | +755/-10 | 5 个文件
This PR builds on #44029 (DFlash spec decode on CPU). It extends DFlash speculative decoding on the vLLM CPU backend to Gated DeltaNet (GDN) hybrid models (Qwen3.5 / Qwen3.6). start server benchmarking ## Test Result Without this change, DFlash speculative decoding cannot run on the CPU backend: the DFlash input-expansion path depends on GPU/Triton behavior, the CPU GDN conv/SSM kernels reject…
- d973cce #48440 — Re-disable CUDA graph memory profiling on ROCm (#48440)
- 作者: Rohan Potdar | +5/-7 | 1 个文件
Reverts the vllm/v1/worker/gpu_worker.py change from #47366, restoring the pre-#47366 is_cuda() gate so ROCm skips cudagraph memory profiling. On ROCm the profiling capture regresses steady-state decode throughput. #47366’s test-side fix (wait_for_rocm_memory_to_settle) is retained. AI assistance (Claude) was used to prepare this PR.
- 2595d5c #48350 — [Model] Optimize Qwen3.5 on H20 (#48350)
- 作者: zzt | +147/-0 | 1 个文件
Optimize Qwen3.5 Tensor-Parallel Inference by Tuning Config Optimize Qwen3.5 tensor-parallel inference by tuning MoE config. This PR: - Adds a native NVIDIA H20 MoE configuration for E=256, N=256, generated using the vLLM tuner. — ### Validate the H20 Configuration ### Acc Test GSM8K accuracy | image | accuracy | invalid_rate | | – | – | – | | original | 0.84837 | 0.0 | | patch | 0.8650…
- ee5a89f #47287 — [ROCm][MiniMax-M3] Add AITER sparse paged attention (#47287)
- 作者: Tan Pin Siang | +1553/-127 | 15 个文件
This PR adds an opt-in ROCm AITER implementation for MiniMax-M3 sparse attention. MiniMax-M3 sparse attention selects top-k logical blocks of 128 tokens. This PR maps those selected 128-token blocks into AITER page-16 block tables and runs AITER Gluon paged attention over only the selected KV pages. - Uses AITER’s page-16 paged-attention path for MiniMax-M3 sparse attention. - Preserves the fast F…
- 8df14cf #42433 — [EC Connector] Add EC Transfer Params (#42433)
- 作者: omerpaz95 | +416/-12 | 55 个文件
Add ec_transfer_params as a top-level dict[str, Any] | None field to vLLM’s OpenAI-compatible protocol — both on requests (input routing) and responses (output) — mirroring the existing kv_transfer_params pattern exactly. This also wires ECConnectorBase.request_finished() into the scheduler’s _free_request(), so EC connectors can emit transfer params when a request completes. The field propagates …
- 5c0c987 #47987 — Make tiering offload region DP-replica aware (#47987)
- 作者: liranschour | +28/-18 | 4 个文件
Each data-parallel replica is a separate engine with its own KV blocks, so its /dev/shm offload region must be distinct. Derive a per-replica instance id (instance_id_dp{index}) for both the scheduler-side and worker-side SharedOffloadRegion, mirroring the P2P tier’s base_port + data_parallel_index scheme. Also fold the global physical device index back into the replica-local [0, world_size) range…
🐛 Bug Fix
- 56a357e #48256 — [Bugfix][KV Cache] Don’t route uniform-page-size MLA+SWA models into DeepseekV4 packing (#48256)
- 作者: Nicolò Lucchesi | +48/-0 | 2 个文件
group_and_unify_kv_cache_specs() targets DeepseekV4, where MLA and sliding-window MLA layers have different page sizes and must be tuple-packed. It fired for any model containing a SlidingWindowMLASpec, so a non-DeepseekV4 model with a uniform page size was wrongly pushed into the packing path. This results in creating “one-element bins”, while unecessarily triggering separate paths for things lik…
- 36484e4 #48429 — [BugFix] Restore full tokens for Qwen MTP When MoE SP (#48429)
- 作者: Canlin Guo | +20/-2 | 2 个文件
After #47006, the MTP of Qwen is breaking when MoE SP is enabled. Because MTP is calling the DecodeLayer of Qwen instead of the complete model. And we have moved the gather to the front of attention, so it will be shared when you directly call decoder layer api. We should call _all_gather_hidden_and_residual to restore the full tokens view. Without this PR, it will happen the error below when runn…
- 8c5dafc #48452 — [Bugfix][UT]Fix EagleMiniCPMForCausalLM meet TypeError (#48452)
- 作者: Yejing Lai | +11/-3 | 2 个文件
Fix UT VLLM_WORKER_MULTIPROC_METHOD=spawn pytest -sv tests/models/test_initialization.py::test_can_initialize_large_subset[EagleMiniCPMForCausalLM] meet TypeError: EagleMiniCPMForCausalLM.forward() got an unexpected keyword argument ‘inputs_embeds’ Root cause: 1. The fixture paired target MiniCPM-1B-sft-bf16 (hidden 1536) with draft MiniCPM-2B-sft-bf16 (hidden 2304). 2. Missing inputs_embeds argum…
- 775c158 #48446 — [Bugfix][ROCm] Keep TP all_gather on base-class collective (#48446)
- 作者: Fangzhou Ai | +8/-0 | 1 个文件
PR #40996 (DCP supports hybrid attention) changed CudaCommunicator.all_gather to bypass the base-class collective (all_gather_into_tensor) and instead run an inline pynccl path that allocates a fresh output tensor with torch.empty and then does movedim + reshape on every call: This is on the hot path for every tensor-parallel all_gather (e.g. sequence-parallel gather-before-GEMM), so it runs on ev…
- 4c81772 #48102 — [Bugfix][KV Offloading] Fix stale transfer_jobs after reset_cache + harden job completion (#48102)
- 作者: AlexHuang | +1/-0 | 1 个文件
Fix a bug in reset_cache() where transfer_jobs for active (unfinished) requests was not cleared. ### Bug reset_cache() discards in-flight jobs (_jobs.clear()) and sets _stale_job_threshold to filter stale worker completions. However, it did not clear transfer_jobs for surviving requests. Since stale job_ids are filtered by _stale_job_threshold and never reach the completion handler, they can never…
- 5f8e73c #48330 — [Bugfix] Guard mixed-dtype allreduce RMSNorm quant fusions (#48330)
- 作者: Hugo Centeno | +44/-3 | 2 个文件
Fixes #48324. The residual FlashInfer allreduce + RMSNorm + static-quantization patterns could match graphs where the activation and RMSNorm weight have different dtypes. This occurs with Qwen/Gemma-style RMSNorm in nvidia/Qwen3.6-27B-NVFP4: the residual stream is BF16, while the effective RMSNorm weight is FP32 due to the weight.float() + 1.0 computation. Selecting the fused quantized operation f…
⚡ Performance
- 75fe92a #48064 — [Distributed][Perf] Enable FlashInfer MNNVL allreduce RMS quant fusion (#48064)
- 作者: Mohammad Miadh Angkad | +74/-22 | 2 个文件
Enable AR + RMSNorm quant fusion to use the MNNVL backend, which current FI already supports QuantType)2 is the FP4 quant path https://github.com/flashinfer-ai/flashinfer/blob/release-v0.6.13/include/flashinfer/comm/trtllm_mnnvl_allreduce.cuh#L43-L47
🖥️ Kernel
- e26264f #39058 — [Kernel] Implement CUDA kernel for ReLUSquaredActivation (relu^2) (#39058)
- 作者: Tanish Malekar | +140/-2 | 7 个文件
Implements ReLUSquaredActivation.forward_cuda with a dedicated CUDA kernel, replacing the # TODO: implement cuda kernels placeholder that delegated to forward_native (running torch.square(F.relu(x)) as two separate kernel launches). The kernel (relu_squared_kernel
) uses the existing LAUNCH_ACTIVATION_KERNEL macro and follows the exact pattern of gelu_new, gelu_fast, and gelu_quick — the other e…