使用llama.cpp
powershell
#依赖
pip install sse_starlette fastapi uvicorn starlette_context pydantic-settings
#下载正确的模型(llama.cpp 只能用 GGUF)
huggingface-cli download Qwen/Qwen2-1.5B-Instruct-GGUF qwen2-1_5b-instruct-q4_0.gguf --local-dir .
#启动
python -m llama_cpp.server \
--model qwen2-1_5b-instruct-q4_0.gguf \
--host 0.0.0.0 \
--port 8000
#终端 curl 测试(最简单,推荐)
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen",
"messages": [
{"role": "user", "content": "你好,简单介绍下自己"}
],
"temperature": 0.7
}'
尝试Mac编译和启动vllm【失败】
第一步:创建 Conda 环境
vLLM 对 Python 版本有要求,建议使用 Python 3.10 或 3.12(避免使用最新的 3.13,可能会有兼容问题)。
打开终端,执行:
powershell
# 1. 创建环境 (命名为 vllm_mac,Python 版本选 3.10)
conda create -n vllm_mac python=3.10 -y
# 2. 激活环境
conda activate vllm_mac
第二步:安装依赖与编译
在 Mac 上安装 vLLM 必须从源码编译,且需要安装 cmake 和 ninja 等编译工具。
powershell
# 1. 安装编译工具
conda install -c conda-forge cmake ninja -y
# 2. 安装 PyTorch (CPU 版本即可,macOS 不支持 CUDA)
pip install torch torchvision torchaudio
# 3. 设置环境变量:强制指定为 CPU 模式
# 这一步非常关键,否则安装程序会寻找不存在的 CUDA
export VLLM_TARGET_DEVICE=cpu
export CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64"
# 4. 安装 vLLM (从源码编译)
# 注意:M5 Pro 性能很强,但编译过程仍需几分钟,请耐心等待
pip install vllm --no-cache-dir
# 查看版本
% vllm --version
0.6.6.post1
% python -c "import vllm; print('vLLM 版本:', vllm.__version__)"
vLLM 版本: 0.6.6.post1
⚠️ 常见问题:
如果报错提示 RuntimeError: Cannot find CUDA_HOME,说明环境变量没生效,请确保执行了第 3 步的 export 命令后再运行 pip install。
第三步:启动服务【一直失败,搞不定】
下载模型
powershell
#安装 SDK:在你的 Conda 环境中安装 ModelScope 库:
conda activate vllm_mac
pip install modelscope
使用 Python 脚本下载:
创建一个 download_model.py 文件,运行以下代码。它会自动将模型下载到当前目录下的文件夹中。
from modelscope.hub.snapshot_download import snapshot_download
# 下载模型到本地,目录名为 qwen2.5-1.5b-instruct
model_dir = snapshot_download('qwen/Qwen2.5-1.5B-Instruct', cache_dir='./')
print(f"模型已下载至: {model_dir}")
启动服务
编译安装完成后,你可以启动 API 服务。由于是 CPU 模式,建议加载较小的模型(如 Qwen2.5-1.5B 或 3B),否则推理速度会很慢。
powershell
# 假设你使用 Qwen2.5-1.5B-Instruct 模型
vllm serve qwen/Qwen2.5-1.5B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--dtype float16 \
--max-model-len 2048
# 报错 RuntimeError: Failed to infer device type 非常典型。它说明 vLLM 在 Mac 上试图自动检测硬件时"迷路"了:它既没找到 NVIDIA 显卡(CUDA),也没能正确识别出应该回退到 CPU 模式。
#在 Mac 上运行 vLLM(CPU 模式),必须显式地告诉它使用 CPU,加上 --device cpu
#并且为了稳定,建议关闭多进程引擎,加上 --disable-frontend-multiprocessing 参数
vllm serve qwen/Qwen2.5-1.5B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--dtype float16 \
--max-model-len 2048 \
--device cpu \
--disable-frontend-multiprocessing
参数说明:
--dtype float16:Mac 对 FP16 支持较好,能节省内存。
--max-model-len 2048:限制上下文长度,防止 CPU 内存占用过高导致系统卡顿。