本地 LLM 部署指南:使用 Ollama 在本地运行开源大模型
把大模型跑在自己的机器上,曾经是 GPU 集群的专属玩法。如今一个几百 MB 的安装包就能让普通笔记本跑起 3B 参数的模型,这就是 开源大模型 生态带来的变化。Ollama 把模型下载、运行、API 暴露打包成了三条命令,不需要 GPU 也能跑小模型,有 GPU 则可以运行更大的模型。对于重视数据隐私、想省 API 费用、或者想完全掌控推理过程的团队,这是一条非常实际的路径。
安装 Ollama
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Docker
# docker run -d --name ollama -p 11434:11434 ollama/ollama
Linux 一键脚本会自动配置 systemd 服务,开机自启。Docker 方式适合服务器部署,但注意容器内要用 NVIDIA Container Toolkit 才能让 GPU 生效。安装完成后运行 ollama --version 验证。
下载和运行模型
# 拉取并运行模型(自动下载)
ollama run llama3.2:3b # Llama 3.2 3B,适合 CPU
ollama run mistral # Mistral 7B,需要 8GB RAM
ollama run qwen2.5:7b # Qwen 2.5 7B,中文效果优秀
ollama run llama3.2:11b # Llama 3.2 11B,需要 16GB+ RAM
ollama run 会自动下载模型到本地(默认存储于 ~/.ollama),并进入交互式聊天界面。日常管理还有几条命令:ollama list 查看已下载模型,ollama pull <model> 只下载不运行,ollama rm <model> 删除模型释放磁盘。
模型对比
| 模型 | 参数 | 最低 RAM | 中文 | 速度(CPU) | 适合场景 |
|---|---|---|---|---|---|
| Llama 3.2 3B | 3B | 4GB | 一般 | 快 | 简单问答、分类 |
| Mistral 7B | 7B | 8GB | 一般 | 中等 | 通用对话 |
| Qwen 2.5 7B | 7B | 8GB | 优秀 | 中等 | 中文场景 |
| Llama 3.2 11B | 11B | 16GB | 一般 | 慢 | 复杂推理 |
| Qwen 2.5 14B | 14B | 16GB | 优秀 | 慢 | 中文+复杂 |
选模型的第一个标准是"中文效果好不好"。Qwen(通义千问)系列在中文语料上训练充分,中文场景下即使参数更小,体验也常常好过参数更大的英文模型。第二个标准是内存:模型推理时会把权重加载进内存,7B 量化版大约需要 6-8GB,11B 需要 16GB+。小内存机器优先选 3B/7B 量化版本。如果有独立显卡,优先把大一点的模型放到 GPU 上跑,把 CPU 留给其他服务。
API 调用
Ollama 自动提供 REST API,可直接从应用调用:
# API 请求
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "为什么选择云主机?",
"stream": false
}'
// 从 Node.js 调用
const response = await fetch('http://localhost:11434/api/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'qwen2.5:7b',
prompt: '用三句话介绍云主机',
stream: false
})
});
const data = await response.json();
console.log(data.response);
默认端口 11434,/api/generate 用于单次生成,/api/chat 支持多轮对话。stream: true 时返回 SSE 流式结果,适合打字机效果的聊天界面。OpenAI 兼容端点 /v1/chat/completions 让你把现有调用 OpenAI 的代码直接切到本地模型,改一行 base URL 即可。
Docker Compose 部署(服务器)
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama-models:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
volumes:
ollama-models:
注意 ports 绑定的是 127.0.0.1:11434——只允许本机访问,避免未授权的 API 调用消耗算力。ollama-models 命名卷持久化模型文件,容器重建不用重新下载。GPU 段需要宿主机安装 NVIDIA 驱动与 nvidia-container-toolkit。
量化与显存选择
同样的 7B 模型,用 FP16 还是 Q4 量化,内存占用和效果差别很大。量化(quantization)把权重从 16 位压缩到 4-8 位,显存占用大幅下降,代价是极轻微的质量损失。Ollama 的模型标签里常见后缀:q4_K_M 约 4.7GB,是 7B 模型的性价比之选;q8_0 约 7.5GB,质量更高;f16 是原始精度,适合内存充裕的机器。选择原则很简单:先满足内存约束,再在剩余预算里挑更高精度的档位。拉取时直接在标签里指定即可:
ollama pull qwen2.5:7b-q4_K_M
实测中,7B 的 Q4 量化版在多数任务上与未量化版差距很小,却能让 8GB 内存的机器流畅跑起来——这是 CPU 部署 7B 模型的常见做法。
一个真实场景
一个在线教育团队需要给课程做"AI 助教":基于讲义内容回答学员提问。他们把 Qwen 2.5 7B 部署在一台 16G 内存的云主机上,课程讲义用向量库检索后拼进 prompt,由本地模型生成回答。相比调用云端大模型,单次成本近乎为零,更关键的是讲义数据全程不出服务器,不存在外泄风险。上线前他们先在开发机上用 Q4 量化版验证了回答质量,再迁移到 16G 云主机,并把 Ollama 绑定在本机端口、通过内网网关统一鉴权。高峰期加上流式输出和并发排队,体验与云端模型相差不大,但成本结构完全不同——没有按 token 计费,只有一台固定月租的服务器。
常见问题
- 没有 GPU 能跑吗? 能。3B 模型在纯 CPU 上也能流畅对话;7B 用 CPU 偏慢但可用,建议加量化(如
qwen2.5:7b-q4_K_M)。 - 模型存在哪里? 默认
~/.ollama/models,可通过环境变量OLLAMA_MODELS改位置。 - 并发性能如何? Ollama 默认按请求排队,高并发需要借助 Open WebUI、vLLM 或前置网关。
- 如何控制内存占用? 用
OLLAMA_NUM_PARALLEL和OLLAMA_MAX_LOADED_MODELS环境变量限制并发加载,避免多个模型同时驻留内存。
16IDC 观察
Ollama 让本地 LLM 部署变得前所未有的简单。对于注重数据隐私的网站和 SaaS 产品,自托管 LLM 是一个值得考虑的方案——数据不出服务器,无需 API 费用,完全可控。建议从 Qwen 2.5 7B 或 Llama 3.2 3B 开始尝试。
参考:Ollama 官方文档 https://docs.ollama.com/;模型库 https://ollama.com/library