Prhub

#47082 [Misc] Preserve cross-encoder pooling extra kwargs

原始 PR 作者 taneem-ibrahim 合并时间 2026-07-04 20:14 文件变更 1 提交数 3 评论 0 代码增减 +4 / -1

执行摘要

修复跨编码器打分时 extra_kwargs 丢失问题

Cross-Encoder 打分预处理过程中,token_type_ids 的压缩结果以 compressed_token_type_ids 键写入 PoolingParams.extra_kwargs,但原有赋值语句 params.extra_kwargs = {"compressed_token_type_ids": compressed} 完全覆盖了之前用户通过 PoolingParams 传入的 cache_saltmm_processor_kwargs 等关键配置,导致功能异常。

值得合入,问题明确、修复干净。可作为小型 bugfix 的参考范例:优先保持与现有配置的兼容性,避免意外覆盖用户侧参数。

讨论亮点

该 PR 没有触发 review 讨论,唯一的人类审核者 yewentao256 直接批准。

实现拆解

  1. 定位问题文件:vllm/entrypoints/pooling/scoring/io_processor.py 中的 _pre_process 方法。
  2. 修改字典赋值逻辑:将原来的直接替换改为先解包已有 extra_kwargs(确保为 dict),再合并新的 compressed_token_type_ids 键。变更仅涉及第 466 行,从 params.extra_kwargs = {"compressed_token_type_ids": compressed} 改为 params.extra_kwargs = {**(params.extra_kwargs or {}), "compressed_token_type_ids": compressed}
  3. 该改动极小但精确修复了因覆盖导致的功能丢失问题。
文件 模块 状态 重要度
vllm/entrypoints/pooling/scoring/io_processor.py 入口层 modified 5.13

关键符号

CrossEncoderIOProcessor._pre_process

关键源码片段

vllm/entrypoints/pooling/scoring/io_processor.py core-logic

核心修改文件,修复了 `_pre_process` 方法中 `extra_kwargs` 被覆盖的问题。

# vllm/entrypoints/pooling/scoring/io_processor.py 第 463-469 行
if token_type_ids := engine_prompt.pop("token_type_ids", None):
    params = pooling_params.clone()
    compressed = compress_token_type_ids(token_type_ids)
    # 修正前:直接赋值覆盖了用户原有的 extra_kwargs
    # params.extra_kwargs = {"compressed_token_type_ids": compressed}
    # 修正后:解包已有字典,保留用户设置的 cache_salt、mm_processor_kwargs 等
    params.extra_kwargs = {
        **(params.extra_kwargs or {}),
        "compressed_token_type_ids": compressed,
    }
    pooling_params_list.append(params)
else:
    pooling_params_list.append(pooling_params)

评论区精华

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

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

风险与影响

回归风险低:仅修改一行赋值语句,确保字典合并而非覆盖;不存在性能或安全影响。但需确认 params.extra_kwargs 被 clone 后是否为 None(代码中已有 or {} 防护)。

直接影响跨编码器(Cross-Encoder)打分功能:用户传入的 PoolingParams.extra_kwargs 参数(如 cache_saltmm_processor_kwargs)现在能被正确保留,修复了此前缓存盐值丢失、多模态处理器参数丢失等问题。影响范围限于 vllm.entrypoints.pooling.scoring 模块。

变更范围小,风险低

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论