vLLM 更新后启动连接 192.18.0.1 失败问题
前情
不小心拉取了 vLLM 最新的代码,导致启动失败。
报错核心如下:
(EngineCore_DP0 pid=32505) INFO 01-04 10:09:33 [parallel_state.py:1203] world_size=1 rank=0 local_rank=0 distributed_init_method=tcp://192.18.0.1:50976 backend=gloo
导致一直连接不上,无法启动。
原因
192.18.0.1 是 docker 用来和 mac 端进行通信的 ip 地址。
我本地开启 utun 的虚拟网卡代理。
vLLM 应该是出于什么原因默认选择了 192.18.0.1。
解决办法就是将 HOST 改为 127.0.0.1
解决
vllm-metal 是 vLLM 的一个项目,适用于 Apple Silicon 的 vLLM 硬件插件。
source ~/.venv-vllm-metal/bin/activate
export PYTORCH_ENABLE_MPS_FALLBACK=1
export VLLM_HOST_IP=127.0.0.1
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export socks_proxy=socks://127.0.0.1:7890
vllm serve ~/.cache/modelscope/hub/models/Qwen/Qwen3-0___6B \
--served-model-name qwen3-0.6b \
--reasoning-parser deepseek_r1 \
--gpu-memory-utilization 0.8 \
--port 8000 \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--max-num-seqs 4 \
--max-model-len 2048
启动报错 clang++ error
AI 给出的解决办法:
方案一可以跑,但是请求会报错,所以还是换个 python 目录创建 venv,然后重新安装依赖。
原因已经明确:uv 把 Python 装在 ~/Library/Application Support/uv/python/,路径里的空格 Application Support 导致传给 clang 的 -L 参数被拆成两个,引发错误。 可以用下面几种方式解决:
────────────────────────────────────────
方案 1:禁用 torch 编译(最快)
在 vllm 启动时加上 –enforce-eager,关闭 torch.compile/torch inductor,就不会再调用 clang:
vllm serve ~/.cache/modelscope/hub/models/Qwen/Qwen3-0___6B \
--served-model-name qwen3-0.6b \
--reasoning-parser deepseek_r1 \
--gpu-memory-utilization 0.8 \
--port 8888 \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--max-num-seqs 4 \
--max-model-len 2048 \
--enforce-eager
代价:推理性能可能会略降,但能直接跑起来。
────────────────────────────────────────
方案 2:把 uv 的 Python 装到无空格路径(长期方案)
让 uv 把 Python 装到没有空格的目录,然后基于新 Python 重建虚拟环境。
- 设置环境变量(例如写入 ~/.zshrc):
export UV_PYTHON_INSTALL_DIR="$HOME/.local/share/uv/python"
- 重新安装 Python(如需要):
uv python install 3.12
- 在项目里重新创建 venv 并安装依赖:
cd ~/workspace/github/vllm
rm -rf .venv
uv venv --python 3.12
source .venv/bin/activate
uv pip install -r requirements/cpu.txt
VLLM_USE_PRECOMPILED=1 uv pip install -e .
────────────────────────────────────────
方案 3:用系统 Python 建 venv
若系统已有 Python,可让 uv 用系统 Python 创建 venv,避免使用 uv 管理的 Python 路径:
cd ~/workspace/github/vllm
rm -rf .venv
uv venv --python $(which python3)
source .venv/bin/activate
uv pip install -r requirements/cpu.txt
uv pip install -e .
────────────────────────────────────────
建议先用 方案 1 确认能正常运行,若需要长期使用并追求性能,再按 方案 2 迁移到无空格的 Python 路径。