Prhub

#6728 [rollout] fix: Adjust cuda graph capture sizes config logic for vLLM >= 0.11.1 compatibility

原始 PR 作者 ConanZH429 合并时间 2026-06-15 11:01 文件变更 1 提交数 1 评论 2 代码增减 +3 / -1

执行摘要

修复 vLLM 0.11.1+ CUDA graph 配置兼容性

vLLM 0.11.1 移除了 CLI 参数 cuda_graph_sizes,改为在 compilation_config 中配置 cudagraph_capture_sizes。直接传递旧参数会引发运行时错误。PR body 引用了 vLLM 文档作为依据,并说明需要保持向后兼容。

值得合并,修复及时且无风险。建议后续在版本升级时增加针对 vLLM 配置兼容性的测试。设计思路(将版本兼容逻辑集中在一处条件判断)值得借鉴。

讨论亮点

Reviewer Luosuu 快速批准(LGTM)。ConanZH429 指出 6 个 CI 失败均与本次改动无关(Ray 连接失败、OOM 等 flaky 问题),要求重跑或合并。无其他设计争论。

实现拆解

  1. 版本判断前置:引入 _VLLM_VERSION(此前已有定义)与 version.parse 比较。
  2. 旧版本路径:当 _VLLM_VERSION <= 0.11.0 时,将 self.config.cudagraph_capture_sizes 赋值给 engine_kwargs["cuda_graph_sizes"](原逻辑)。
  3. 新版本路径:在 compilation_config 组装之后、json.dumps 之前,若 _VLLM_VERSION > 0.11.0 且存在配置,则将 self.config.cudagraph_capture_sizes 写入 compilation_config["cudagraph_capture_sizes"]
  4. 变更仅涉及一个文件(verl/workers/rollout/vllm_rollout/vllm_async_server.py),3 行新增、1 行修改,无测试配套改动。
文件 模块 状态 重要度
verl/workers/rollout/vllm_rollout/vllm_async_server.py rollout modified 5.07

关键符号

launch_server

关键源码片段

verl/workers/rollout/vllm_rollout/vllm_async_server.py core-logic

核心变更文件,修改了 CUDA graph 配置的分支逻辑以兼容 vLLM 0.11.1+

async def launch_server(self, master_address: str = None, master_port: int = None, dp_rpc_port: int = None):
    # ... ( 省略前置逻辑 )
    engine_kwargs = {key: val for key, val in engine_kwargs.items() if val is not None}
    # ...
    # vLLM <= 0.11.0 使用顶层参数传递
    if self.config.cudagraph_capture_sizes and _VLLM_VERSION <= version.parse("0.11.0"):
        engine_kwargs["cuda_graph_sizes"] = self.config.cudagraph_capture_sizes
​
    self._preprocess_engine_kwargs(engine_kwargs)
    # ...
    compilation_config = engine_kwargs.pop("compilation_config", None) or {}
    # ... 省略 compilation_config 初始化与 DCP 降级逻辑
    # vLLM > 0.11.0 配置迁移到 compilation_config 内部
    if self.config.cudagraph_capture_sizes and _VLLM_VERSION > version.parse("0.11.0"):
        compilation_config["cudagraph_capture_sizes"] = self.config.cudagraph_capture_sizes
​
    compilation_config = json.dumps(compilation_config)
    # ... 后续组装 args 并传给 vLLM 服务器

评论区精华

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

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

风险与影响

风险低。改动范围极小,版本判断基于已有 _VLLM_VERSION 变量,逻辑清晰。但未增加单元测试,未来 vLLM 进一步变更配置结构时可能再次不兼容。依赖 _VLLM_VERSION 定义的准确性。

直接影响所有使用 vLLM rollout 的 verl 用户。对 vLLM <= 0.11.0 用户无行为变化;对 vLLM >= 0.11.1 用户修复了 CUDA graph 配置失败导致的崩溃。影响范围局限在服务器启动阶段的配置逻辑。

缺少测试覆盖 依赖 vLLM 版本号

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论