# PR #42830 完整报告

- 仓库：`vllm-project/vllm`
- 标题：Fix: Propagate pinned model revisions into Ultravox secondary weight loading
- 合并时间：2026-05-17 01:02
- 原文链接：http://prhub.com.cn/vllm-project/vllm/pull/42830

---

# 执行摘要

- 一句话：修复 Ultravox 模型 revision 未传递至次级权重加载
- 推荐动作：值得合并，修复了一个版本一致性问题，逻辑简单且明确。可快速审阅。

# 功能与动机

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

# 实现拆解

1. **定位问题**：UltravoxModel 的 `__init__` 中构造 `secondary_weights` 列表时，`DefaultModelLoader.Source` 的 `revision` 参数被硬编码为 `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`（模块 模型加载；类别 source；类型 data-contract；符号 UltravoxModel.__init__）: 包含修复的唯一点：将次级权重 Source 的 revision 从 None 改为从配置中获取。

关键符号：UltravoxModel.__init__

## 关键源码片段

### `vllm/model_executor/models/ultravox.py`

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

```python
# 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.",
        )
    )

```

# 评论区精华

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

- 测试必要性 (testing): 测试文件被移除，依赖现有集成测试覆盖。

# 风险与影响

- 风险：低风险。修改仅涉及两行参数传递，将 `None` 改为 `vllm_config.model_config.revision`，不会改变现有行为（除非用户使用 `--revision`）。如果未设置 revision，`revision` 的默认值仍然为 `None`，因此向后兼容。
- 影响：影响范围仅限于 Ultravox 模型用户。修复后，使用 `--revision` 的用户将确保次级权重与主模型版本一致，避免版本漂移导致的加载失败或行为异常。对其他模型无影响。
- 风险标记：缺少测试覆盖

# 关联脉络

- PR #42616 fix: propagate revision/code_revision pins to all artifact boundaries: 该 PR 修复了 6 处 revision 传播丢失问题，本 PR 是其中遗留的 Ultravox 次级权重路径，是同一问题系列的延续。