大模型推理框架选型入门:Ollama、llama.cpp与vLLM对比
随着大语言模型(LLM)的广泛应用,如何将模型高效地部署到生产环境成为每个 AI 工程师必须面对的问题。目前市面上主流的推理框架有 Ollama、llama.cpp 和 vLLM,但它们的技术定位、适用场景差异巨大。
很多开发者在选型时容易陷入误区:
- 用 Ollama 部署高并发 API 服务,结果吞吐量上不去
- 用 vLLM 跑边缘设备,发现资源占用过高
对比了 Ollama、llama.cpp 和 vLLM 三大主流大模型推理框架。通过三层架构视角分析,明确 Ollama 为开箱即用工具层,llama.cpp 为轻量级引擎,vLLM 为高吞吐服务框架。文章提供了按场景(本地开发、边缘设备、高并发 API)和硬件环境(CPU、GPU、Apple Silicon)的选型速查表,并给出快速上手命令示例及常见误区澄清,帮助开发者根据实际需求选择合适的部署方案。
随着大语言模型(LLM)的广泛应用,如何将模型高效地部署到生产环境成为每个 AI 工程师必须面对的问题。目前市面上主流的推理框架有 Ollama、llama.cpp 和 vLLM,但它们的技术定位、适用场景差异巨大。
很多开发者在选型时容易陷入误区:
本文将从架构分层视角出发,帮你建立清晰的选型认知。
如果把 LLM 推理技术栈比作一座大厦,三个框架分别位于不同的楼层:
┌─────────────────────────────────────────────────────────────┐
│ 应用层(第 3 层) │
│ ┌─────────────┐ │
│ │ Ollama │ ← 一键式模型管理,类似 Docker 的体验 │
│ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 推理引擎层(第 2 层) │
│ ┌─────────────┐ ┌─────────────────────────────────────┐ │
│ │ llama.cpp │ │ vLLM │ │
│ │ C++ 引擎 │ │ Python 推理服务平台 │ │
│ └─────────────┘ └─────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 硬件加速层(第 1 层) │
│ CUDA / Metal / ROCm / AVX512 │
└─────────────────────────────────────────────────────────────┘
核心区别一句话总结:
| 维度 | Ollama | llama.cpp | vLLM |
|---|---|---|---|
| 本质 | 模型管理工具 | 推理引擎库 | 推理服务框架 |
| 设计目标 | 开发便捷 | 跨平台兼容 | 高吞吐服务化 |
| 核心用户 | 开发者/研究者 | 嵌入式工程师 | SRE/运维工程师 |
| 部署形态 | 单二进制文件 | 静态库/可执行文件 | Python 服务+API |
很多开发者不知道的是,Ollama 底层调用的正是 llama.cpp:
Ollama CLI → Modelfile 解析 → GGUF 模型下载 → llama.cpp 推理引擎
这意味着:
| 场景 | 推荐框架 | 理由 |
|---|---|---|
| 本地开发测试 | Ollama | 一键安装,Modelfile 灵活配置 |
| MacBook Pro 本地跑 70B | llama.cpp | Metal 后端优化,统一内存优势 |
| 边缘设备/嵌入式 | llama.cpp | ARM NEON 优化,低资源占用 |
| 高并发 API 服务 | vLLM | 连续批处理,PagedAttention |
| 70B+ 大模型生产部署 | vLLM | TP/PP 分布式支持完善 |
| MoE 模型 (DeepSeek) | vLLM | EP 专家并行原生支持 |
| CPU 兜底/降级链路 | llama.cpp | 跨平台稳定,GGUF 生态成熟 |
无 GPU 环境:
# 唯一选择:llama.cpp
./llama-cli -m model.gguf --threads 32
单卡消费级 GPU(RTX 4090 24GB):
# 7B-13B 模型:vLLM 或 llama.cpp 均可
# 70B 模型:必须用量化版 + vLLM
vllm serve --model llama-70b-awq --quantization awq
多卡数据中心 GPU(A100/H100):
# vLLM 是最佳选择
vllm serve --model llama-405b --tensor-parallel-size 8
Apple Silicon(M1/M2/M3):
# llama.cpp Metal 后端最优
./llama-cli -m model.gguf -ngl 99
# 全部层卸载到 GPU
# 安装
curl -fsSL https://ollama.com/install.sh | sh
# 拉取并运行模型
ollama run llama3.1:70b
# 自定义 Modelfile
cat > Modelfile <<'EOF'
FROM llama3.1:70b
PARAMETER temperature 0.7
PARAMETER top_p 0.9
SYSTEM "你是一个专业的编程助手"
EOF
ollama create my-model -f Modelfile
# 克隆并编译
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make -j LLAMA_CUDA=1 # NVIDIA GPU
# 下载 GGUF 模型并运行
./llama-cli \
-m models/llama-3.1-70b-Q4_K_M.gguf \
--ctx-size 32768 \
--threads 32 \
-ngl 99 # GPU 层数,99 表示全部
# pip 安装
pip install vllm
# 启动服务
vllm serve meta-llama/Llama-3.1-70B \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.85 \
--max-model-len 32768 \
--enable-prefix-caching
# 调用 API
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{ "model": "meta-llama/Llama-3.1-70B", "prompt": "Hello,", "max_tokens": 100 }'
真相:Ollama 的 HTTP 层和调度逻辑在高并发下会成为瓶颈。实测数据显示,相同硬件下 vLLM 的吞吐量是 Ollama 的 3-5 倍。
真相:llama.cpp 在 CPU 推理和边缘设备场景下是最佳选择。它的跨平台能力和 GGUF 生态是 vLLM 无法替代的。
真相:vLLM 主要支持 HuggingFace 格式(safetensors/bin),而 llama.cpp 专注于 GGUF。选型前需要确认模型格式支持。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online