Prhub

#46975 [ModelRunner V2] Simplify recent UnlimitedOCR-related changes

原始 PR 作者 njhill 合并时间 2026-06-30 00:56 文件变更 5 提交数 1 评论 2 代码增减 +11 / -21

执行摘要

简化 R-SWA 批量数据传递方式

PR#46564 为支持 R-SWA(Reciprocal Sliding Window Attention)引入了一些变更,但存在冗余的 GPU 缓冲区和不够直观的字段命名。本次简化旨在降低维护成本,使数据流更清晰。

值得快速审阅和合并,属于代码质量提升的好实践。开发者可以学习到如何消除冗余缓冲区、简化数据流。

讨论亮点

社区成员 benchislett 曾担心 InputBatch 缺少 rswa_prefix_lens 属性,但很快发现是本地缓存问题,无需担忧。评审者 Isotr0pyWoosukKwon 均直接批准,无实质讨论。

实现拆解

  1. 移除冗余 GPU 缓冲区:在 vllm/v1/worker/gpu/model_runner.py 中,删除了 self.rswa_prefix_lens_buffer 的创建和初始化逻辑(之前为 R-SWA 分配了一个持久的 GPU 张量),以及每次 prepare_inputs 中向该缓冲区拷贝数据的逻辑。
  2. 简化数据准备:直接在 prepare_inputs 中,当 self.model_config.rswa_window is not None 时,从 req_states.prompt_len.gpuidx_mapping 切片生成 prompt_lens,不再经过中间缓冲区。
  3. 重命名字段:在 vllm/v1/worker/gpu/input_batch.py 中,将 InputBatch 的字段 rswa_prefix_lens 重命名为 prompt_lens,注释也更改为说明其仅在 R-SWA 时使用。同时调整了 make_dummy 方法的初始化。
  4. 更新所有消费者:在 default.pyencoder_decoder.pymamba_hybrid.py 三个 ModelStateprepare_attn 方法中,将 input_batch.rswa_prefix_lens 的引用改为 input_batch.prompt_lens,并保持传入 build_attn_metadata 的关键字参数名不变(仍为 rswa_prefix_lens),因此对下游无影响。
文件 模块 状态 重要度
vllm/v1/worker/gpu/model_runner.py 模型运行器 modified 6.36
vllm/v1/worker/gpu/input_batch.py 输入批处理 modified 5.13
vllm/v1/worker/gpu/model_states/default.py 模型状态 modified 4.7

关键源码片段

vllm/v1/worker/gpu/model_runner.py core-logic

核心变更文件:移除了 `rswa_prefix_lens_buffer` 创建和填充逻辑,简化了 `prepare_inputs` 中 `prompt_lens` 的生成方式。

# ModelRunner 的 __init__ 中不再分配 rswa_prefix_lens_buffer。
# 在 prepare_inputs 中,直接使用 req_states.prompt_len.gpu 切片获得 prompt_lens:
prompt_lens = None
if self.model_config.rswa_window is not None:
    # prompt_lens 仅在 R-SWA 场景下使用。
    prompt_lens = self.req_states.prompt_len.gpu[idx_mapping]

评论区精华

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

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

风险与影响

风险极低。更改仅限于内部数据传递方式,对外部行为无影响。三个 ModelState 的调用点均正确更新,且 build_attn_metadata 的接口签名未变。未涉及测试变更,但因逻辑等价且已在 main 分支上合并,回归风险小。

影响范围仅限于 V1 引擎的 ModelRunnerInputBatch 内部,对用户无感知。未来若添加其他需要 prompt_lens 的特性,可直接复用此字段。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论