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 能力的同時,掌控數據安全。選擇合適的框架,是成功的第一步。
相關文章推薦: