vLLM 开发动态报告 - 2025-12-20
时间窗口: 2025-12-20 10:54 (UTC+8) ~ 2025-12-21 10:54 (UTC+8) 数据统计: 新 Issue 7 | 关闭 Issue 12 | 新 PR 25 | 合并 PR 9 | 关闭未合并 PR 3
📊 每日开发状态摘要
在过去的24小时内,vLLM 社区保持了高活跃度,共产生了7个新问题、25个新PR,并合并了9个PR。开发焦点集中在AMD/ROCm平台的支持完善与问题修复(多个PR和Issue)、量化方案的增强与Bug修复(尤其是Marlin和FP8),以及分布式推理和调度器的优化上。这表明项目在积极扩展硬件兼容性的同时,也在不断打磨核心推理功能和稳定性。
🎯 AMD/ROCm 生态相关动态
本周期内AMD生态相关活动非常活跃,涵盖了问题报告、功能增强和构建修复等多个方面。
- 新增 Issue 31086:[Bug][ROCm]: Triton backend broken
- 详情:用户
AndreasKaratzas报告在ROCm平台上,Triton后端出现故障,导致多个测试用例失败。问题表现为某些条件下推理输出不正确。 - 技术影响:这是一个关键阻塞性问题,直接影响了ROCm平台上Triton后端(一种高性能算子实现)的可用性和可靠性。社区已迅速介入(@github-actions 自动@相关维护者)。
- 详情:用户
- 新增 Issue 31063:[Bug]: Qwen3VL-8B-instruct-FP8 has larger result diff rate than sglang compared with transformers
- 详情:用户
DamonsJ报告在ROCm(L4 GPU)上,使用FP8量化的Qwen3VL模型,vLLM与SGLang、Transformers的推理结果存在较大差异。 - 技术影响:暴露了ROCm平台上多模态模型FP8量化推理的潜在数值精度或实现一致性问题。
- 详情:用户
- 新增 PR 31084:Fix ROCm attention backend selection for encoder-only models
- 详情:PR作者
westers旨在修复ROCm平台上编码器模型(如嵌入模型)的注意力后端选择逻辑。根本原因是AITER后端不支持非因果注意力,而FlexAttention在ROCm上存在数值精度问题。解决方案是让编码器模型回退到通用的FlashAttention后端。 - 讨论焦点:审阅者
AndreasKaratzas要求提供更具体的失败用例,并质疑了FlexAttention在ROCm上不工作的结论,引发了关于ROCm上各注意力后端实际支持情况和性能的深入讨论。目前作者正在补充信息。 - 影响:解决了ROCm上大量池化(pooling)模型测试失败的问题,提升了编码器类模型在AMD硬件上的兼容性。
- 详情:PR作者
- 新增 PR 31079/31060: Fix ROCm build to respect PYTORCH_ROCM_ARCH for GPU_TARGETS
- 详情:PR作者
westers修复了Docker构建中用户指定的PYTORCH_ROCM_ARCH(GPU架构)参数未正确传递给CMake的问题,导致构建默认使用gfx906/gfx942架构,而非用户指定架构(如gfx1103)。 - 影响:使ROCm Docker镜像能够为特定AMD GPU(如Radeon 780M)生成优化的内核,扩展了硬件支持范围。
- 详情:PR作者
- 新增 PR 31077:Fix ROCm CUDA graph replay synchronization bug
- 详情:修复ROCm平台上CUDA图重放是异步的,而vLLM代码假设其为同步,导致读取到未初始化的张量数据,引发错误输出(如生成填充词元)。
- 技术影响:修复了ROCm上使用CUDA图时的一个根本性同步错误,提升了推理正确性。
- 新增 PR 31062:[ROCm][Docker] Add gfx1103 support to Docker builds
- 详情:在ROCm基础Dockerfile的默认架构列表中添加
gfx1103(RDNA 3集成显卡,如Radeon 780M)。 - 影响:官方镜像将原生支持更多消费级AMD GPU。
- 详情:在ROCm基础Dockerfile的默认架构列表中添加
- 合并 PR 30991:[ROCm][CI/Build] Update ROCm dockerfiles
- 详情:AMD员工
gshtras(用户名为gshtras,非-amd后缀但根据上下文推断为AMD员工)更新了ROCm Dockerfile,将基础环境从ROCm 7.1回退到7.0(因7.1存在性能回归),并更新了PyTorch、Triton和AITER的提交版本。 - 后续影响:合并后,可能直接引发了上述Issue 31086(Triton后端损坏)。审阅者
tjtanaa在合并后评论指出,此PR导致AMD CI出现准确性错误,并确认了ROCm 7.1到7.0的回退与新出现的Triton测试失败相关。
- 详情:AMD员工
💬 高热度讨论分析
- 新增 Issue 31064 (RFC): Optional Hidden States Transfer in
KVConnectorBase_V1- 核心议题:英特尔工程师
xinyu-intel提出RFC,建议在P/D(预填充/解码)分离架构中,除了KV缓存外,也传输最后一词的隐藏状态,以避免解码端为单个词元重新调度一次“前缀预填充”计算,从而提升DeepSeek-R1等模型在特定配置(如Gaudi加速器)下的性能。 - 观点与争议:
- 反对添加复杂性:维护者
robertgshaw2-redhat首先质疑了当前设计的必要性,指出理论上只需一次单令牌解码,并询问是否观察到了多令牌调度(暗示可能是现有实现的bug)。他明确表示“对为避免运行一次单令牌前向传播而增加此复杂性持保留态度”。 - 解释与结论:经过离线讨论,
robertgshaw2-redhat总结道,在CUDA/ROCm上,这确实只是一次纯解码前向传播,可以享受各种优化;问题根源在于Gaudi插件即使在单令牌时也将其视为预填充请求。因此,最终结论是不修改vLLM核心,而是由Gaudi团队优化其插件实现。该Issue随后被关闭。
- 反对添加复杂性:维护者
- 总结:这是一次典型的硬件厂商特定优化需求与核心框架通用性设计之间的讨论,最终维护者选择保持核心简洁,将硬件特定优化下放给插件。
- 核心议题:英特尔工程师
- 已关闭 Issue 29641: [Bug]: Max Tokens not being honoured in Chat Completions for GPTOSS model
- 核心议题:用户报告从vLLM 0.11开始,GPT-OSS模型的聊天补全端点不遵守
max_tokens参数,返回内容为空但消耗令牌数正确。 - 讨论过程:讨论历时近一个月,多位用户参与确认。贡献者
princepride经过多次复现和排查,最终定位到问题根源:- 工具调用解析器在处理因
max_tokens中断的生成时,错误地丢弃了已生成的部分内容。 - 聊天服务端和响应服务端在构造提示的逻辑上存在不一致。
- 工具调用解析器在处理因
- 结论:问题通过 PR 30608 得到修复,该PR修正了解析器逻辑并统一了提示构造方式。此Issue展示了社区对一个持续性Bug的协作排查过程。
- 核心议题:用户报告从vLLM 0.11开始,GPT-OSS模型的聊天补全端点不遵守
- 新增 PR 31084:Fix ROCm attention backend selection for encoder-only models
- 核心议题:如何为ROCm平台上的编码器模型选择正确的注意力后端。
- 讨论焦点:作者
westers提出FlexAttention在ROCm上有精度问题,AITER不支持编码器,因此应回退到通用FlashAttention。审阅者AndreasKaratzas(积极参与ROCm问题的用户)对此提出质疑,要求提供具体失败的测试证据,并指出他之前的经验表明FlexAttention在编码器模型上是工作的。他强调AITER需要显式启用,并分享了自己使多个测试通过的PR。 - 当前状态:讨论正在进行中,作者被要求提供更详细的测试失败证据。这反映了社区对ROCm平台技术细节的严谨审查。
🔥 热门话题与趋势分析
- 量化技术持续深化:关于Marlin、FP4/FP8量化的Issue和PR非常集中。
- Bug修复:Issue 31033 (GPT-OSS W4A8 Marlin启动失败) -> PR 31061 (添加Marlin W4A8/W8A8检查)。
- 功能完善:Issue 30750 (Marlin FP8 Kernel断言错误) -> PR 30962 (支持FP8 Marlin的逻辑宽度),已合并。
- 性能支持:Issue 31085 (请求为SM120 Blackwell添加原生NVFP4支持),反映了社区对新硬件量化支持的需求。
- AMD平台集成与修复是当前热点:大量PR集中于修复ROCm构建、Docker镜像、运行时同步、后端选择等问题,显示出社区在积极提升AMD硬件的可用性和稳定性,以追赶CUDA平台的成熟度。
- 架构支持不断扩展:除了对AMD新架构(gfx1103)和NVIDIA新架构(SM120)的支持,PR 28891(隔离LongCatFlash的零专家)也体现了对复杂MoE模型架构的持续适配。
- 文档与构建体验优化:多个文档修复PR(31066, 31074)和构建警告PR(31073)表明项目在关注开发者体验和代码质量。
🛠️ 重点技术变更
- PR 30962(已合并): [Quantization] support logical_widths for fp8 marlin
- 解读:修复了FP8 Marlin内核在处理具有非标准“逻辑宽度”的权重张量时的断言错误。这允许更灵活的权重布局,确保更多FP8量化模型能正确加载和运行。
- 影响:直接解决了Issue 30750,增强了Marlin FP8量化方案的鲁棒性和模型兼容性。
- PR 30608(已合并): [BugFix]fix gpt-oss v1/completions response bug
- 解读:修复了GPT-OSS等具有逻辑推理/工具调用能力模型的两个关键Bug:1) 生成被截断时返回
content: null;2) 聊天与响应API端点提示构造不一致。 - 影响:解决了长期困扰用户的Issue 29641,提升了工具调用模型API的可靠性和一致性。
- 解读:修复了GPT-OSS等具有逻辑推理/工具调用能力模型的两个关键Bug:1) 生成被截断时返回
- PR 28891(已合并): [MoE Refactor][5/N] Isolate zero expert to LongCatFlash
- 解读:在MoE模型重构过程中,专门为LongCatFlash模型处理了“零专家”逻辑。通过创建
ZeroExpertFusedMoE类,将零专家与真实专家的维度处理隔离开,解决了维度不匹配错误。 - 影响:使得像
LongCat-Flash这样使用零专家占位符的复杂MoE模型能够在vLLM中正常运行,扩展了模型生态支持。
- 解读:在MoE模型重构过程中,专门为LongCatFlash模型处理了“零专家”逻辑。通过创建
- PR 31057(进行中): [KVConnector] Auto-downgrade to PIECEWISE cudagraph mode for layerwise async ops
- 解读:修复了使用支持逐层异步操作的KV连接器(如LMCache)时,与CUDA图的FULL模式不兼容的问题。该PR会自动检测并降级到PIECEWISE模式。
- 影响:维护者
robertgshaw2-redhat指出这会严重影响DBO(延迟批次优化)性能,因为DBO依赖FULL图模式。这凸显了高级图优化与特定异步操作之间的权衡,可能需要用户根据场景在“层式传输”和“DBO性能”之间做出选择。
📈 开发活跃度观察
- 贡献者:用户
westers在本周期极为活跃,提交了超过7个与ROCm修复、文档和Bug相关的PR,是推动AMD平台改进的主要力量。AMD员工gshtras和积极用户AndreasKaratzas也深度参与ROCm相关讨论。 - 代码审查与合并:合并了9个PR,效率较高。对于有争议的PR(如31084),审阅者提出了具体且严格的技术质询,体现了高质量的代码审查文化。维护者
robertgshaw2-redhat活跃于多个关键Issue和PR的讨论与决策中。 - Issue管理:关闭了12个旧Issue,包括一些长期悬而未决的问题(如29641),表明社区在清理问题积压方面取得了进展。
💡 值得关注的问题
- Issue 31086 (ROCm Triton后端损坏):这是由最新Docker镜像更新引发的新阻塞性问题,直接影响了AMD CI的通过率,需要高度优先处理。
- Issue 31064 (可选的隐藏状态传输):虽然已关闭,但其揭示的性能问题(特别是在非CUDA硬件上)值得其他硬件插件开发者参考。
- Issue 31085 (SM120 Blackwell NVFP4支持):反映了用户对新硬件(Blackwell)原生量化性能的迫切需求,跟进此需求的实现进度很重要。
- PR 31057 (KV连接器与CUDA图模式):其中关于与DBO性能冲突的讨论,指向了vLLM在复杂分布式推理场景下不同优化技术之间可能存在的冲突,这是一个重要的架构设计权衡点。
📋 附录:详细数据列表
新增 Issue
- #31086 [Bug][ROCm]: Triton backend broken — bug,rocm — by AndreasKaratzas (创建于: 2025-12-21 06:09 (UTC+8))
- #31085 [Feature]: Add SM120 (RTX 6000/5000 Blackwell) support for native NVFP4 MoE kernels — feature request — by Ramalama2 (创建于: 2025-12-21 02:11 (UTC+8))
- #31064 [RFC]: Optional Hidden States Transfer in
KVConnectorBase_V1to Eliminate Decoder Prefix-Prefill in P/D Disaggregation — RFC — by xinyu-intel (创建于: 2025-12-20 13:56 (UTC+8)) - #31081 [Bug]: v0.12.0 beam search result is incorrect — bug — by stltqhs (创建于: 2025-12-20 18:36 (UTC+8))
- #31080 [Bug]: TypeError: Received a CachedQwen2TokenizerFast for argument tokenizer — bug — by ZhaozwTD (创建于: 2025-12-20 18:18 (UTC+8))
- #31066 [Doc]: Formatting issue in markdown file — documentation — by ssaketh-ch (创建于: 2025-12-20 14:23 (UTC+8))
- #31063 [Bug]: Qwen3VL-8B-instruct-FP8 has larger result diff rate than sglang compared with transformers — bug,rocm — by DamonsJ (创建于: 2025-12-20 12:23 (UTC+8))
已关闭 Issue
- #29641 [Bug]: Max Tokens not being honoured in Chat Completions for GPTOSS model — bug — by soodrohit (关闭于: 2025-12-21 10:39 (UTC+8))
- #13486 [Performance]: Implement expert caching strategies — performance,stale — by wrmedford (关闭于: 2025-12-21 10:14 (UTC+8))
- #14124 [Installation]: Error occured while installing vllm — installation,stale — by Bakht-Ullah (关闭于: 2025-12-21 10:14 (UTC+8))
- #17239 [Bug]: Data Parallel with embed task hangs. — bug,stale — by Adenialzz (关闭于: 2025-12-21 10:13 (UTC+8))
- #22966 [Feature]: any way to config the prefix of chatcmpl-tool? — feature request,stale — by elvizlai (关闭于: 2025-12-21 10:13 (UTC+8))
- #30959 [Installation]: AssertionError: CUDA_HOME is not set — installation — by shahasim (关闭于: 2025-12-21 05:54 (UTC+8))
- #31033 [Bug]: gpt-oss-20b fails to start when using W4A8 Marlin with VLLM_MARLIN_INPUT_DTYPE=int8 — bug,gpt-oss — by mgoin (关闭于: 2025-12-21 05:58 (UTC+8))
- #30969 [Bug]: SmolLM3-3B FP8 Fails to Load [
compressed-tensorsandtransformers-implcompatibility issue] — bug,help wanted,good first issue — by GauthierRoy (关闭于: 2025-12-21 05:54 (UTC+8)) - #31064 [RFC]: Optional Hidden States Transfer in
KVConnectorBase_V1to Eliminate Decoder Prefix-Prefill in P/D Disaggregation — RFC — by xinyu-intel (关闭于: 2025-12-21 05:43 (UTC+8)) - #30750 [Bug]: assert part_size_n % scales.nelement() == 0 (Marlin FP8 Kernel) — bug — by milizhang (关闭于: 2025-12-21 04:02 (UTC+8))
- #30964 [Bug]: Qwen3-Next-80B-A3B-Instruct issues with long prompts — bug — by AIR-hl (关闭于: 2025-12-20 20:09 (UTC+8))
- #31012 [Bug]: truncate_prompt_tokens in PoolingParams has no effect when using AsyncLLM.encode() — bug — by jeffreywang-anyscale (关闭于: 2025-12-20 18:29 (UTC+8))
新增 PR
- #31088 add aarnphm and chaunceyjiang to the new tool_parser directory — ready,ci/build — by chaunceyjiang (创建于: 2025-12-21 10:31 (UTC+8))
- #31087 [Debug] revert Dockerfile.rocm_base changes — rocm,ci/build — by tjtanaa (创建于: 2025-12-21 09:55 (UTC+8))
- #31084 Fix ROCm attention backend selection for encoder-only models — rocm — by westers (创建于: 2025-12-21 01:14 (UTC+8))
- #31061 [Quantization] add marlin w4a8/w8a8 check — ready — by jinzhen-lin (创建于: 2025-12-20 12:06 (UTC+8))
- #31057 [KVConnector] Auto-downgrade to PIECEWISE cudagraph mode for layerwise async ops — kv-connector,nvidia — by yashwantbezawada (创建于: 2025-12-20 10:56 (UTC+8))
- #31079 Fix ROCm build to respect PYTORCH_ROCM_ARCH for GPU_TARGETS (issue #22590) — documentation,rocm,ci/build,v1,nvidia — by westers (创建于: 2025-12-20 16:24 (UTC+8))
- #31077 Fix ROCm CUDA graph replay synchronization bug (issue #29521) — documentation,rocm,ci/build,v1,nvidia — by westers (创建于: 2025-12-20 16:15 (UTC+8))
- #31075 [ROCm][CI/Build] Fix Dockerfile.rocm to set VLLM_TARGET_DEVICE=rocm — documentation,rocm,ci/build,v1 — by westers (创建于: 2025-12-20 15:51 (UTC+8))
- #31083 Update MiniMax-M2 ToolCall and add MiniMax-M2.1 in Docs — documentation — by rogeryoungh (创建于: 2025-12-21 00:51 (UTC+8))
- #31070 [Doc] Fix image rendering in paged_attention.md — documentation,v1 — by westers (创建于: 2025-12-20 14:59 (UTC+8))
- #31060 [Bugfix] Propagate PYTORCH_ROCM_ARCH to GPU_TARGETS in ROCm builds — rocm,ci/build — by westers (创建于: 2025-12-20 11:54 (UTC+8))
- #31071 [Doc] Clarify FP8 KV cache computation workflow — documentation,v1 — by westers (创建于: 2025-12-20 15:05 (UTC+8))
- #31067 [Bugfix] Fix incorrect tensor parallel size in Ray executor warning — v1 — by westers (创建于: 2025-12-20 14:28 (UTC+8))
- #31068 [Bugfix] Fix truncate_prompt_tokens ignored in PoolingParams.encode() — v1 — by westers (创建于: 2025-12-20 14:36 (UTC+8))
- #31072 [ROCm][Test] Skip RTN quantization tests on ROCm — documentation,rocm,v1 — by westers (创建于: 2025-12-20 15:16 (UTC+8))
- #31074 Fix formatting of softmax equation in documentation — documentation — by ssaketh-ch (创建于: 2025-12-20 15:24 (UTC+8))
- #31082 [BugFix] Fix index misalignment bug in rejection sampler — v1 — by usberkeley (创建于: 2025-12-20 21:46 (UTC+8))
- #31078 [Doc] Add warning regarding GPU profiling limitations on WSL2 — documentation — by kjuuii (创建于: 2025-12-20 16:20 (UTC+8))
- #31076 [ROCm][Bugfix] Disable CUDA graphs for distilgpt2 on ROCm — documentation,rocm,ci/build,v1,nvidia — by westers (创建于: 2025-12-20 16:07 (UTC+8))
- #31073 [CI/Build] Add CMake warning for ignored +PTX suffix in TORCH_CUDA_ARCH_LIST — ci/build,nvidia — by mhetrerajat (创建于: 2025-12-20 15:24 (UTC+8))
- #31069 Fix LoRA prefix cache corruption by using lora_int_id — rocm,ci/build,v1 — by westers (创建于: 2025-12-20 14:50 (UTC+8))
- #31062 [ROCm][Docker] Add gfx1103 support to Docker builds — rocm,ci/build — by westers (创建于: 2025-12-20 12:22 (UTC+8))
- #31065 [misc] allow overriding the TAG variable in auto_tune.sh — performance — by kkr16 (创建于: 2025-12-20 14:21 (UTC+8))
- #31059 [Frontend] add logprob, compression_rate to ‘verbose_json’ features — documentation,frontend — by sangbumlikeagod (创建于: 2025-12-20 11:37 (UTC+8))
- #31058 [Scheduler] Fix CrossAttn blocks per-request for Variable length encoder inputs — v1 — by ekagra-ranjan (创建于: 2025-12-20 11:09 (UTC+8))
已合并 PR
- #30991 [ROCm][CI/Build] Update ROCm dockerfiles — rocm,ready,ci/build — by gshtras (合并于: 2025-12-20 11:19 (UTC+8))
- #30608 [BugFix]fix gpt-oss v1/completions response bug — frontend,ready,tool-calling,gpt-oss — by princepride (合并于: 2025-12-21 10:39 (UTC+8))
- #31061 [Quantization] add marlin w4a8/w8a8 check — ready — by jinzhen-lin (合并于: 2025-12-21 05:58 (UTC+8))
- #31054 [CI] Fix H200 Distributed test — documentation,ready,ci/build — by LucasWilkinson (合并于: 2025-12-21 05:48 (UTC+8))
- #30962 [Quantization] support logical_widths for fp8 marlin — bug,ready — by jinzhen-lin (合并于: 2025-12-21 04:02 (UTC+8))
- #28891 [MoE Refactor][5/N] Isolate zero expert to LongCatFlash — ready,nvidia — by baonudesifeizhai (合并于: 2025-12-21 02:22 (UTC+8))
- #30944 [XPU] enable fp8 online streaming quantization — ready — by yma11 (合并于: 2025-12-20 21:45 (UTC+8))
- #31013 [Bugfix] Read truncate_prompt_tokens from pooling_params in AsyncLLM.encode() — ready,v1 — by jeffreywang-anyscale (合并于: 2025-12-20 18:29 (UTC+8))
- #31053 [CI] FIx
fixture 'siglip_attention_config' not found— rocm,ready,multi-modality — by LucasWilkinson (合并于: 2025-12-20 11:46 (UTC+8))
关闭但未合并的 PR
- #31070 [Doc] Fix image rendering in paged_attention.md — documentation,v1 — by westers (关闭于: 2025-12-21 00:25 (UTC+8))
- #31060 [Bugfix] Propagate PYTORCH_ROCM_ARCH to GPU_TARGETS in ROCm builds — rocm,ci/build — by westers (关闭于: 2025-12-21 00:25 (UTC+8))
- #31076 [ROCm][Bugfix] Disable CUDA graphs for distilgpt2 on ROCm — documentation,rocm,ci/build,v1,nvidia — by westers (关闭于: 2025-12-20 16:08 (UTC+8))