执行摘要
- 一句话:修复 GLM-4V processor 类名匹配 bug
- 推荐动作:建议合并,并考虑补充 GLM-4V 的单元测试或 E2E 测试,避免类似回归。
功能与动机
训练 GLM-4.1V/GLM-4V 多模态模型时,hf_processor 中的类名匹配从未命中,导致 Glm4vModel 无法绑定 get_rope_index,最终训练失败(Issue #6814)。根因是 AutoProcessor 返回的是 Glm4vProcessor,而匹配分支写的是 Glm4vImageProcessor(它是图像处理器子组件,而非主处理器类)。
实现拆解
修改 verl/utils/tokenizer/tokenizer.py 中 hf_processor 函数的 match 语句:将 case "Glm4vImageProcessor": 改为 case "Glm4vProcessor":,使类名匹配与 AutoProcessor 返回的实际类名一致,从而正确执行 Glm4vModel 的导入和方法绑定。
关键文件:
verl/utils/tokenizer/tokenizer.py(模块 工具;类别 source;类型 core-logic): 核心 dispatch 逻辑所在,单行修正直接修复 GLM-4V 训练失败问题。
关键符号:hf_processor
关键源码片段
verl/utils/tokenizer/tokenizer.py
核心 dispatch 逻辑所在,单行修正直接修复 GLM-4V 训练失败问题。
# 文件 : verl/utils/tokenizer/tokenizer.py, 函数 : hf_processor
# 原本的 case "Glm4vImageProcessor": 从未匹配,因为 AutoProcessor 返回的是 Glm4vProcessor
# 修正后与其他 VL 分支模式一致
case "Glm4vProcessor":
from transformers.models.glm4v import Glm4vModel
model_class = Glm4vModel
评论区精华
PR 无人工讨论,仅两个 bot 自动审查且均无反对意见。
风险与影响
- 风险:风险极低:单字符级别的类名修正,与 Qwen 等其他 VL 分支模式保持一致。但缺少回归测试覆盖 GLM-4V 的训练流程。
- 影响:直接修复 GLM-4.1V/GLM-4V 多模态模型训练的阻塞问题,对其他模型无影响。
- 风险标记:暂无
关联脉络
参与讨论