Prhub

#55588 [CI/Build] Unskip ColQwen3 multimodal pooling tests on Transformers v5

原始 PR 作者 Sip4818 合并时间 2026-09-07 23:15 文件变更 1 提交数 3 评论 8 代码增减 +0 / -5

执行摘要

移除 ColQwen3 测试文件上因 Transformers v5 迁移而错误添加的跳过标记。

本 PR 的动机源于对 Transformers v5 升级(追踪 Issue #38379)的梳理。在迁移过程中,test_colqwen3.py 被错误地标记为跳过,原因是 HF Hub 上的远程模型脚本存在 missing all_tied_weights_keys 的权重绑定 bug。PR 作者通过分析发现,该测试文件只使用 VllmRunner 测试 vLLM 自己的原生 ColQwen3Model,该模型加载逻辑与 HF Hub 的 AutoModel.from_pretrained 完全不同,因此这个 skip 是一个“误报”(false positive)。移除它可以恢复对 ColQwen3 模型在 vLLM 中功能的测试覆盖。

建议精读。虽然变更极其简单,但其背后的分析过程很有价值。PR 的描述清晰地阐述了为什么原始的 skip 是错误的,并提供了有力的证据(测试仅使用原生模型)。这对于理解 vLLM 如何处理与 transformers 库的依赖关系(是使用其原生实现还是 HF Hub 的动态代码)是一个很好的示例。对于参与维护测试套件或处理上游依赖迁移的工程师来说,值得快速浏览其推理逻辑。

讨论亮点

讨论的核心确认了该跳过标记是一个误判。

  • 决策结论:维护者 hmellor 在审核中明确指出:“This one does appear to have been a false positive since the HF reference is not used”(这确实是一个误报,因为 HF 的引用没有被使用)。这直接肯定了 PR 作者的分析,即测试并未使用到存在 bug 的 HF Hub 代码。
  • 未解决疑虑:无。讨论简洁,维护者基于对代码的理解直接做出了批准决策。

实现拆解

  1. 变更入口:测试文件 tests/models/multimodal/pooling/test_colqwen3.py。
  2. 核心逻辑改动:移除了文件开头的 pytestmark = pytest.mark.skip(...) 这五行代码。这是一个纯配置/元数据变更,不涉及任何功能逻辑。
  3. 配套验证:PR 作者在描述中提供了本地验证证据,说明在 transformers==5.16.1 和 torch==2.14.0 环境下,相关的配置加载和测试逻辑均通过。同时,参考了已处于未跳过状态的同类测试文件 test_colqwen3_5.py。
  4. 部署/配置影响:此变更仅影响测试套件的执行。移除后,CI 将恢复对 ColQwen3 多模态池化测试的运行,增加了对 vLLM 原生模型实现的持续验证。
文件 模块 状态 重要度
tests/models/multimodal/pooling/test_colqwen3.py ColQwen3 测试 modified 4.45

关键源码片段

tests/models/multimodal/pooling/test_colqwen3.py test-coverage

这是本 PR 变更的唯一文件,包含需要移除的错误跳过标记。

# 移除前:文件开头有如下跳过标记,导致整个测试文件被跳过。
# 移除后:该标记被删除,测试将正常运行。
# 以下是移除前的代码结构,用于说明变更位置:
pytestmark = pytest.mark.skip(
    reason="ColQwen3 model's weight tying is incompatible with "
    "transformers v5 (missing all_tied_weights_keys)"
)
​
# 下面是测试文件中其他未修改的核心部分,展示了测试是针对 vLLM 原生模型的。
MODELS = [
    "TomoroAI/tomoro-colqwen3-embed-4b",
    "OpenSearch-AI/Ops-ColQwen3-4B",
    "nvidia/nemotron-colembed-vl-4b-v2",
]
# ... 测试使用 VllmRunner 加载这些模型进行验证,不涉及 HF Hub 的 AutoModel。

评论区精华

确认跳过标记为误报 正确性

PR 作者在描述中论证了跳过标记的错误性:`test_colqwen3.py` 仅测试 vLLM 的原生 `ColQwen3Model`,该模型不继承 `transformers.PreTrainedModel`,因此不受 HF Hub 上 `ColQwen3` 模型脚本权重绑定 bug 的影响。维护者 `hmellor` 评论确认:“This one does appear to have been a false positive since the HF reference is not used”。

结论:维护者同意移除跳过标记,因为测试路径不依赖于存在问题的 HF Hub 代码。 · 已解决

风险与影响

风险极低。此变更仅删除测试文件的跳过标记,不修改任何生产代码、配置或接口。

  • 回归风险:几乎为零。移除的是错误添加的跳过,恢复的是原本就应该运行的测试。测试本身(基于 VllmRunner 和原生模型)是独立的。
  • 兼容性风险:无。测试环境(Python 3.12, transformers v5.16.1, torch 2.14.0)已由作者验证。
  • 维护风险:唯一潜在的长期风险是,如果 vLLM 的原生 ColQwen3Model 实现未来与 HF Hub 的 transformers 库发生耦合,但目前分析表明两者是解耦的。

影响范围小且正面。

  • 对用户:无直接影响,因为这是内部测试的调整。
  • 对系统:增强了 vLLM 对 ColQwen3 模型支持的持续集成验证,确保该多模态模型的功能在开发过程中不被无意破坏。
  • 对团队:为团队清理了 Transformers v5 升级任务(#38379)中的一个错误条目,使测试覆盖状态更准确。同时,提供了一个清晰的案例:区分“上游依赖的 bug”与“自身实现是否受影响”,对处理类似迁移问题有参考价值。

关联 Issue

#38379 Upgrade to Transformers v5

完整报告

参与讨论