Prhub

#44493 [Bugfix]Fix Kimi-K2.5 FlashInfer ViT metadata

原始 PR 作者 Kevin-XiongC 合并时间 2026-06-04 16:14 文件变更 2 提交数 1 评论 0 代码增减 +109 / -28

执行摘要

修复 Kimi-K2.5 FlashInfer ViT 元数据处理错误

--mm-encoder-attn-backend FLASHINFER 下运行 Kimi-K2.5 推理时,由于 ViT 元数据处理方式不当会引发错误。另外,移除了一个意外的设备同步——通过保持 grid_thws 在 CPU 上。参考 PR body 中提到的错误截图和性能对比。

建议合并,尤其如果团队维护 Kimi-K2.5 多模态支持。值得关注的设计决策是避免 GPU 张量上的 .tolist() 调用以及将 grid_thws 保持 CPU 固定,这是性能优化通用经验。

讨论亮点

无实质 review 讨论,审核者 Isotr0py 直接批准。

实现拆解

  1. 修改 kimi_k25_vit.py 前向传播类型签名:将 Learnable2DInterpPosEmbDivided_fixed.forwardMoonVision3dPatchEmbed.forwardRope2DPosEmbRepeated.get_freqs_cisgrid_thws 参数类型从 torch.Tensor 扩展为 torch.Tensor | list[list[int]],避免在 GPU 张量上直接调用 .tolist() 导致的隐式设备同步。
  2. 新增 prepare_encoder_metadata 方法:在 KimiK25VisionTower 中添加该方法,用于生成 FlashInfer 所需的 max_seqlensequence_lengths 元数据,并传入注意力层。
  3. 修改注意力前向接口:在 FlashMoeBlock.attention_qkvpackedFlashMoeBlock.forward 中增加 max_seqlensequence_lengths 参数,并传递给底层 FlashInfer 注意力后端。
  4. 修改 kimi_k25.py 配置:在 KimiK25MultiModalProcessor._get_mm_fields_config 中将 grid_thwsMultiModalFieldConfig.batched 设为 keep_on_cpu=True,确保该字段始终保留在 CPU 上,避免不必要的 GPU 数据传输。
文件 模块 状态 重要度
vllm/model_executor/models/kimi_k25_vit.py 视觉模型 modified 8.33
vllm/model_executor/models/kimi_k25.py 多模态处理器 modified 5.17

关键符号

Learnable2DInterpPosEmbDivided_fixed.forward MoonVision3dPatchEmbed.forward Rope2DPosEmbRepeated.get_freqs_cis FlashMoeBlock.attention_qkvpacked FlashMoeBlock.forward KimiK25VisionTower.prepare_encoder_metadata KimiK25MultiModalProcessor._get_mm_fields_config

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低,主要影响 Kimi-K2.5 模型在 FlashInfer 后端下的多模态推理。修改了 ViT 前向的核心接口,可能对非 FlashInfer 后端(如默认后端)产生隐含影响,但改动兼容旧接口(torch.Tensor),不会破坏现有行为。新增 prepare_encoder_metadata 方法仅用于 FlashInfer 场景,不会影响其他路径。缺少直接针对 FlashInfer 的单元测试覆盖,需依赖集成测试或 OCRbench 验证。

直接影响使用 Kimi-K2.5 模型且指定 FlashInfer 为视觉编码器注意力后端的用户,修复了崩溃并提升了性能(消除设备同步)。对其他后端无影响。团队需确保在回归测试中覆盖该模型。

核心路径变更 缺少测试覆盖 特定后端依赖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论