Prhub

#6445 [model] refactor: clean up outdated Qwen2_5_vl code implementation

原始 PR 作者 ji-huazhong 合并时间 2026-05-25 11:46 文件变更 9 提交数 2 评论 2 代码增减 +0 / -1618

执行摘要

删除 Qwen2.5VL 旧版 mcore 实现,清理 1618 行代码

PR 标题表明清理过时的 Qwen2_5_vl 代码实现。评论者 vermouth1992 进一步指出需要同时移除所有 import 引用,确保清理完整,并给出了 model_initializer.py 中的参考位置。该实现可能已被更高优先级的模型流程替代,不再需要维护两份代码。

该 PR 是标准的代码清理操作,对于理解如何安全、彻底地删除一个模型模块有参考价值。模型开发者可关注 model_initializer.py 中的注册机制,以及 review 中强调的全量清理原则。一般阅读者浏览执行摘要即可。

讨论亮点

vermouth1992 评论指出:「We may need to also remove all the imports」,并提供了 model_initializer.py 的具体行号作为参考。该意见被采纳,作者在第二个 commit 中补充了引用清理。gemini-code-assist 的自动化审查曾警告可能存在 ImportError,但该审查被 dismiss。最终 PR 获得 wuxibin89 的批准。

实现拆解

  1. 删除子模块:移除 verl/models/mcore/qwen2_5_vl/ 下的 7 个文件,包括模型定义、注意力层、视觉编码器、位置编码、配置和包初始化。
  2. 清除导入与初始化分支:在 verl/models/mcore/model_initializer.py 中删除对 Qwen25VLModel 的导入以及 initialize 函数中对应的模型构建分支。
  3. 更新注册表:在 verl/models/mcore/registry.py 中移除与旧实现关联的模型映射条目。
  4. 补充遗漏引用:第二个 commit 进一步清理了其他模块可能遗存的引用(参考 vermouth1992 的 review 提示)。
文件 模块 状态 重要度
verl/models/mcore/qwen2_5_vl/model.py 模型定义 removed 9.17
verl/models/mcore/qwen2_5_vl/vision_model.py 视觉模型 removed 9.28
verl/models/mcore/qwen2_5_vl/vision_transformer_block.py 视觉 Transformer 块 removed 9.08
verl/models/mcore/qwen2_5_vl/rope_utils.py 位置编码 removed 8.96
verl/models/mcore/qwen2_5_vl/attention.py 注意力层 removed 8.44
verl/models/mcore/qwen2_5_vl/vision_config.py 视觉配置 removed 8.04
verl/models/mcore/qwen2_5_vl/__init__.py 包初始化 removed 6.37
verl/models/mcore/model_initializer.py 模型初始化 modified 8.21
verl/models/mcore/registry.py 模型注册 modified 5.1

关键符号

Qwen2_5VLModel Qwen2_5VisionModel Qwen2_5VisionTransformerBlock Qwen2_5VLSelfAttention PatchEmbed VisionRotaryEmbedding get_rope_index apply_rotary_pos_emb_thd_absolute apply_rotary_pos_emb_absolute get_vision_model_config get_vision_projection_config Qwen25VLModel initialize get_transformer_layer_spec

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

评论区精华

需要移除所有 import 引用 正确性

vermouth1992 指出仅删除包文件不够,必须同时清除 model_initializer.py 和 registry.py 中的导入和引用,否则会导致 ImportError。

结论:作者在第二个 commit 中删除了这些引用,问题已解决。 · 已解决

风险与影响

主要风险是与其他模块的依赖关系若未清理干净会导致 import 错误。PR 已通过第二次 commit 解决 review 中提出的问题。但若存在外部脚本或配置直接引用 verl.models.mcore.qwen2_5_vl 中的符号,则会产生断裂。由于该实现已标记为 outdated,且新替代方案已存在,影响可控。当前无新增测试覆盖删除操作。

直接影响是移除了 Qwen2.5VL 的旧 mcore 实现,任何使用 verl.models.mcore.qwen2_5_vl 的代码必须迁移到新实现(如 Megatron-Bridge 路径)。用户层面,若训练脚本显式指定了该模型架构,需更新配置。影响范围限于 model 模块,不涉及训练器、rollout 等核心流程。

依赖遗漏风险 无测试验证

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论