View on GitHub

LLM Dev Highlights

« Back to vLLM Reports

vLLM 开发动态报告 - 2026-03-23

时间窗口: 2026-03-23 11:29 (UTC+8) ~ 2026-03-24 11:29 (UTC+8) 数据统计: 新 Issue 34 | 关闭 Issue 12 | 新 PR 81 | 合并 PR 34 | 关闭未合并 PR 20


📊 每日开发状态摘要

本周期(2026-03-23至2026-03-24)vLLM项目保持高度活跃,新增Issue 34个,合并PR 34个。开发焦点集中在多模态模型支持(如Qwen3-VL、GLM-4.6V的嵌入和推理问题)、推理效率优化(睡眠模式内存释放、CUDA图性能)以及跨平台兼容性(特别是AMD/ROCm生态的性能优化与问题修复)上。多个关键Bug被快速定位和修复,社区协作紧密。

🎯 AMD/ROCm 生态相关动态

本周期AMD生态相关活动活跃,主要集中在性能优化、Bug修复和工具链支持上。

  1. Issue #37941: [Usage]: Using RIXL Connector on AMD GPU
    • 用户: ssyrc
    • 内容: 用户在隔离环境中尝试在AMD GPU上使用Nixl Connector进行PD(预填充/解码)分离,询问是否有基于Dockerfile.rocm的预构建镜像,并澄清官方ROCm镜像是否包含RIXL库,以及Nixl是否支持AMD-NVIDIA跨厂商通信。
    • 分析: 此Issue反映了用户在AMD生产环境中部署vLLM高级特性(如PD分离)时遇到的实际障碍,突显了AMD生态在容器化部署和高级通信库支持方面的文档和资源缺口。
  2. PR #37891: [ROCm][Perf] Add fused AllReduce+RMSNorm for DeepSeek on MI355X
    • 提交者: attila-dusnoki-htec
    • 状态: Open
    • 内容: 针对AMD MI355X (gfx950) 平台,为DeepSeek V2/V3/R1模型引入了融合的AllReduce+RMSNorm内核(通过AITER实现)。通过将张量并行AllReduce从o_proj和MoE投影层移至后续的RMSNorm层,并与残差加法融合,减少了内核启动开销和内存流量,以提升FP4/FP8量化模型在TP>1时的性能。
    • 分析: 这是针对特定AMD硬件(MI355X)和模型家族(DeepSeek)的深度性能优化,展示了AMD生态向更细粒度、模型感知的优化方向发展。
  3. PR #37887: [ROCm][perf] fix Aiter sparse MLA with MTP>1
    • 提交者: gronsti-amd (AMD员工)
    • 状态: Open
    • 内容: 修复了在DeepSeek v3.2模型上使用ROCM_AITER_MLA_SPARSE注意力后端,并启用MTP(多令牌预测)推测解码且 num_speculative_tokens > 1 时的问题。问题根因是检查逻辑依赖于attn_metadata列表的顺序,修复后检查所有注意力类型。
    • 分析: 该修复确保AMD AITER稀疏MLA后端能够与更先进的推测解码方法(MTP)完全兼容,提升了AMD平台上大模型推理的效率和能力。
  4. PR #37533: [ROCm] fix sleep mode not releasing GPU memory problem on ROCm
    • 提交者: aaab8b
    • 状态: Merged
    • 内容: 修复了ROCm平台上睡眠模式无法真正释放GPU显存的问题。根本原因是HIP的hipMemRelease在虚拟地址保留期间不会释放物理显存。修复方案在unmap_and_release中强制进行地址释放与重新保留的循环,确保物理页被释放。
    • 分析: 这是一个关键的平台特定Bug修复,解决了ROCm上资源管理的重要缺陷,使得睡眠模式在AMD GPU上真正可用,对动态工作负载管理至关重要。
  5. PR #36505: [ROCm][Refactor] Enable AWQMarlinConfig on ROCm to use choose_mp_linear_kernel
    • 提交者: mgehre-amd (AMD员工)
    • 状态: Merged
    • 内容: 重构了ROCm上的AWQ(激活感知权重量化)支持,使AWQMarlinConfig能通过统一的choose_mp_linear_kernel框架选择内核(如ConchLinearKernel),而非直接调用NVIDIA专用的ops.marlin_gemm。此举显著提升了AWQ模型在ROCm上的性能(基准测试显示预填+57%,解码+73%)。
    • 分析: 这是将AMD量化支持整合进vLLM统一内核调度框架的重要一步,提升了代码一致性和性能。
  6. PR #36100: [ROCm] Fix fused_moe_fake signature mismatch and other AITER bugs
    • 提交者: ChuanLi1101
    • 状态: Merged
    • 内容: 修复了ROCm AITER自定义op中fused_moe_fake元函数签名不匹配的严重Bug(缺少hidden_pad等4个参数),以及其他一些注释和日志中的小错误。
    • 分析: 修复了torch.compile/FakeTensor模式下因签名不匹配导致的崩溃,确保了AMD平台编译路径的稳定性。
  7. PR #37906 & #37930: [ROCm][CI] 相关改进
    • 提交者: AndreasKaratzas
    • 状态: Merged / Open
    • 内容: 同步了AMD CI的测试任务拆分(#37906),并添加了uv pip compile工作流用于生成ROCm测试依赖的锁文件(#37930)。
    • 分析: 持续改进AMD平台的CI/CD流程,保障代码质量和测试效率。

💬 高热度讨论分析

  1. Issue #37855: [Bug]: Qwen3-VL-Embedding-8B Image embedding failed
    • 评论数: 7
    • 核心议题: 用户报告Qwen3-VL-8B模型在图像嵌入时出现500内部服务器错误。
    • 各方观点:
      • 报告者 (nuclearwu): 提供了详细的错误堆栈和环境信息(910B2)。
      • 回应者 (JINO-ROHIT, DarkLight1337): 尝试复现并索要更详细的环境信息(collect_env.py输出)以协助诊断。
      • 贡献者 (CMLKevin): 多次表示正在调查并准备提交修复,认为问题可能与VLM嵌入张量准备有关。
    • 当前状态: Open。问题尚未解决,处于信息收集和初步分析阶段。这反映了多模态模型支持的复杂性。
  2. Issue #37858: [Bug]: does not have the attribute ‘FakeTensorMode’
    • 评论数: 5
    • 核心议题: 用户遇到FakeTensorMode属性错误,疑似PyTorch兼容性问题。
    • 各方观点:
      • 报告者 (ACCEKLL): 提供完整环境信息。
      • 贡献者 (CMLKevin): 初步分析为PyTorch版本不匹配或API变更。
      • 核心开发者 (zou3519): 指出根本原因是PR #37158(修复PyTorch 2.10支持)未包含在发布版本中,导致此问题在v0.18.0出现。他解释了该PR的作用。
      • 报告者追问修复版本。
    • 争议焦点: 无争议,核心开发者快速定位了根因。
    • 当前状态: Open。问题根源明确,待相关PR合入或版本更新。
  3. Issue #37849: [RFC]: Unify the function of getting device count
    • 评论数: 5
    • 核心议题: 提议统一项目中三种获取设备数量的函数 (cuda_device_count_stateless, current_platform.device_count, torch.accelerator.device_count())。
    • 各方观点:
      • 提议者 (wincent8): 认为当前方式令用户困惑,且cuda_device_count_stateless阻碍了XPU等多加速器支持,建议分两步走进行统一。
      • 核心开发者 (simon-mo): 指出cuda_device_count_stateless存在的意义是避免初始化CUDA上下文,询问新方案是否能保持此特性。
      • 核心开发者 (jikunshang): 建议更稳妥的两阶段方案:先用current_platform.device_count()包装,再尝试替换为torch官方API。
      • simon-mo最终表示支持清理,但要求验证原有Bug不会复现。
    • 争议焦点: 如何在保证向后兼容性和避免隐式上下文初始化的前提下,优雅地统一API。讨论倾向于谨慎的渐进式重构。
    • 当前状态: Open。达成重构共识,进入具体方案验证阶段。
  4. Issue #37857: [Bug]: RoutedExpertsCapturer.capture() assertion failure with DP>1 when supports_internal_mk=True
    • 评论数: 3
    • 核心议题: 在数据并行(DP>1)且量化方法使用模块化内核路径时,MoE专家捕获器因断言失败而崩溃。
    • 各方观点:
      • 报告者 (junjzhang): 提供了极其详细的分析,精准定位了问题根因——两种DP分发路径下topk_ids形状的差异,并给出了具体的修复建议代码。
      • 贡献者 (Young-Leo): 积极响应,表示将着手修复。
      • 报告者 (junjzhang): 对修复方案表示认可,并建议添加测试覆盖。
    • 争议焦点: 无争议。这是一个高质量的技术Bug报告,直接促成了修复PR (#37879) 的产生。
    • 当前状态: Open。关联PR #37879已提交,旨在修复此问题。

🔥 热门话题与趋势分析

  1. 多模态模型支持与调试:多个Issue(#37855, #37928, #37934)涉及Qwen3-VL、Nemotron-colembed-vl、GLM-4.6V等多模态模型的嵌入、服务端点和量化问题,显示多模态推理正成为复杂问题高发区,对测试和文档提出更高要求。
  2. 推理效率与资源管理
    • 睡眠模式:Issue #37860 和已合并的PR #37533 分别针对CUDA和ROCm平台修复睡眠模式内存释放问题,显示该特性在动态伸缩场景下的重要性。
    • 编译与缓存:Issue #37919 报告了torch.compile缓存未命中导致编译时间暴增的问题,反映了性能优化与编译系统复杂度之间的平衡挑战。
    • 推测解码:多个PR(#37887, #37944)围绕推测解码进行优化和问题修复,持续追求更低延迟。
  3. AMD平台性能深耕:如AMD生态动态所示,AMD贡献者正从基础功能支持(如睡眠模式修复)转向针对特定硬件(MI355X)和模型(DeepSeek)的深度性能优化(融合内核),表明AMD生态在vLLM中的集成进入成熟和精细化阶段。
  4. 新量化方法探索:Issue #37908 提议集成Nunchaku库的SVDQuant (W4A4) 量化方法,显示了社区对更激进、更高效量化方案的持续兴趣。

🛠️ 重点技术变更

  1. PR #35963: [Feature] ViT Full CUDA Graph (Merged)
    • 解读: 为视觉Transformer编码器引入了完整的CUDA图支持,支持基于预算的图捕获、贪婪装箱算法和数据并行。通过SupportsEncoderCudaGraph协议实现模型无感管理。
    • 影响: 预计将显著减少多模态模型中ViT部分的内核启动开销,提升Qwen3-VL等模型的端到端推理性能,是多模态推理优化的重大进展。
  2. PR #37533: [ROCm] fix sleep mode not releasing GPU memory problem on ROCm (Merged)
    • 解读: 解决了ROCm平台上一个长期存在的资源管理缺陷,通过强制地址释放/保留循环,确保睡眠模式能真正释放物理显存。
    • 影响: 使睡眠模式在AMD GPU上变得可靠,对于需要动态调整资源占用的云服务和多租户环境至关重要。
  3. PR #37873 & #37884: RoBERTa position_ids 累积错误修复 (Both Merged)
    • 解读: 两个PR从不同角度修复了同一核心Bug:RoBERTa类嵌入模型在CUDA图启用时,因位置ID缓冲区被就地修改并累积,最终导致索引越界。一个在模型运行器层面清零填充区,另一个在模型层面改为非就地计算。
    • 影响: 修复了影响BGE-M3等多个流行嵌入模型的严重崩溃问题,提升了嵌入模型服务的稳定性。
  4. PR #37891: [ROCm][Perf] Add fused AllReduce+RMSNorm for DeepSeek on MI355X (Open)
    • 解读: 针对AMD MI355X和DeepSeek模型家族,将AllReduce与RMSNorm融合,是硬件、模型、框架协同优化的典型案例。
    • 影响: 若被合并,将直接提升DeepSeek系列模型在特定AMD硬件上的张量并行效率,为其他模型的类似优化提供参考。
  5. PR #37948: [Perf] triton bilinear_pos_embed kernel for ViT (Open)
    • 解读: 为ViT中的双线性位置嵌入插值编写了融合的Triton内核,替换了大量细碎的PyTorch操作。
    • 影响: 可大幅减少ViT预处理阶段的CPU开销和内核启动次数,是对多模态推理流水线另一环节(预处理)的优化。

📈 开发活跃度观察

💡 值得关注的问题

  1. Issue #37856: Shared Expert output is incorrect under Sequence Parallel MoE: 大规模部署Qwen3.5 MoE模型时,在序列并行路径下共享专家计算错误,导致输出乱码。影响:涉及TP>1, DP>1, EP启用的大规模MoE模型训练/推理的正确性,亟待修复。
  2. Issue #37907: “none” reasoning effort doesn’t do what it says it does (and may break output): 指出当前reasoning_effort="none"的实现方式(隐藏而非不生成推理内容)存在语义问题且可能导致输出损坏。影响:涉及推理模型API设计的合理性与向后兼容性,需要谨慎设计。
  3. Issue #37941: Using RIXL Connector on AMD GPU: 暴露了AMD生态在高级部署特性(PD分离)上工具链和文档的不足。影响:阻碍了用户在AMD生产环境中使用vLLM的全部能力。
  4. Issue #37854: NGC vLLM 26.02 rejects Nemotron-3-Super-120B-A12B-NVFP4: NGC容器内vLLM版本与模型量化格式(MIXED_PRECISION)不兼容,且升级路径受阻。影响:用户在使用官方NGC镜像服务最新量化模型时遇到障碍,凸显了容器版本与模型发布节奏的协调问题。
  5. PR #37944: Revert “Zero-bubble async scheduling + spec decoding”: 由于在CPU后端引入Triton内核导致CI大规模失败,一项重要的异步调度优化被临时回退。影响:表明在支持多后端(CPU/GPU)时,性能优化代码需格外注意兼容性,该特性的重新引入值得关注。

📋 附录:详细数据列表

新增 Issue

已关闭 Issue

新增 PR

已合并 PR

关闭但未合并的 PR