前情

不小心拉取了 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 重建虚拟环境。

  1. 设置环境变量(例如写入 ~/.zshrc):

export UV_PYTHON_INSTALL_DIR="$HOME/.local/share/uv/python"

  1. 重新安装 Python(如需要):

uv python install 3.12

  1. 在项目里重新创建 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 路径。