本地部署大模型的三种方式:Ollama vs vLLM vs llama.cpp
近年来,大语言模型(LLM)的能力不断提升,从 GPT-4 到 Claude 再到开源的 DeepSeek、Qwen 系列,模型的智商越来越高。但对于很多开发者和企业来说,调用云端 API 存在数据隐私、延迟和成本等问题。于是,「本地部署大模型」成了一个越来越热门的话题。
今天我就来聊聊本地部署大模型的三种主流方案:Ollama、vLLM 和 llama.cpp,分别适合什么场景,以及如何选择。
一、Ollama:最简洁的部署方案
如果你只是想在自己的电脑上快速跑一个模型聊聊天,Ollama 绝对是最简单的方式。它的设计理念就是「开箱即用」。
安装与使用
Ollama 支持 macOS、Linux 和 Windows。安装后一行命令即可启动一个模型:
bash
ollama run qwen2.5:7b
它会自动下载模型到本地,然后进入交互式聊天界面。就这么简单。
优势
- 极致简单:不需要关心 CUDA、Python 环境、依赖管理等复杂配置
- 模型库丰富:官方 Model Library 包含了上百种模型,从 0.5B 到 70B 都覆盖
- 跨平台:macOS、Linux、Windows 全覆盖
- 自带 API:Ollama 启动后会暴露一个兼容 OpenAI API 的 HTTP 接口,方便集成
劣势
- 性能一般:推理速度不如 vLLM 和 llama.cpp 的优化版本
- 功能较少:不支持连续批处理(Continuous Batching)、PagedAttention 等高级推理优化
- 适用场景:个人实验、小团队使用、快速原型验证
二、vLLM:高性能推理引擎
如果你的场景需要高吞吐量、低延迟,或者需要同时服务多个用户,vLLM 是最佳选择。它是目前工业界最流行的推理框架之一。
核心优化技术
vLLM 之所以快,主要靠三项关键技术:
第一,PagedAttention。这是 vLLM 的核心创新。大模型推理时,Key-Value Cache 占用了大量显存。传统方案在显存分配上会产生大量碎片,PagedAttention 像操作系统的虚拟内存一样,把 KV Cache 分页管理,几乎消除了显存浪费,可以多装 2-4 倍的请求。
第二,Continuous Batching。传统方案每处理一批请求后需要等待所有请求完成再切换下一批。而 Continuous Batching 允许随时动态加入新请求到正在执行的批次中,大幅提升了 GPU 利用率。
第三,Tensor Parallelism。当模型超过单张 GPU 显存时,vLLM 可以将模型切分到多张 GPU 上并行推理,支持大规模部署。
部署示例
bash
# 安装
pip install vllm
# 启动 OpenAI 兼容服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9
优势
- 推理吞吐量最高:比 Hugging Face Transformers 快 10-20 倍以上
- 支持量化:支持 AWQ、GPTQ 等量化格式,降低显存需求
- 兼容 OpenAI API:直接替换 OpenAI SDK 即可集成
- 企业级特性:支持前缀缓存、请求合并、流式输出、异步生成等
劣势
- 需要较高配置:需要 CUDA 环境和至少 8GB+ 显存的 NVIDIA GPU
- 安装相对复杂:需要 Python、CUDA Toolkit、PyTorch 等环境
- 适用场景:生产环境 API 服务、多用户并发推理、高吞吐量场景
三、llama.cpp:极致轻量与全平台适配
如果你没有 NVIDIA GPU,或者需要在 CPU/Raspberry Pi/手机等设备上运行,llama.cpp 是不二之选。
核心优化技术
llama.cpp 是第一个让大模型在普通消费级硬件上跑起来的项目。它的核心思路是把模型量化到极低的精度(4-bit、3-bit 甚至 2-bit),然后在 CPU 上高效运行。
它的优化包括:
- GPU 加速可选:支持 cuBLAS(NVIDIA)、Metal(Apple Silicon)、Vulkan、SYCL 等多种后端
- GGUF 格式:自研的模型存储格式,将模型权重和分词器打包在一个文件中,方便分发
- 智能线程调度:针对 CPU 的多线程并行做了大量优化
部署示例
bash
# 下载编译好的二进制
wget https://github.com/ggerganov/llama.cpp/releases/download/bXXXX/llama-bin-ubuntu-x64.zip
# 运行模型
./llama-cli -m qwen2.5-7b-q4_k_m.gguf -p "你好,请介绍一下你自己"
优势
- 硬件门槛最低:纯 CPU 就能运行,甚至可以在树莓派上跑 7B 模型
- 跨平台最好:支持 x86、ARM、Apple Silicon、RISC-V 等几乎所有架构
- 量化格式丰富:从 Q2 到 Q8 多种精度选择,灵活权衡速度与质量
- 生态完善:有大量基于 GGUF 的工具和第三方集成(如 LM Studio、GPT4All)
劣势
- GPU 利用率有限:在 GPU 上不如 vLLM 高效
- 批处理能力弱:不适合高并发场景
- 适用场景:个人桌面应用、嵌入式设备、边缘计算、学习和研究
四、横向对比与选型建议
|--------|-----------|-------------|-------------|
| 维度 | Ollama | vLLM | llama.cpp |
| 上手难度 | ⭐⭐⭐ 最简单 | ⭐⭐ 中等 | ⭐⭐ 中等 |
| 推理速度 | ⭐⭐ 中等 | ⭐⭐⭐ 最快 | ⭐⭐ 中高 |
| 硬件要求 | ⭐⭐ 中 | ⭐⭐ 高(需 GPU) | ⭐ 低(CPU 即可) |
| 高并发能力 | ⭐⭐ 一般 | ⭐⭐⭐ 强 | ⭐ 弱 |
| 量化支持 | ⭐⭐ 中等 | ⭐⭐⭐ 好 | ⭐⭐⭐ 最好 |
| API 兼容 | OpenAI 兼容 | OpenAI 兼容 | OpenAI 兼容 |
我的建议
如果你是个人开发者 ,只是想本地跑跑模型试试水,直接上 Ollama。它三分钟就能让你跑起来,体验最好。
如果你需要部署 API 服务给团队或用户使用 ,选 vLLM。高吞吐量带来的成本节省是实打实的。
如果你的设备没有强大的 GPU (比如只有 MacBook Air 或者一台旧 PC),llama.cpp 是你的好朋友。通过量化,你可以在 8GB 内存的 Mac 上运行 7B 模型,速度还能接受。
当然,这三者不是互斥的。我自己平时就用 Ollama 做快速实验,用 vLLM 部署生产服务,用 llama.cpp 在笔记本上离线使用。选择哪一个,取决于你的具体场景和硬件条件。
五、一点展望
随着 DeepSeek、Qwen 等国产开源模型的崛起,本地部署的门槛越来越低。Qwen2.5-7B 在性能上已经逼近 GPT-3.5,而 MoE 架构的 DeepSeek-V2 在 8 张消费级 GPU 上就能跑起来 200B+ 参数的模型。本地部署不再是极客的玩具,而是每个开发者都应该掌握的基本技能。
如果你还没有尝试过本地部署,今天就可以从 Ollama 开始------只需要一条命令,你就能拥有一台完全属于自己的大模型。