Prhub

#42830 Fix: Propagate pinned model revisions into Ultravox secondary weight loading

原始 PR 作者 weizhoublue 合并时间 2026-05-17 01:02 文件变更 1 提交数 1 评论 3 代码增减 +2 / -2

执行摘要

修复 Ultravox 模型 revision 未传递至次级权重加载

当用户加载 Ultravox 模型并指定 --revision 时,主模型工件使用该 revision,但 Ultravox 的次级权重(audio_tower 和 language_model)仍从默认分支加载,导致版本漂移、权重/配置不匹配或加载失败。PR body 明确指出该问题影响用户体验,且为 PR #42616 的遗留路径。

值得合并,修复了一个版本一致性问题,逻辑简单且明确。可快速审阅。

讨论亮点

主要讨论围绕测试必要性。Reviewer DarkLight1337 认为新测试不必要,作者 weizhoublue 回复“done”并删除了测试文件。最终无额外测试,仅依赖现有集成测试。

实现拆解

  1. 定位问题:UltravoxModel 的 __init__ 中构造 secondary_weights 列表时,DefaultModelLoader.Sourcerevision 参数被硬编码为 None
  2. 修复方式:在 vllm/model_executor/models/ultravox.py 文件中,将两处 revision=None 替换为 revision=vllm_config.model_config.revision(共修改 2 行)。
  3. 测试:最初曾添加一个新测试文件 tests/models/test_ultravox.py,但经 reviewer 讨论后认为测试非必要,已删除该测试文件。最终无测试配套变更。
文件 模块 状态 重要度
vllm/model_executor/models/ultravox.py 模型加载 modified 5.28

关键符号

UltravoxModel.__init__

关键源码片段

vllm/model_executor/models/ultravox.py data-contract

包含修复的唯一点:将次级权重 Source 的 revision 从 None 改为从配置中获取。

# vllm/model_executor/models/ultravox.py
# 修复前:revision=None,导致次级权重从默认分支加载
# 修复后:使用 vllm_config.model_config.revision,确保版本一致性self.secondary_weights = []
if config.audio_model_id is not None:
    self.secondary_weights.append(
        DefaultModelLoader.Source(
            model_or_path=config.audio_model_id,
            # 关键修复:从 None 改为 vllm_config.model_config.revision
            revision=vllm_config.model_config.revision,
            prefix="audio_tower.",
        )
    )
if config.text_model_id is not None:
    self.secondary_weights.append(
        DefaultModelLoader.Source(
            model_or_path=config.text_model_id,
            # 同样修复语言模型次级权重
            revision=vllm_config.model_config.revision,
            prefix="language_model.",
        )
    )

评论区精华

测试必要性 测试

DarkLight1337 评论新增的测试文件不必要,作者回复“done”并删除测试。

结论:测试文件被移除,依赖现有集成测试覆盖。 · 已解决

风险与影响

低风险。修改仅涉及两行参数传递,将 None 改为 vllm_config.model_config.revision,不会改变现有行为(除非用户使用 --revision)。如果未设置 revision,revision 的默认值仍然为 None,因此向后兼容。

影响范围仅限于 Ultravox 模型用户。修复后,使用 --revision 的用户将确保次级权重与主模型版本一致,避免版本漂移导致的加载失败或行为异常。对其他模型无影响。

缺少测试覆盖

关联 Issue

#42616 fix: propagate revision/code_revision pins to all artifact boundaries

完整报告

参与讨论