Prhub

#49292 Fix Qwen3-VL M-RoPE on the Transformers modeling backend (grids + compile)

原始 PR 作者 ariG23498 合并时间 2026-07-22 02:28 文件变更 1 提交数 4 评论 0 代码增减 +3 / -7

执行摘要

修复 Transformers 后端 Qwen3-VL M-RoPE 的两个 bug

用户尝试使用 Qwen/Qwen3-VL-4B-Instruct-FP8 模型时,在 eager 和 compile 两种模式下均遇到失败。Eager 模式下,空 video_grid_thw 传为空张量触发了 transformers 的 None 检查;编译模式下,unsqueeze 操作保留了原步幅信息,导致 torch.compile 动态符号推导错误。

值得阅读。虽然改动量小,但揭示了 torch.compile 模式下一个容易被忽略的步幅陷阱,并提供了清晰的解决方案。

讨论亮点

PR 无 review 评论,仅由 hmellor 批准合并。提交历史显示作者曾尝试使用 .as_strided() 等方式避免内存拷贝,最终回归 .contiguous() 方案。

实现拆解

  1. 修复空 video_grid_thw 传值问题get_mrope_input_positions 方法):将 torch.tensor([]) 改为 None,匹配 transformers 对空输入的预期。
  2. 修复编译模式下的步幅问题forward 方法):在 positions[:, None] 后增加 .contiguous(),强制生成新的连续张量,消除陈旧步幅信息。
文件 模块 状态 重要度
vllm/model_executor/models/transformers/multimodal.py 多模态后端 modified 6.18

关键符号

forward get_mrope_input_positions

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

评论区精华

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

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

风险与影响

改动仅 3 行源码,风险极低。.contiguous() 可能引入微小内存拷贝开销,但对推理性能影响可忽略。空张量改 None 仅影响空视频输入分支,不影响正常流程。

影响范围:仅 Transformers 建模后端 + Qwen3-VL 模型(使用 M-RoPE 且可能无视频输入)。解决了 Qwen3-VL 模型在该后端上的可用性问题,使 eager 和 compile 两种模式均能正常运行。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论