下面是专门针对 macOS Apple Silicon(M1/M2/M3) 的 vLLM 部署 + 运行的最简可执行方案。Apple Silicon 上体验很好,因为 vLLM 会调用 Metal + MLX,性能比 Intel 强得多。
1. 必备环境确认
首先确认你的系统支持 Metal:
system_profiler SPDisplaysDataType | grep Metal
一般都会显示 “Supported”。
Python 版本建议 3.10–3.11。
2. 创建 Python 虚拟环境(推荐)
python3 -m venv vllm_env
source vllm_env/bin/activate
3. 安装依赖(Apple Silicon 专用)
Apple Silicon 要使用 MLX 后端,让 vLLM 在芯片上运行得更快。
Step 3.1:安装 mlx(苹果官方框架)
pip install mlx
Step 3.2:安装 vLLM(mac 版)
pip install vllm
确认安装成功:
python - <<EOF
import mlx, vllm
print("mlx OK, vLLM OK")
EOF
4. 下载模型(HF 格式)
vLLM 不支持 GGUF,必须使用 HuggingFace 格式。
例如下载 Qwen2.5 7B:
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir ./models/qwen25-7b
也可以用 Llama 3:
huggingface-cli download meta-llama/Llama-3.1-8B-Instruct --local-dir ./models/llama3-8b
Apple Silicon 运行 7B/8B 模型没问题。
5. 使用 vLLM 启动 API 服务(类似 Ollama)
直接运行:
python -m vllm.entrypoints.openai.api_server \
--model ./models/qwen25-7b \
--port 8000 \
--max-model-len 4096
启动后你得到:
- Chat 接口:http://localhost:8000/v1/chat/completions
- Completions:http://localhost:8000/v1/completions
- 完全兼容 OpenAI API(与 Ollama 风格一致)
6. 本地测试
curl
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "./models/qwen25-7b",
"messages": [{"role": "user", "content": "你好,介绍一下你自己"}]
}'
Python 测试(OpenAI SDK)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
resp = client.chat.completions.create(
model="./models/qwen25-7b",
messages=[{"role": "user", "content": "介绍一下 vLLM"}],
)
print(resp.choices[0].message["content"])
7. 性能参数(Apple Silicon 推荐配置)
启动参数可以优化 Metal 加速:
python -m vllm.entrypoints.openai.api_server \
--model ./models/qwen25-7b \
--max-model-len 2048 \
--tensor-parallel-size 1 \
--max-num-batched-tokens 4096 \
--swap-space 4
推荐:
max-model-len不要太大(2048–4096)- 不要加载超过 8B 的模型
- 一次推理不要过长的输出
这样基本不会触发 macOS 内存爆炸。
完整操作
下载:
huggingface-cli download Qwen/Qwen3-VL-2B-Instruct --local-dir ./models/Qwen3-VL-2B-Instruct
运行:
python -m vllm.entrypoints.openai.api_server \
--model ./models/Qwen3-VL-2B-Instruct \
--dtype float16 \
--max-model-len 1024 \
--port 8000
访问:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "./models/Qwen3-VL-2B-Instruct",
"messages": [{"role": "user", "content": "你好,介绍一下你自己"}]
}'
