搬瓦工 VPS 使用 Llama.cpp 部署本地大模型推理教程
Llama.cpp 是目前最流行的本地大语言模型推理引擎,它使用纯 C/C++ 编写,无需 GPU 即可在 CPU 上高效运行各种大语言模型。通过 GGUF 格式的量化模型,即使在搬瓦工 VPS 这样的普通服务器上也能运行 Llama、Qwen、Mistral 等主流开源大模型。本教程将从编译安装到搭建 API 服务进行完整讲解。
一、环境要求
- 操作系统:Ubuntu 20.04 或更高版本。
- 内存:至少 4GB(运行 7B 量化模型),8GB 以上更佳。
- 磁盘:至少 10GB 可用空间存放模型文件。
- 编译工具:GCC/G++ 和 CMake。
模型大小与内存需求的对应关系:7B Q4 量化约需 4GB 内存,13B Q4 约需 8GB,选择方案时请参考 全部方案。
二、安装编译依赖
apt update && apt upgrade -y
apt install build-essential cmake git curl wget -y
三、编译 Llama.cpp
cd /opt
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j$(nproc)
编译完成后,可执行文件位于 build/bin/ 目录中。
3.1 验证编译结果
./build/bin/llama-cli --version
四、下载 GGUF 模型
GGUF 是 Llama.cpp 使用的模型格式,HuggingFace 上有大量预量化的 GGUF 模型。以下载 Qwen2.5 为例:
mkdir -p /opt/models
# 下载 Qwen2.5-1.5B 量化模型(适合内存较小的 VPS)
wget -O /opt/models/qwen2.5-1.5b-instruct-q4_k_m.gguf \
"https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf"
常用的量化级别说明:
- Q2_K:最小体积,质量损失较大,适合极度受限的环境。
- Q4_K_M:推荐选择,体积和质量的最佳平衡。
- Q5_K_M:更高质量,体积稍大。
- Q8_0:接近原始精度,但占用更多内存。
五、命令行交互模式
使用交互模式直接与模型对话:
./build/bin/llama-cli \
-m /opt/models/qwen2.5-1.5b-instruct-q4_k_m.gguf \
-c 2048 \
-t $(nproc) \
--interactive-first \
-p "You are a helpful assistant."
参数说明:
-m:模型文件路径。-c:上下文长度(token 数量)。-t:使用的 CPU 线程数。-p:系统提示词。
六、启动 API 服务器
Llama.cpp 内置了兼容 OpenAI API 格式的服务器,非常方便与各种客户端集成:
./build/bin/llama-server \
-m /opt/models/qwen2.5-1.5b-instruct-q4_k_m.gguf \
--host 0.0.0.0 \
--port 8080 \
-c 2048 \
-t $(nproc) \
--parallel 2
服务启动后,可以使用 curl 测试:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5",
"messages": [
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": "什么是向量数据库?"}
],
"temperature": 0.7,
"max_tokens": 500
}'
七、配置 Systemd 服务
cat > /etc/systemd/system/llama-server.service <<EOF
[Unit]
Description=Llama.cpp API Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/llama.cpp
ExecStart=/opt/llama.cpp/build/bin/llama-server \
-m /opt/models/qwen2.5-1.5b-instruct-q4_k_m.gguf \
--host 0.0.0.0 --port 8080 \
-c 2048 -t 4 --parallel 2
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable llama-server
systemctl start llama-server
八、配合前端界面使用
Llama.cpp 的 API 服务器兼容 OpenAI 格式,可以轻松对接各种前端聊天界面:
- Open WebUI:功能最全面的开源聊天界面。
- LobeChat:界面精美的 AI 对话平台。
- ChatGPT Next Web:轻量级的 ChatGPT 替代界面。
只需将这些前端的 API 地址配置为 http://your-server-ip:8080 即可使用。
九、性能优化
9.1 调整线程数
最佳线程数通常等于 CPU 物理核心数,设置过多反而会降低性能:
# 查看 CPU 核心数
nproc
lscpu | grep "Core(s) per socket"
9.2 添加 swap 空间
对于内存紧张的情况,可以添加 swap 作为缓冲:
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
9.3 使用 mmap 内存映射
Llama.cpp 默认使用 mmap 加载模型,这允许操作系统按需将模型文件映射到内存,而不是一次性加载。对于内存不足的场景非常有帮助,但会增加磁盘 I/O。
十、常见问题
模型加载失败
确认模型文件是 GGUF 格式(不是旧的 GGML 格式),确认文件下载完整没有损坏:
ls -lh /opt/models/
md5sum /opt/models/qwen2.5-1.5b-instruct-q4_k_m.gguf
推理速度很慢
在纯 CPU 环境下,7B 模型的推理速度一般在每秒 5-15 个 token。如果明显低于此水平,检查 CPU 利用率和内存是否有交换活动。
总结
Llama.cpp 让在 CPU 服务器上运行大语言模型成为现实。配合量化技术,即使是搬瓦工的入门级 VPS 也能运行小型模型进行实验。如果需要更高的推理效率,可以参考 vLLM 高速推理 方案。选购搬瓦工 VPS 请查看 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,购买链接:bwh81.net。