解决离线运行vLLM 启动报dns.google错

文章讲述了在vLLM0.3.3版本离线运行时遇到的socket.gaierror错误,主要原因是代码尝试通过DNS解析谷歌域名失败。解决方法是将代码中的DNS服务器地址改为国内的公共IP(如114.114.114.114),并预计在0.3.4版本中修复此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

vLLM版本0.3.3离线运行时,报类似下面形式的错误:

File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/llm.py", line 109, in init
self.llm_engine = LLMEngine.from_engine_args(engine_args)
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/llm_engine.py", line 391, in from_engine_args
engine = cls(*engine_configs,
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/llm_engine.py", line 128, in init
self._init_workers()
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/llm_engine.py", line 167, in _init_workers
get_ip(), get_open_port())
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 181, in get_ip
s.connect(("dns.google", 80))
socket.gaierror: [Errno -2] Name or service not known

原因

原因是这一段代码:

def get_ip() -> str:
    # try ipv4
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(("dns.google", 80))  # Doesn't need to be reachable
        return s.getsockname()[0]
    except OSError:
        # try ipv6
        s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
        s.connect(("dns.google", 80))
        return s.getsockname()[0]

这段代码的功能是获取本机ip地址。

解决办法

根据提示修改“/usr/local/lib/python3.10/dist-packages/vllm/utils.py”,注意不同环境下vLLM安装路径不同。

s.connect(("dns.google", 80))  # Doesn't need to be reachable

改成:
 

s.connect(("114.114.114.114", 80)) # Doesn't need to be reachable

这个bug会在vLLM 0.3.4修复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值