9 月 22 日,vLLM 发布 v0.30.0。这是该项目近期规模最大的一次版本更新:762 次提交、315 位贡献者(其中 104 位首次参与)。除了继续为 DeepSeek-V4.1-Flash、GLM-5.3-Flash 等新模型提供 Day-0 支持,这个版本把重心压在了两个老问题上——引擎重启要等多久,以及显存不够时 KV 缓存往哪里放。

Fast Start:把量化后的权重常驻在 GPU 里

长久以来,vLLM 引擎的启动时间被一段固定的开销主导:从磁盘读取 safetensors、反量化、再按张量并行切分到各 rank。这段开销在每次进程重启时都要重来一遍——无论是 RL 训练中的权重 refit、配置变更,还是崩溃恢复。

Fast Start 引入了一个常驻的按 GPU 权重缓存守护进程:它把已经量化、已经按 TP 分片完成的权重留在 GPU 显存中,新启动的引擎通过 CUDA IPC 直接映射过来,而不是重新从磁盘加载,对应参数 --load-format ipc_cache。本版本把覆盖面扩到了 FP4 检查点与多节点 TP,并补上了几处工程细节:用 GPU UUID 区分的 socket 目录、按客户端导出 IPC 张量(避免 copy 模式的客户端释放掉共享的零拷贝权重),以及在非 CUDA/ROCm 平台上给出明确报错而不是静默失败。

Fast Start 常驻权重缓存流程

这套机制的关键在于”量化与切分只做一次”:守护进程持有的是最终形态的张量,重启的引擎几乎是零拷贝接入,因此加速效果随权重体积和 TP 规模放大。

HiSparse:稀疏 MLA 解码的主机分层

稀疏 MLA 解码只需为每个 query 取 top-k 个 KV 块,这让”把 KV 缓存放到显存外面”变得可行。HiSparse 为稀疏 MLA 解码引入了一个驻留主机的存储层:在 GPU 显存吃紧时,把 KV 页溢出到 pinned host memory;每个请求仍保留一个 GPU 热缓冲,top-k 未命中时从主机内存补齐,通过 HiSparseConnector 启用。

配套改动包括:Prometheus 计数器(便于观测命中率与溢出量)、跨 TP rank 共享的主机缓存,以及由 connector 自动推断注意力配置。它用一部分取数延迟换取了远大于显存的可用容量,对长上下文、低并发的场景尤其有意义。

HiSparse 主机分层结构

水印:Gumbel-max 生成与检测

v0.30.0 首次把文本水印做成了一等能力。基于带密钥的 PRF 与 Gumbel-max 采样,vLLM 可以在生成阶段嵌入可检测的水印,并提供了一个示例检测端点;水印支持按请求关闭。因为投机解码会改变采样分布,团队又实现了双密钥的 Gumbel-max,使水印与投机解码兼容,并新增 allow_target_only_watermarking 与上下文去重。Rust 前端也同步支持把每请求的水印控制透传下去。

模型运行器 V2:重叠、投机解码与更快的启动

Model Runner V2(MRV2)在这个版本里补齐了多项此前只存在于 V1 的能力,并顺手把启动开销砍掉一大截:

  • 双批次重叠(DBO)在 eager 模式和 FULL CUDA graphs 下都已支持,微批步骤也能吃到图捕获的收益
  • MTP 与 EAGLE3/DFlash/DSpark 投机解码在流水线并行(PP)下可用
  • 通过在线接受率估计器,为所有草稿投机模型提供自适应验证
  • 图捕获期间冻结 GC,H200 上把捕获时间从 12s 压到 2s、引擎初始化从 28.9s 降到 8.2s
  • --return-sampling-mask 的采样掩码改在 GPU 上压缩,修复了约 2 倍的 RL 单步耗时回退

此外还有 UVA 支撑的 apply_write、fast-prefill 支持等。需要注意的是,针对 MRV2 的 Triton JIT 预热迁移被回滚了。

量化:定向在线量化与 NVFP4 默认项变更

本版本量化方向的两条主线,是让在线量化更可控,以及把 NVFP4 在内核层面的默认项更新一遍:

方向改动
定向在线量化通过 quantization_config.targets 指定要在线量化的层,并支持对”部分预量化”的检查点做在线量化
W4A16 DSA新增 W4A16 DSA,配合 nvfp4_fp8_ds_mla KV 缓存
默认后端变更SM100/103 上 FlashInfer CuTeDSL NVFP4 W4A16 取代 Marlin 成为默认
精度覆盖NVFP4 进入 torch linear 后端;新增按量化方式覆盖线性后端(linear_backend_per_quant)
更多格式CUDA 上支持 AutoRound 2/3/5/6/7-bit;DSA 稀疏 indexer 支持 DeepSelect top-k

大规模服务:上下文并行与弹性 EP

面向多节点部署的一批改动包括:稀疏 MLA 模型上的 PCP + DCP、单模块 MTP 与复制 DSpark 的 PCP、仅解码阶段的 FULL CUDA graphs;Elastic EP 在重配置时复用 CUDA graphs;为无 NVLink 的机器提供可选的 FlashInfer PCIe IPC all-reduce;DeepEP v2 的异步收尾让共享专家与 combine 重叠;Mooncake Store 支持异构 TP 共享;新增 KVCR 二级存储适配器;编码器缓存可通过 NIXL 与 Mooncake 共享。

