Prhub

#42819 [BugFix] support PP for Cohere vision model

原始 PR 作者 czhu-cohere 合并时间 2026-05-19 02:12 文件变更 1 提交数 1 评论 1 代码增减 +4 / -0

执行摘要

支持 Cohere 视觉模型 PP

PR body 表明目的是支持 pipeline parallelism(PP),并通过 vllm serve <model> --pipeline-parallel-size 2 测试验证模型可以成功启动。

建议合并,但需尽快跟进修复 forward 方法的参数透传问题,否则此 PR 仅解决启动阶段,推理阶段仍可能崩溃。建议参考 reviewer 建议添加 **kwargs 传播。

讨论亮点

Review 中 gemini-code-assist[bot] 指出,虽然添加 make_empty_intermediate_tensors 对 PP 支持必要,但 forward 方法(第 449-454 行)缺少将 kv_cachesattn_metadata 等关键参数通过 **kwargs 传播给语言模型,可能导致运行时失败。然而 reviewer DarkLight1337 仍批准了 PR,表明当前改动可能仅用于解决启动阶段问题,运行时传播参数可能已在其他路径处理或后续修复。

实现拆解

  1. 新增属性委托:在 Cohere2Vision.__init__ 中,于初始化 language_model 后增加一行:self.make_empty_intermediate_tensors = self.language_model.make_empty_intermediate_tensors,将语言模型的同名方法暴露给视觉模型顶层。
  2. 前置条件language_modelinit_vllm_registered_model 创建的标准模型实例,已具备 make_empty_intermediate_tensors 方法;该委托使得 PP 调度层能在视觉模型上调用此方法以获取空中间张量。
  3. 无其他变更:未修改 forward 方法或模型配置文件,改动最小化。
文件 模块 状态 重要度
vllm/model_executor/models/cohere2_vision.py 模型加载 modified 5.68

关键符号

__init__

关键源码片段

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

核心模型文件,添加了 PP 支持必需的方法委托。

# vllm/model_executor/models/cohere2_vision.py
class Cohere2VisionForConditionalGeneration(nn.Module):
    def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
        # ... 省略初始化和子模型创建 ...
        with self._mark_language_model(vllm_config):
            self.language_model = init_vllm_registered_model(
                vllm_config=vllm_config,
                hf_config=config.text_config,
                prefix=maybe_prefix(prefix, "language_model"),
                architectures=config.text_config.architectures,
            )
​
        # 新增 : 将语言模型的 make_empty_intermediate_tensors 方法
        # 暴露给顶层模型,使得 PP 调度器可以正确获取空中间张量
        self.make_empty_intermediate_tensors = (
            self.language_model.make_empty_intermediate_tensors
        )

评论区精华

forward 方法缺少 kv_caches 和 attn_metadata 传播 正确性

reviewer 指出 Cohere2Vision 的 forward 方法未将 **kwargs(内含 kv_caches、attn_metadata 等)传递给语言模型,可能导致运行时失败。

结论:未解决,PR 仍被批准,可能该参数传递在后续逻辑中已有处理或属于已知限制。 · unresolved

风险与影响

主要风险forward 方法未传递 **kwargs 给语言模型,若 kv_cachesattn_metadata 在 PP 模式下通过 **kwargs 传入,则实际推理时会因缺少这些参数而崩溃。当前 PR 仅修复启动阶段的 PP 分解,但运行时兼容性未完全验证。

正面:使 Cohere2Vision 模型在 PP 模式下能正常启动(--pipeline-parallel-size 2),修复之前启动崩溃的问题。负面:若 forward 确实需要透传 **kwargs,则后续推理仍可能出错;影响范围限于 Cohere 视觉模型的多卡部署场景。

缺少测试覆盖 运行时参数传递可能不完整

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论