macOS Silicon部署vLLM 部署

半兽人 发表于: 2025-12-30   最后更新时间: 2025-12-30 16:21:25  
{{totalSubscript}} 订阅, 138 游览

下面是专门针对 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

启动后你得到:

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": "你好,介绍一下你自己"}]
}'
更新于 2025-12-30
在线,36分钟前登录

查看vLLM更多相关的文章或提一个关于vLLM的问题,也可以与我们一起分享文章