contribution/compass
vllm-project/vllm

vLLM

599 signals · 707 observation events

Open repository ↗

A high-throughput and memory-efficient inference and serving engine for LLMs

89.0K stars20.6K forksPythonApache-2.0amdblackwellcudadeepseekdeepseek-v3gptgpt-ossinferencekeyword: vLLM
PROJECT NEWS

Release, roadmap, and discussion

All news →
vllm-project/vllm

vLLM

AI Infrastructure
Latest stable

v0.27.1

v0.27.1
  • Support quantized DSpark Markov heads (#50424)
Original release notes ↗

Publicly indicated next

  • No public prerelease or open milestone found.

Prereleases and milestones indicate public plans; they are not delivery commitments.

Observation trail

  1. changedupdatedAt
  2. discoveredinitial snapshot
  3. discoveredinitial snapshot
  4. changedtext, updatedAt, metrics, labels
  5. discoveredinitial snapshot
  6. changedupdatedAt, metrics
  7. changedupdatedAt, state
  8. changedupdatedAt
  9. discoveredinitial snapshot
  10. changedupdatedAt
  11. changedupdatedAt
  12. changedmetrics
  13. discoveredinitial snapshot
  14. changedmetrics
  15. changedupdatedAt, labels
  16. changedupdatedAt
  17. changedupdatedAt, state
  18. changedtext, updatedAt
  19. changedupdatedAt
  20. changedupdatedAt, state
  21. changedupdatedAt
  22. changedupdatedAt
  23. changedupdatedAt
  24. changedupdatedAt
  25. discoveredinitial snapshot
  26. changedupdatedAt
  27. changedupdatedAt, state
  28. changedupdatedAt
  29. discoveredinitial snapshot
  30. changedupdatedAt
49 shown
pull request

[Perf] Use list.extend() over append loops in FlatLogprobs + minor hot-path cleanups

Minor Python-level performance optimizations in hot paths: 1. **FlatLogprobs.append_fast**: Replace per-item append() loop with list.extend() — ~1.37x speedup on the per-token logprobs path. 2. **common_prefix**: Compare elements by index instead of creating slice copies — ~9.4x speedup on long shared prefixes. 3. **FlatLogprobs.__iter__**: Use self[i] inste

importance 3@vaibhavhariramopenstalev1Original evidence ↗
pull request

[Doc] Add comprehensive --speculative-config documentation

## Summary - Adds a new `--speculative-config` Reference section to the speculative decoding documentation (`docs/features/speculative_decoding/README.md`) that enumerates all user-facing configuration keys accepted by `--speculative-config` (CLI) and the `speculative_config` Python dict - Documents every key's type, default value, valid ranges/values, and w

importance 3@karanb192closeddocumentationneeds-rebaseOriginal evidence ↗
pull request

[WIP][Model Runner V2] support spec decode + mamba align prefix caching

## Accuracy Benchmark **Server Command** ``` VLLM_USE_V2_MODEL_RUNNER=1 vllm serve Qwen/Qwen3.5-35B-A3B-FP8 \ -tp 2 -dp 1 \ --enable-prefix-caching \ --mamba-cache-mode align \ --max-num-seqs 64 \ --attention-config '{"use_trtllm_attention": 0}' \ --speculative-config '{"method": "mtp", "num_speculative_tokens": 2}' \ --default-chat-template-kwargs '{"enable

importance 3@TheEpicDolphinopenneeds-rebasev1mrv2Original evidence ↗
pull request

[Bugfix][MooncakeStore] track resumed requests via scheduler's resumed_req_ids

## Summary The MooncakeStore connector tracks block tables per request so it knows whether a step's `new_block_ids` should be **appended** (normal decode) or **replace** the existing table (resumed from preemption). It was deciding this from a connector-local `_preempted_req_ids` set, which drifts from what the scheduler actually does. The scheduler already

importance 3@ivaniumclosedbugreadyv1kv-connectorOriginal evidence ↗
pull request

[ROCm][Bugfix] window-correct shuffled fp8 decode for SWA layers

## Purpose `AiterFlashAttentionImpl.forward` routes sliding-window (and sinks / multi-token spec-decode) decode through a branch that calls `flash_attn_with_kvcache` or `unified_attention`, both of which read the plain (non-shuffled) KV layout. That branch opens with `assert not rocm_aiter_ops.is_shuffle_kv_cache_enabled()`, so a sliding-window model with th

importance 3@reger-menopenbugrocmv1Original evidence ↗
pull request

[ROCm][Kimi-K3] Add opt-in gfx942 MXFP4-to-int4 conversion

## Summary Add an explicit `int4_per_group_32` MoE override for Kimi-K3 on gfx942. When selected, the MXFP4 expert weights are requantized once at load time and served through AITER's replacement BF16 x packed-int4 FlyDSL path. The conversion is lossy and never happens by architecture alone. The default MXFP4 path is unchanged. ## Why gfx942 does not support

importance 3@maeehartopenrocmquantizationkimik3Original evidence ↗
pull request

[Bugfix] Fix step3p5 tool parser and unnecessary unstreamed tool args in serving.

## Purpose The step3.5 tool parser and test cases have been modified, resulting in a more stable parser. In `vllm/entrypoints/openai/chat_completion/serving.py`, some parsers do not require checking unstreamed tool arguments. For example: **qwen3coder_tool_parser**: does not maintain variables for checking unstreamed tool arguments (`streamed_args_for_tool`)

importance 2@mariohong128closedbugfrontendneeds-rebasestaletool-callingOriginal evidence ↗
pull request

[BugFix] Fix MoE g_idx params causing ValueError with actorder=null AWQ models

## Summary - Fix `CompressedTensorsWNA16MarlinMoEMethod.create_weights()` to only register `g_idx` parameters when `self.actorder` is set, preventing `ValueError` from `track_weights_loading()` when loading compressed-tensors AWQ MoE models with `actorder=null` - Fix `CompressedTensorsWNA16MoEMethod.create_weights()` to remove unreachable `g_idx` registratio

importance 2@jhsmith409closedbugstaleOriginal evidence ↗
pull request

[CI] laguna xs gsm8k test

## Purpose ## Test Plan ## Test Result --- <details> <summary> Essential Elements of an Effective PR Description Checklist </summary> - [ ] 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

importance 2@mgoinclosedreadyneeds-rebaseOriginal evidence ↗
pull request

Fix MRV2 Gumbel sampling for non-finite logits

## Summary Fix MRV2 Gumbel sampling when the candidate logits contain `-inf` entries. The current Gumbel path only clamps the uniform draw away from zero. If the draw reaches the upper endpoint after floating-point rounding, the Gumbel noise becomes `inf`. Adding that noise to a masked/non-candidate `-inf` logit produces `NaN`, and a subsequent Triton reduct

importance 2@voipmonitoropenneeds-rebasev1mrv2Original evidence ↗
pull request

[Perf][Triton] Reassociate softmax scale onto Q in unified attention

## Purpose Reassociate the softmax scale so ``score_scale * Q`` is loop-invariant, letting the compiler hoist the multiply out of the tile loop instead of scaling the BLOCK_M x TILE_SIZE S matrix on every iteration. Skip the reassociation for the fp8 query descale path, where folding the tiny score_scale into fp8 Q would requantize the product and destroy pr

importance 2@quinnlpopenv1Original evidence ↗
pull request

[Bugfix] EXAONE 4.5: drop trailing MTP entry from text_config.layer_types

## Purpose Let EXAONE 4.5 (e.g. `LGAI-EXAONE/EXAONE-4.5-33B-FP8`) and its self-MTP speculative-decode path load on mainline `transformers` v5 + vLLM v0.23.0. The LG-AI EXAONE 4.5 release configs publish `text_config.layer_types` of length `text_config.num_hidden_layers + 1`: the trailing entry is the MTP head registered alongside the regular transformer stac

importance 1@seongyun1104closedbugrocmneeds-rebaseci/buildv1Original evidence ↗
pull request

[Bugfix] EXAONE 4.5: rename Exaone4_5_VisionBlock.forward kwarg seqlens -> sequence_lengths

## Purpose `EXAONE4_5_VisionTransformer` inherits from `Qwen2_5_VisionTransformer`, and the parent class's vision-block loop (`vllm/model_executor/models/qwen2_5_vl.py:1100`) now invokes each block with `sequence_lengths=` rather than the older `seqlens=`: ```python hidden_states = blk( hidden_states, cu_seqlens=cu_seqlens_now, rotary_pos_emb_cos=rotary_pos_

importance 1@seongyun1104closedbugrocmneeds-rebaseci/buildv1Original evidence ↗
pull request

[Bugfix] test_batch_inference_correctness now uses batch invariance

## Purpose Partially Fixes [48038](https://github.com/vllm-project/vllm/issues/48038). An example PR fixing a test flagged by our audit. The test now enforces batch invariance to prevent accidental numerical changes causes falsely failing tests. The test is no longer coincidentally correct and enforces a strong contract: Spec decode exact matching only when

importance 1@morrison-turnanskyopenbugv1Original evidence ↗
pull request

[KV Connector][4/N][NIXL] Recover all dedup'd HMA pool members (FA + multi-group SSM) under PP

## Purpose Fixes silent KV-cache corruption for **hybrid (Mamba/SSM) models under pipeline parallelism** in NIXL PD-disaggregated serving. Under PP>1 + the hybrid-memory allocator (HMA), the general-case allocator pools **one layer from every `kv_cache_group`** into a single shared tensor. For a multi-Mamba-group hybrid (e.g. NVIDIA Nemotron-3-Ultra-550B: 4

importance 1@dmveventsopenneeds-rebasev1kv-connectorOriginal evidence ↗
pull request

[Model][Quant] Fused WNA16 GEMM for tied quantized lm_head logits

## Purpose Follow-up to #45535 (compressed-tensors WNA16 input embeddings + tied `lm_head`). This PR speeds up the **logits matmul** when a quantized embedding is reused as a tied `lm_head`. In #45535, `CompressedTensorsEmbeddingWNA16Int.apply()` dequantizes the entire packed `[vocab, hidden]` table into a dense weight on every call and runs `F.linear`. This

importance 1@KKothuriopenspeculative-decodingneeds-rebasellamaqwendeepseekOriginal evidence ↗
pull request

support rl feature : weight checker

## Purpose This PR extends the POST /weight_checker test suite so the weight-checker flow is exercised under both single-GPU (TP=1) and tensor-parallel (TP=2) configurations)Skip all cases now run for both TP settings via pytest.mark.parametrize. The coverage includes snapshot, compare, checksum, reset, and invalid-request error handling, plus a new assertio

importance 1@shiyuan680openfrontendneeds-rebaseOriginal evidence ↗
pull request

Revert "[Attention] Add FlashInfer XQA decode support on SM12x" (#49718)

Reverts #49718 ([Attention] Add FlashInfer XQA decode support on SM12x). ## Why `GPQA Eval (GPT-OSS) (DGX Spark)` regressed in nightly [build 83511](https://buildkite.com/vllm/ci/builds/83511) (commit `02ac178`) and is still red on the later build 83539. - Baseline nightly 83443 (same agent `spark-0df9-1`): **passed**, score 0.5619, 9m27s, zero harmony parse

importance 1@vllm-agentopennvidiaOriginal evidence ↗
pull request

[Core] Skip broadcasting mm tensor data to workers for prefix-cache-covered items

## Purpose Fixes #52040. ## Background: why this gap exists and who it affects The EngineCore->TP-worker broadcast was designed when request inputs were token IDs (kilobytes), so shipping them unconditionally was both correct and free. Multimodal grafted large tensors onto the same path, but for the classic workload (a fresh image per chat request) the worke

importance 1@sseanliuopenverifiedOriginal evidence ↗
pull request

Revert "Avoid long-blocking H2D copies in ViT" (#51841)

Reverts the changes from #51841 ("Avoid long-blocking H2D copies in ViT"). ## Why `Arm CPU Test` has failed on every build since #51841 merged (nightly [#83608](https://buildkite.com/vllm/ci/builds/83608), plus per-commit postmerge builds 83603 and 83607 on the same commit). It passed on build 83539, the last run before the merge. The failure is at engine st

importance 1@vllm-agentclosedqwenOriginal evidence ↗
pull request

[Core] Add shared-disk weight transfer backend

## Purpose Add an inference-side `disk` weight-transfer backend for deployments where a trainer writes a complete safetensors checkpoint to shared storage and an orchestrator reloads it into a running vLLM engine through the existing start/update/finish control plane. The backend: - accepts one absolute local checkpoint directory per update session, visible

importance 1@Sunbeam23333opendocumentationOriginal evidence ↗
pull request

[WIP][XPU][Test]add xpu yaml

## Purpose only for xpu UT, please do not merge ## Test Plan ## Test Result --- <details> <summary> Essential Elements of an Effective PR Description Checklist </summary> - [ ] 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 pasti

importance 0@wincent8openintel-gpuci/buildnvidiarustOriginal evidence ↗
pull request

[Helion] Route fusion-only kernels to Helion during CUDA-graph capture

vLLM's post-grad fusion passes emit native fused ops (RMSNorm+quant, SiLU+mul+quant, QK-norm+RoPE) that have no eager model call site, so the capture-time call-site router used for per_token_group_fp8_quant (#47799) cannot reach them. Instead, add a single post-fusion FX pass that runs after fix_functionalization and retargets schema-compatible native fused

importance 0@yushangdiopenrocmneeds-rebasev1nvidiaquantizationOriginal evidence ↗
pull request

[Render][1/n] Paged shared memory storage for mm tensor ipc.

## Purpose Paged shared memory storage for mm tensor ipc. 0. This compares two approaches for IPC of mm tensors: - **Paged shared memory (pshm):** mm tensor → shm → swap_blocks_batch → GPU - **ZMQ RPC:** mm tensor → ZMQ IPC → CPU Buffer → Pin Memory → GPU 1. CPU‑to‑GPU (H2D) bandwidth saturates when transferring 1 MiB blocks, so a page size of 1 MiB is a rea

importance 0@noooopopenfrontendmulti-modalityqwennvidiamrv2Original evidence ↗
pull request

[ROCm][Perf] Kimi-K3 latent-MoE: overlap the shared all-reduce with the routed up-projection

## Purpose Kimi-K3's latent MoE combines a **routed** expert output — produced in a compressed latent space, then up-projected back to hidden dim — with a **shared** expert output. Under tensor parallelism both need an all-reduce. Today the ROCm runner (`ROCmLatentMoERunner`) only implements the column-parallel tail (`_shard_up_proj_tail`, "Tier 2"), which f

importance 0@mpashkovskiiopenrocmkimik3Original evidence ↗
pull request

[MM][CG][WIP] Encoder CUDA graph support for HunyuanVL

## Summary Working on encoder CUDA graph support for HunYuanVL (`HunYuanVLForConditionalGeneration`), tracked in #38175. Claiming this model in the tracker. This PR starts with a prerequisite refactor: `HunYuanVisionTransformer` currently processes images by splitting the batch into a Python list and running each image through every layer separately (`O(num_

importance 0@gangula-karthikopendocumentationmulti-modalitynvidiaOriginal evidence ↗
pull request

[MoE] Size batched Triton MoE tiles from per-expert rows

## Purpose `get_default_config` divides `M` by `E` to estimate rows per expert, but the expert-batched layout passes `max_num_tokens`, which is already per-expert — so the fallback over-sizes tiles for the E small GEMMs `batched_triton_kernel` launches. Platform-agnostic as it is a layout mismatch. Only the heuristic fallback changes; override and tuned-file

importance 0@oonyshchopenOriginal evidence ↗
pull request

[Model] Register sparse DeepSeek V3.2 MTP

## Purpose Register the sparse DeepSeek V3.2 MTP implementation and select it for `glm_moe_dsa` speculative decoding configs. GLM MoE DSA previously inherited the generic `DeepSeekMTPModel` override even though its draft model needs the sparse DeepSeek V3.2 implementation. This PR: - maps the config to `DeepseekV32MTPModel`; - registers that architecture wit

importance 0@WoosukKwonopennew-modelspeculative-decodingneeds-rebasedeepseekOriginal evidence ↗
pull request

[XPU][Tests] Make tests device-agnostic

## Purpose Two kernel tests hardcoded a CUDA device, so they gave no coverage on XPU even though the kernels they exercise are available there. This makes both resolve the device via `current_platform` instead. **`test_fused_recurrent_packed_decode.py`** — gated on `torch.cuda.is_available()`, so it skipped on every non-CUDA accelerator. Both `fused_recurren

importance 0@pmanczakopenintel-gpuOriginal evidence ↗
pull request

Add generic CI trace collectors

## What changed - export CMake/source → target → GNU build-ID artifact → mangled CUDA-kernel provenance from the CUDA image build - capture `ninja -t deps` and emit repo-local header → target edges - scan final nvcc object files and emit exact compiling translation-unit → mangled-kernel edges; ambiguous/generated/external objects are counted and left unmappe

importance 0@khluuopenci/buildOriginal evidence ↗
pull request

[Model][NVIDIA] Add PCP support to DeepSeek V3.2 attention

## Summary - add prefill context parallelism (PCP) to the existing DeepSeek V3.2 attention implementation - keep TP and PCP on the same fused attention path instead of maintaining a separate PCP forward - materialize fused MLA and indexer K outputs only when PCP needs to gather them before cache insertion - specialize optional materialization and cache write

importance 0@GirasoleYopennew-modelspeculative-decodingdeepseeknvidiaOriginal evidence ↗
pull request

Avoid AITER FP8 BMM for MLA K projection

## Purpose This changes the ROCm AITER FP8 MLA decode path so the K-side up-projection stays dense after the post-load transform, while the V-side up-projection continues to use the AITER FP8 BMM. The K-side MLA projection is a skinny batched matmul. Requantizing the transformed K weight and routing it through AITER FP8 BMM adds overhead for this shape and a

importance 0@rohash123openOriginal evidence ↗
pull request

[ROCm][Perf] Kimi-K3 AMD MLA: fuse the q-a and kv-a RMSNorms

## Purpose On the Kimi-K3 AMD MLA front-end, every token runs **two** separate RMSNorm launches — `q_a_layernorm(q_c)` then `kv_a_layernorm(kv_c)` — once per MLA layer. This PR collapses them into a single `fused_q_kv_rmsnorm` call (`models/common/ops/fused_qk_rmsnorm.py`), a **portable Triton** kernel already in the tree — no CUDA-only gate, and its one PDL

importance 0@mpashkovskiiopenrocmkimik3Original evidence ↗
pull request

[Build] Gate cooperative top-k on CUDA 13

## Fixes - Build cooperative top-k kernels only on CUDA 13 or newer. - Let source builds skip bundled FA2/FA3 extensions while retaining Python-only FA4. - Treat an FA4-only installation as a valid FlashAttention installation. ## Verification - The patched source builds as vLLM 0.23.1rc1.dev1407+gdab991476 on CUDA 12.8. - The baked SkyRL image imports FlashA

importance 0@j316chuckopenci/buildnvidiaOriginal evidence ↗
pull request

[KV Offload] Carry request provenance through stored events

## Purpose Carry request provenance through asynchronous KV-offload completions so locally initiated stores and promotions can emit full `BlockStored` events. The current tracker snapshots full payloads at scheduler lookup/store time and keeps them in a global map. This PR instead keeps a lazy event locator with the request and builds the payload when the ra

importance 0@Change72openkv-connectorOriginal evidence ↗
pull request

[Bugfix][Model] Preserve Step3-VL zero-patch CUDA graph outputs

## Summary - honor the encoder postprocessor's `clone` contract when a Step3-VL image has zero local patches - keep the no-clone path as an alias while preserving cloned outputs across later CUDA graph replays - add a focused regression test for both ownership modes Without this, the single-part fast path returns the CUDA graph output buffer directly even wh

importance 0@qdivanopenbugmulti-modalitynvidiaOriginal evidence ↗
pull request

[Observability] add model initializing duration log

## Purpose Add model initializing duration log ## Test Plan NA ## Test Result NA --- <details> <summary> Essential Elements of an Effective PR Description Checklist </summary> - [ ] 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

importance 0@andyxningopenOriginal evidence ↗
pull request

[Bugfix] Apply attention sinks in the Transformers backend

## Purpose vLLM PR #48270 adds native `GraniteSWAForCausalLM` / `GraniteMoeSWAForCausalLM` because "the transformers backend does NOT handle these models correctly. Sink tokens get dropped silently and so the model gives wrong output." That is accurate, and it is a bug in the Transformers modeling backend rather than something inherent to those models, so th

importance 0@tdoublepopenbugOriginal evidence ↗
pull request

[Bugfix] Apply logits scaling in the Transformers backend

## Purpose Transformers scales the logits in the `ForCausalLM` wrapper. This backend only loads the decoder and provides its own head and logits processor, so whatever the wrapper does after the decoder has to be reproduced here. Only `logit_scale` was, which means: - Granite-family and MiniCPM3 models returned logprobs `logits_scaling`x too confident: 9x fo

importance 0@tdoublepopenbugOriginal evidence ↗
pull request

[Perf][PCP] Shard decode requests across PCP ranks

## Purpose PCP currently replicates every decode request on every PCP rank. For PCP-only deployments (`DCP == 1`), every rank already has a complete KV-cache replica, so this repeats the same decode computation `pcp_size` times. This PR: - assigns decode-only rows round-robin across PCP ranks on every scheduler step; - keeps the existing DualChunkSwap prefil

importance 0@pisceskkkopenmrv2Original evidence ↗
pull request

Zen5 image build reuse cpu

## Purpose ## Test Plan ## Test Result --- <details> <summary> Essential Elements of an Effective PR Description Checklist </summary> - [ ] 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

importance 0@Chinmay-Kulkarni-AMDopenci/buildcpuOriginal evidence ↗
pull request

Fix Cohere ChatV2 citation and tool handling issues

## Purpose Fix issues ## Test Plan ## Test Result --- <details> <summary> Essential Elements of an Effective PR Description Checklist </summary> - [X] 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

importance 0@andrewbcohereopenfrontendneeds-rebasetool-callingcohereOriginal evidence ↗
pull request

[DBO] Add DBO support to the DeepEP V2 backend

## Purpose ## Test Plan ## Test Result --- <details> <summary> Essential Elements of an Effective PR Description Checklist </summary> - [ ] 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

importance 0@SageMooreopenOriginal evidence ↗
pull request

[Bugfix] Propagate fatal EngineCore shutdown

## Purpose Fixes #48966. When `EngineCore` dies unexpectedly, the watchdog asks Uvicorn to stop, but `serve_http()` currently returns the same no-op shutdown coroutine used for a normal server stop. The caller therefore completes cleanly and the serving process exits with status 0, so supervisors using `Restart=on-failure` do not restart it. This change keep

importance 0@jackLei0901openbugfrontendOriginal evidence ↗
pull request

# [kimik3][ROCm] Enable torch.compile for so post-grad fusion passes work (aiter::fused_qk_rmsnorm_kernel, aiter::allreduce_fusion_kernel_1stage)

# [kimik3][ROCm] Enable torch.compile for so post-grad fusion passes work (aiter::fused_qk_rmsnorm_kernel, aiter::allreduce_fusion_kernel_1stage) ## Purpose Kimi-K3's model classes carry no `@support_torch_compile` and vLLM logs: ``` `torch.compile` is turned on, but the model /path/to/Kimi-K3 does not support it. Please open an issue on GitHub if you want i

importance 0@rbrugaro-amdopenrocmkimik3Original evidence ↗
pull request

[Kernel] Add tuned fused_moe config for NVIDIA GB10 (Nemotron-3-Super shape, E=512 N=2688)

**Problem.** No `E=512,N=2688,device_name=NVIDIA_GB10` config exists: every Nemotron-3-Super serve on a DGX Spark falls back to the default heuristic and logs "Using default MoE config. Performance might be sub-optimal!" Second config for this device, first for this shape (#45949 covers E=512,N=512 fp8). **What's in the file.** Decode keys M=1,2,4,8 tuned on

importance 0@maxspevackopennvidiaOriginal evidence ↗