AI 模型本地部署对比 2026 | Ollama vs vLLM vs llama.cpp

🏠 数据不出门,隐私有保障。 随着 AI 模型越来越强大,本地部署成为越来越多开发者和企业的选择。但面对 Ollama、vLLM、llama.cpp 等众多框架,该如何选择?本文从安装难度、推理性能、硬件需求、易用性等维度全面对比,帮你找到最适合自己的方案。
本文将带你系统掌握:
- ✅ 本地部署的价值与适用场景
- ✅ 6 大主流框架全面对比
- ✅ 各框架安装与基本使用
- ✅ 性能基准测试对比
- ✅ 硬件需求与配置建议
- ✅ 不同场景的最佳选择
- ✅ GPU 加速配置
- ✅ 生产环境部署建议
一、为什么本地部署
1.1 本地部署的优势
| 优势 | 说明 |
|---|---|
| 数据隐私 | 数据不出本地,无泄露风险 |
| 无 API 限制 | 不受速率限制和配额约束 |
| 低延迟 | 本地推理,无网络延迟 |
| 离线可用 | 无需网络连接 |
| 成本可控 | 一次性硬件投入,无按量计费 |
| 可定制 | 可微调模型、自定义系统提示 |
1.2 适用场景
- 处理敏感数据(医疗、金融、法律)
- 内部知识库问答
- 代码辅助(本地 Code Assistant)
- 离线环境使用
- 大批量推理(成本更优)
- 开发和测试
1.3 硬件基础要求
| 模型规模 | 最低显存 | 推荐显存 | 推荐硬件 |
|---|---|---|---|
| 7B | 4GB | 8GB | RTX 4060 / M2 8GB |
| 13B | 8GB | 16GB | RTX 4070 / M2 16GB |
| 34B | 16GB | 24GB | RTX 4090 / M3 36GB |
| 70B | 40GB | 80GB | A100 / 2x RTX 4090 |
💡 也可以用 CPU 推理,但速度会慢 5-20 倍。
二、框架总览
2.1 六大框架对比
| 框架 | 类型 | 易用性 | 性能 | 适用场景 |
|---|---|---|---|---|
| Ollama | 一键部署 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 个人开发、快速体验 |
| vLLM | 高性能推理 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 生产环境、高并发 |
| llama.cpp | 底层引擎 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 极致性能、嵌入式 |
| LM Studio | GUI 应用 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 非技术用户、可视化 |
| KoboldCpp | 轻量推理 | ⭐⭐⭐⭐ | ⭐⭐⭐ | 写作辅助、低配机器 |
| LocalAI | API 兼容 | ⭐⭐⭐ | ⭐⭐⭐⭐ | 替代 OpenAI API |
三、Ollama
3.1 安装
macOS:
brew install ollamaLinux:
curl -fsSL https://ollama.com/install.sh | shDocker:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama3.2 基本使用
# 启动服务
ollama serve
# 拉取模型
ollama pull llama3.1:8b
ollama pull qwen2.5:7b
ollama pull deepseek-r1:7b
ollama pull gemma2:9b
# 运行模型
ollama run llama3.1:8b
# 查看已安装模型
ollama list
# 删除模型
ollama rm llama3.1:8b3.3 API 调用
# 生成
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1:8b",
"prompt": "什么是 AI Agent?"
}'
# 对话
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1:8b",
"messages": [
{"role": "user", "content": "你好"}
]
}'3.4 Python 集成
from langchain_ollama import ChatOllama
llm = ChatOllama(model="llama3.1:8b")
response = llm.invoke("什么是 AI Agent?")
print(response.content)3.5 优缺点
| 优点 | 缺点 |
|---|---|
| 一键安装,极简使用 | 并发能力有限 |
| 丰富的模型库 | 不支持分布式推理 |
| 兼容 OpenAI API | 自定义程度较低 |
| 跨平台支持 | 生产级功能不足 |
四、vLLM
4.1 安装
pip install vllm4.2 启动服务
# 启动 OpenAI 兼容 API
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.94.3 API 调用
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
messages=[{"role": "user", "content": "什么是 AI Agent?"}]
)
print(response.choices[0].message.content)4.4 核心特性
| 特性 | 说明 |
|---|---|
| PagedAttention | 显存分页管理,减少浪费 |
| Continuous Batching | 连续批处理,提升吞吐 |
| 投机解码 | 小模型辅助大模型加速 |
| 张量并行 | 多 GPU 并行推理 |
| 流式输出 | 支持流式生成 |
4.5 优缺点
| 优点 | 缺点 |
|---|---|
| 极高吞吐量 | 安装配置较复杂 |
| 生产级可靠性 | 需要 GPU(不支持纯 CPU) |
| OpenAI API 兼容 | 内存占用较高 |
| 支持分布式推理 | 模型加载较慢 |
五、llama.cpp
5.1 安装
编译安装:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# CPU only
make
# CUDA GPU
make LLAMA_CUDA=1
# Metal (macOS)
make LLAMA_METAL=1通过包管理器:
# Ubuntu
sudo apt install llama.cpp
# macOS
brew install llama.cpp5.2 基本使用
# 下载 GGUF 模型
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_K_M.gguf
# 命令行对话
./llama-cli -m llama-2-7b-chat.Q4_K_M.gguf -p "你好,请介绍一下自己"
# 启动服务
./llama-server -m llama-2-7b-chat.Q4_K_M.gguf --host 0.0.0.0 --port 80805.3 量化模型
| 量化格式 | 大小(7B) | 质量损失 | 速度 |
|---|---|---|---|
| Q4_K_M | ~4GB | 较小 | 最快 |
| Q5_K_M | ~5GB | 很小 | 快 |
| Q6_K | ~6GB | 极小 | 较快 |
| Q8_0 | ~7GB | 无损 | 中等 |
| F16 | ~14GB | 无损 | 较慢 |
💡 Q4_K_M 是性价比最高的选择,质量损失极小但速度最快。
5.4 优缺点
| 优点 | 缺点 |
|---|---|
| 极致性能 | 命令行界面,无 GUI |
| 低内存占用 | 配置复杂 |
| 支持 CPU 推理 | 无内置模型管理 |
| 嵌入式友好 | 无 API 服务(需单独启动) |
六、LM Studio
6.1 安装
从官网下载:https://lmstudio.ai/
6.2 使用
- 打开 LM Studio
- 搜索并下载模型
- 在聊天界面与模型对话
- 启动本地 API 服务
6.3 优缺点
| 优点 | 缺点 |
|---|---|
| 漂亮的 GUI | 仅桌面应用 |
| 拖拽式操作 | 不可编程 |
| 内置模型搜索 | 不适合生产环境 |
| 兼容 OpenAI API | 性能不如 vLLM |
七、性能基准测试
7.1 测试环境
- GPU: NVIDIA RTX 4090 (24GB)
- 模型: Llama 3.1 8B Q4_K_M
- 输入: 128 tokens
- 输出: 512 tokens
7.2 推理速度对比
| 框架 | 首 Token 延迟 | 生成速度 (tokens/s) | 显存占用 |
|---|---|---|---|
| Ollama | ~0.3s | ~80 | 5.2GB |
| vLLM | ~0.2s | ~95 | 6.8GB |
| llama.cpp | ~0.15s | ~100 | 4.8GB |
| LM Studio | ~0.3s | ~78 | 5.3GB |
| KoboldCpp | ~0.25s | ~75 | 5.0GB |
7.3 并发性能对比(8 并发请求)
| 框架 | 总吞吐 (tokens/s) | 平均延迟 |
|---|---|---|
| Ollama | ~200 | 2.5s |
| vLLM | ~600 | 0.8s |
| llama.cpp | ~150 | 3.4s |
| LM Studio | ~180 | 2.8s |
💡 vLLM 在并发场景下优势明显,得益于 PagedAttention 和 Continuous Batching。
八、GPU 加速配置
8.1 NVIDIA GPU
安装 CUDA:
# Ubuntu
sudo apt install nvidia-cuda-toolkit
# 验证
nvidia-smi
nvcc --versionOllama GPU 配置:
Ollama 自动检测 GPU,无需额外配置。
# 查看 GPU 使用
nvidia-smivLLM 多 GPU:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3.1-70B-Instruct \
--tensor-parallel-size 4 # 使用 4 张 GPU8.2 Apple Silicon (M1/M2/M3/M4)
Ollama:
Ollama 自动使用 Apple GPU,通过 Metal 加速。
# 检查是否使用 GPU
ollama run llama3.1:8b "你好"
# 在 Activity Monitor 中查看 GPU 使用率llama.cpp Metal:
make LLAMA_METAL=1
./llama-cli -m model.gguf -p "你好" -ngl 99 # 全部层放 GPU8.3 CPU 优化
当没有 GPU 时:
# Ollama 自动使用 CPU
# 可设置线程数
OLLAMA_NUM_THREADS=8 ollama serve
# llama.cpp 指定线程
./llama-cli -m model.gguf -t 8 -p "你好"九、场景选择指南
9.1 个人开发者
推荐:Ollama
理由:安装最简单,一条命令即可使用,支持丰富的模型。
9.2 生产环境
推荐:vLLM
理由:高吞吐、高并发、OpenAI API 兼容,适合服务化部署。
9.3 低配机器
推荐:KoboldCpp 或 llama.cpp
理由:内存优化好,支持 CPU 推理,对硬件要求低。
9.4 非技术用户
推荐:LM Studio
理由:图形界面,拖拽操作,无需命令行。
9.5 嵌入式/IoT
推荐:llama.cpp
理由:可交叉编译,二进制小,资源占用极低。
9.6 替代 OpenAI API
推荐:LocalAI 或 vLLM
理由:完全兼容 OpenAI API,应用无需修改即可切换。
十、模型推荐
10.1 按用途推荐
| 用途 | 推荐模型 | 参数量 | 显存需求 |
|---|---|---|---|
| 通用对话 | Llama 3.1 8B | 8B | 5GB |
| 中文对话 | Qwen 2.5 7B | 7B | 5GB |
| 代码辅助 | DeepSeek Coder V2 | 7B | 5GB |
| 推理思考 | DeepSeek R1 7B | 7B | 5GB |
| 长文本 | Gemma 2 9B | 9B | 6GB |
| 多语言 | Mistral Nemo 12B | 12B | 8GB |
10.2 量化选择建议
| 场景 | 推荐量化 | 理由 |
|---|---|---|
| 显存充足 | Q6_K 或 Q8_0 | 质量最好 |
| 显存一般 | Q4_K_M | 性价比最高 |
| 显存紧张 | Q3_K_M | 能跑起来 |
| CPU 推理 | Q4_K_M | 速度和质量平衡 |
十一、生产部署建议
11.1 Docker Compose 部署
version: '3.8'
services:
ollama:
image: ollama/ollama
container_name: ollama
restart: always
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3000:8080"
volumes:
- open-webui_data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
ollama_data:
open-webui_data:11.2 Nginx 反向代理
upstream llm_backend {
server 127.0.0.1:11434; # Ollama
# server 127.0.0.1:8000; # vLLM
}
server {
listen 443 ssl;
server_name llm.example.com;
location / {
proxy_pass http://llm_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 300s; # LLM 推理可能较慢
}
}11.3 监控
# GPU 监控
watch -n 1 nvidia-smi
# Ollama 模型状态
ollama ps
# vLLM 指标
curl http://localhost:8000/metrics十二、总结
| 场景 | 最佳选择 |
|---|---|
| 个人快速体验 | Ollama |
| 生产高并发 | vLLM |
| 极致性能/嵌入式 | llama.cpp |
| 非技术用户 | LM Studio |
| 低配机器 | KoboldCpp |
| API 兼容 | LocalAI |
🏠 本地部署让你在享受 AI 能力的同时,掌控数据安全。选择合适的框架,是成功的第一步。
相关文章推荐: