Prhub

#43846 Fix `OlmoHybridForCausalLM` not initialising

原始 PR 作者 hmellor 合并时间 2026-05-28 20:33 文件变更 1 提交数 2 评论 0 代码增减 +2 / -2

执行摘要

OlmoHybrid 初始化修复:放宽 rope_type 检查

OlmoHybridForCausalLM 的 checkpoint 近期从 rope_parameters = None 变为 rope_parameters = {"rope_type": None},导致 vLLM 的 patch_legacy_rope_type 方法触发 Case 3 的 ValueError,但该模型在 modeling 代码中已自行处理了 rope_type 缺失的情况(见 vllm/model_executor/models/olmo_hybrid.py#L144-L156)。PR 旨在兼容此类模型配置。

该 PR 变更简单直接,建议合并。也可考虑添加更细粒度的日志警告,以平衡兼容性与可调试性。

讨论亮点

该 PR 无 review 评论,仅有 Isotr0py 的快速 approve。

实现拆解

  1. vllm/transformers_utils/config.py_patch_legacy_rope_type 函数中,将 Case 3("No rope_type field present")的处理从 raise ValueError 改为 return
  2. 更新相应注释以匹配新的行为。
    此修改仅当 rope_parameters 不为 None 且不含 rope_type 时生效,不影响其他分支。
文件 模块 状态 重要度
vllm/transformers_utils/config.py 配置工具 modified 5.23

关键符号

patch_legacy_rope_type

关键源码片段

vllm/transformers_utils/config.py core-logic

核心修改文件,调整了 _patch_legacy_rope_type 函数的异常处理逻辑,将 raise ValueError 改为 return。

# vllm/transformers_utils/config.py (partial)def _patch_legacy_rope_type(rope_parameters: dict[str, Any]) -> None:
    # ... 前面的 case 1, case 2 逻辑保持不变 ...
​
    # Case 3: No rope_type field present - nothing to patch
    # 原本这里会 raise ValueError,但某些模型(如 OlmoHybrid)
    # 将 rope_parameters 设为空字典或 { "rope_type": None },
    # 且模型自身已在 modeling 代码中处理了缺失情况,
    # 因此改为 return,避免阻塞模型加载。
    if "rope_type" not in rope_parameters:
        return
​
    # Patch legacy rope_type values with warning ...

评论区精华

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

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

风险与影响

低风险。变更仅为将异常抛出改为提前返回,不影响正常的有 rope_type 的模型加载。但需注意:若其他模型意外缺少 rope_type 且未自行处理,之前会报错提醒,现在则会静默忽略,可能导致难以排查的推理错误。不过这种情况较少见。

直接影响 OlmoHybridForCausalLM 模型加载,允许其正常初始化。对其他模型无影响。对用户而言,修复了一个阻止模型加载的 bug。

静默忽略配置错误

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论