Mac使用llama.cpp

使用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 内存占用过高导致系统卡顿。

相关推荐
星辰即远方8 小时前
UITableView操作拓展
macos·ios·xcode
刘某某.9 小时前
macOS 终端美化完整教程(Ghostty + Zsh + Starship Catppuccin Powerline)
macos
咦呀10 小时前
macOS 上 SVN 报错 "SQLite 编译为 X.XX,运行时为 X.XX" 的完整解决方案
macos
秋雨梧桐叶落莳13 小时前
iOS——Masonry约束内容整理
开发语言·学习·macos·ios·objective-c·cocoa
pop_xiaoli13 小时前
【iOS】类和分类的加载
macos·ios·objective-c·cocoa
zhangfeng113313 小时前
No space left on device (28) llamafactory微调训练的时候 报错,需要调节 dataloader_num_workers
人工智能·语言模型·llama
国科安芯13 小时前
空间辐射环境下抗辐射 MCU 可靠性机理及航空安全应用研究综述
单片机·嵌入式硬件·macos·无人机·cocos2d·risc-v
一个人旅程~14 小时前
ARM版的windows(macbook虚拟机使用)在国内外技术平台有哪些版本可以选择?
windows·经验分享·macos·电脑
qq_3273950314 小时前
MacOS安装openEMS
macos·openems