Prhub

#25829 fix: adapt dots_vlm for transformers v5

原始 PR 作者 hanwlax 合并时间 2026-05-28 15:26 文件变更 1 提交数 7 评论 6 代码增减 +10 / -2

执行摘要

适配 DotsVLM 与 transformers v5 API 变更

在 transformers v5 中,min_pixelsmax_pixels 属性被移入 .size 字典中,直接访问 image_processor.min_pixels 会引发 AttributeError。该 PR 旨在兼容这一 API 变化,确保 DotsVLM 模型在多模态流程中能正常初始化。

建议合并。变更简单、风险低,解决已知的兼容性问题。未来可考虑在多模态 processor 基类中统一处理此类版本兼容逻辑,减少重复适配工作。

讨论亮点

无 reviewer 评论,仅由 sglang-npu-bot 自动批准。PR 提交者 hanwlax 多次触发 CI 重跑(/tag-and-rerun-ci/rerun-failed-ci),CI 基本通过,仅 extra 测试有一处失败但未影响合并。

实现拆解

  1. 定位问题:在 DotsVLMImageProcessor.__init__ 中,原代码直接访问 _processor.image_processor.min_pixels_processor.image_processor.max_pixels
  2. 引入 getattr 加回退:使用 Python 内置 getattr 函数,先尝试直接读取属性,若不存在则回退到 _processor.image_processor.size 字典中读取 shortest_edge(对应 min_pixels)和 longest_edge(对应 max_pixels)。
  3. 保持原有逻辑MAX_RATIOIMAGE_FACTOR 及 token 相关属性不受影响。仅初始化阶段的属性读取方式改变,不影响后续推理。
  4. 无测试变更:PR 未包含新增单元测试,但通过本地验证确保兼容性。
文件 模块 状态 重要度
python/sglang/srt/multimodal/processors/dots_vlm.py 多模态 modified 5.4

关键符号

DotsVLMImageProcessor.__init__

关键源码片段

python/sglang/srt/multimodal/processors/dots_vlm.py core-logic

唯一修改的文件,修复 transformers v5 兼容问题。

# python/sglang/srt/multimodal/processors/dots_vlm.py
# 在 __init__ 方法中,原先直接访问 _processor.image_processor.min_pixels
# 在 transformers v5 中该属性被移除,需要从 .size 字典中回退读取
self.MIN_PIXELS = getattr(
    _processor.image_processor,
    "min_pixels", # 优先尝试直接属性
    getattr(_processor.image_processor, "size", {}).get("shortest_edge"), # 回退到 size 字典
)
self.MAX_PIXELS = getattr(
    _processor.image_processor,
    "max_pixels",
    getattr(_processor.image_processor, "size", {}).get("longest_edge"),
)

评论区精华

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

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

风险与影响

风险极低:变更局限于单个文件的一行读取逻辑,使用 Python 内置 getattr,语义明确且向下兼容。若 size 字典中缺少对应键(极少见),会返回 None,但不会崩溃;后续使用这些像素值时可能产生非预期行为,需确保 transformers 版本已正确配置 size 字段。

仅影响 DotsVLMForCausalLMDotsOCRForCausalLM 模型的使用者,且仅在初始化阶段。对于已使用 transformers v5 的用户是必选修复;对于旧版本用户无影响。不涉及推理性能、内存或精度变化。

低风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论