性能与硬件:Qwen3.8 与 Kimi K3 继续挖潜

Qwen3.8-Flash-Next 方面,prefill 与 decode 的 QSA indexer 内核被拆开,PLE 内核融合、K/V 投影合并,新增 FP8 indexer cache、稀疏 GQA 跳过 padding 索引、PLE 残差与 QSA 输出门融合、UVA PLE 卸载与 --engram-config 的 Engram 张量并行;NVIDIA 路径移除 torch.compile 后,FP8 得以塞进单张 GB300。

Kimi K3 方面,SM100 上原生 CUDA AttnRes 成为默认,去掉 KDA 混合批次的 gather/scatter 带来 5.2%–7.7% 的端到端吞吐,分组 FP8 MLA 缓存插入在小 batch 下内核提速 4–6 倍,DSV3 低延迟 GEMM 在跨步张量上内核提速 12%–81%,另有 FlashInfer KDA 内核、TP8 KDA 投影重叠与内部前缀检查点。

硬件侧,NVIDIA 将 DeepGEMM 固定到 vLLM fork 2.8.0,并开放 CUDA 13.4 Rubin 构建;ROCm 基线升到 ROCm 10.0(AITER 0.1.21.post2),bpreshuffled blockscaled FP8 GEMM 在 DSv3 上带来 +4%–8% QPS;H20 的 block-FP8 MoE 调优提升 +21%;CPU 侧新增 DeepSeek-V4 后端、面向 Diamond Rapids 的原生 AMX-FP8 注意力,Docker 基线换到 Ubuntu 25.04 + GCC 15。

破坏性变更:升级前必读

这次升级有几处会直接影响线上配置,其中最需要留意的是YaRN 与 Transformers 的对齐——厂商的 YaRN 别名不再二次放大 max_position_embeddings,部分模型推导出的 max_model_len 因此下降(如 TeleChat3-36B-Thinking 从 131072 降到 32768,sarvam-105b 从 5242880 降到 131072)。

变更影响
scale-out 端点改为显式开启普通 vllm serve 不再注册 /render、/derender、/inference/v1/generate,需加 --enable-scale-out;VLLM_ENABLE_SCALE_OUT_ENDPOINTS 被移除
GPTQ 激活排序移除g_idx 被忽略,相关 Marlin/GPTQ/CPU/RDNA3 内核一并删除
0.29 弃用项清理VLLM_PREFIX_CACHE_RETENTION_INTERVAL、VLLM_MM_HASHER_ALGORITHM 环境变量移除
Mamba 缓存模式all 模式弃用,回退到 Model Runner V1
gRPC 入口python -m vllm.entrypoints.grpc_server 弃用,改用 vllm serve --grpc
DCP 声明注意力实现必须显式声明 DCP 支持,否则后端选择阶段直接失败
音频重采样默认重采样器由 PyAV 换成 torchaudio

同时,一批新的默认项被打开:SM100/103 的 FlashInfer CuTeDSL NVFP4 W4A16、SM120/121 的 W4A4 NVFP4、SM100 的 BF16x3 router GEMM、DeepEP v2 combine 重叠、DP attention + TP experts 下的 AITER 自定义 AG/RS,以及 SM100 上 Kimi-K3 的原生 CUDA AttnRes。

安全:修掉一处 5300 倍响应放大

安全方面最值得注意的一条,是校验错误响应体被限制大小,关闭了一处约 5,300 倍的响应放大问题;此外客户端提交的稀疏嵌入在稠密化之前被限制规模,GLMGA 与 Qwen-VL 后端对请求控制的视频采样做了上限,cache_salt 在进入 LMCache 前被校验,benchmark 日志中的凭据被脱敏。

如何升级

# CUDA 13.0(PyPI 默认)
pip install vllm
# 使用 uv
uv pip install vllm --torch-backend=auto
# ROCm
pip install vllm --extra-index-url https://wheels.vllm.ai/rocm/0.30.0/rocm723

Docker 镜像提供 vllm/vllm-openai:v0.30.0(CUDA 13.0)、-cu129、-ubuntu2404,以及 ROCm、CPU、XPU 变体。

核心总结

  • 常驻权重缓存(Fast Start):量化与 TP 切分只做一次,重启引擎通过 CUDA IPC 零拷贝接入,本版本覆盖 FP4 与多节点 TP
  • HiSparse 主机分层:稀疏 MLA 解码把 KV 页溢出到 pinned host memory,用取数延迟换可用容量
  • MRV2 启动提速:图捕获期间冻结 GC,H200 上捕获 12s→2s、引擎初始化 28.9s→8.2s
  • 水印成为一等能力:Gumbel-max 生成与检测、按请求关闭,并经双密钥设计兼容投机解码
  • 升级前优先检查 YaRN:与 Transformers 对齐后,部分模型的 max_model_len 显著下降

原文:vLLM v0.30.0(vLLM Team,2026-09-22)