执行摘要
- 一句话:增加 DP Coordinator 启动超时至 120s
- 推荐动作:值得合入并部署。建议后续考虑将超时时间设置为可配置参数,以应对不同环境需求。
功能与动机
用户 wzhao18 在慢速网络文件系统环境下持续遇到 DPCoordinator 启动超时错误(RuntimeError: DP Coordinator process failed to report ZMQ addresses during startup.),因此提议增加超时时间到 120s,并在错误信息中包含 timeout 值以帮助定位问题。
实现拆解
- 在
vllm/v1/engine/coordinator.py 的 _wait_for_zmq_addrs 方法中,将硬编码的超时值从 30 改为 120,并赋值给变量 timeout 用于复用。
- 更新超时错误消息,增加
f"within timeout={timeout} seconds during startup." 以暴露超时时间。
关键文件:
vllm/v1/engine/coordinator.py(模块 调度器;类别 source;类型 configuration;符号 _wait_for_zmq_addrs): 修改了 DP Coordinator 启动超时时间及相关错误信息,是 PR 中唯一变更的文件。
关键符号:_wait_for_zmq_addrs
关键源码片段
vllm/v1/engine/coordinator.py
修改了 DP Coordinator 启动超时时间及相关错误信息,是 PR 中唯一变更的文件。
# vllm/v1/engine/coordinator.py
class DPCoordinator:
"""..."""
def _wait_for_zmq_addrs(self, zmq_addr_pipe) -> tuple[str, str, str]:
try:
timeout = 120 # 从 30s 增加到 120s, 应对慢速网络文件系统
ready = multiprocessing.connection.wait(
[zmq_addr_pipe, self.proc.sentinel], timeout=timeout
)
if not ready:
raise RuntimeError(
"DP Coordinator process failed to report ZMQ addresses "
f"within timeout={timeout} seconds during startup." # 添加超时值到错误信息
)
try:
return zmq_addr_pipe.recv()
except EOFError:
raise RuntimeError(
"DP Coordinator process failed during startup."
) from None
finally:
zmq_addr_pipe.close()
评论区精华
无实质讨论。机器人评论均为自动生成且无反馈;njhill 直接审批通过。
风险与影响
- 风险:风险极低。仅修改了一个超时常量,不影响功能逻辑。可能的影响是:在真正启动失败时,用户需要等待更长时间(120s)才能得到超时错误。
- 影响:对用户:在慢速网络环境下启动 DP 模式时,超时失败概率降低。对系统:启动延迟从 30s 增加到 120s,但仅影响超时场景。无兼容性问题。
- 风险标记:低风险, 配置调整
关联脉络
- PR #43768 [BugFix] Fix hard-coded timeout for multi-API-server startup: 也是修复超时问题,表明同类问题在 vLLM 中多个地方存在硬编码超时,后续可能统一优化。
参与讨论