Ollama 生产环境部署有哪些关键点和最佳实践?
核心回答
Ollama 生产环境部署的核心在于三点:GPU 资源规划决定推理性能上限,反向代理与认证保障接口安全,监控与并发配置维持服务稳定。实际落地中,Ollama 更适合中小规模内网场景和企业私有化 Agent 部署,若面对高并发 API 服务需求,需评估 vLLM 等专业推理框架。
硬件选型与系统要求
GPU 是影响推理速度的决定性因素。生产环境推荐 NVIDIA T4 及以上,CUDA 11.0+ 驱动。Apple Silicon(M1/M2/M3/M4)凭借统一内存架构,单机也能跑 70B 参数模型。
内存和存储的底线配置:
- 8GB RAM:可跑 3B-7B 模型(qwen3:8b、llama3.3:8b)
- 16GB RAM:适合 7B-14B 模型(deepseek-v3:16b、qwen-coder:14b)
- 32GB RAM:14B-32B 模型(deepseek-r1:32b)
- 64GB+ RAM:32B-70B 模型(llama3.3:70b)
存储必须用 SSD,每个模型占用 4-20GB,机械硬盘会导致加载延迟不可接受。
操作系统优先选 Linux(Ubuntu 20.04+),macOS 11+ 和 Windows 10/11 也支持。
部署方式选择
单机直接部署
最简单的方式,适合开发测试和小规模内网使用:
bash# 安装后直接启动,默认监听 0.0.0.0:11434 ollama serve # 预加载模型,避免首次请求冷启动 ollama run llama3.1 &
注意:生产环境不要把 11434 端口直接暴露到公网,必须通过反向代理加认证。
Docker 容器部署
推荐的服务器部署方式,环境一致性好,方便版本管理:
bash# 基础启动,挂载模型持久化存储 docker run -d -v ollama:/root/.ollama -p 11434:11434 --gpus all ollama/ollama:0.18.0
关键点:务必指定版本标签(如 0.18.0),不要用 latest。版本更新可能引入不兼容变更,生产环境需要可控的升级节奏。
自定义 Modelfile 的 Dockerfile 示例:
dockerfileFROM ollama/ollama:0.18.0 COPY my-model.gguf /root/.ollama/models/ CMD ["ollama", "serve"]
Kubernetes 集群部署
企业级多实例场景选择 K8s,配合 GPU 调度和水平自动扩缩容。核心资源清单包括:Deployment(挂载 PVC 存模型)、Service、Ingress(TLS 终结),以及 nvidia.com/gpu 资源请求。
安全配置:必须做的三件事
1. 反向代理 + TLS + 认证
永远不要裸奔暴露 Ollama API。用 Nginx 做 TLS 终结和 Basic Auth:
nginxupstream ollama_backend { server 192.168.1.10:11434; server 192.168.1.11:11434; } server { listen 443 ssl; server_name ollama.example.com; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; location /api/ { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://ollama_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
2. 网络层防火墙
只允许应用服务器所在网段访问 11434 端口:
bashufw allow from 192.168.1.0/24 to any port 11434
3. 速率限制
在 Nginx 层配置 limit_req,防止单个客户端耗尽推理资源。
负载均衡与高可用
多实例场景用 Nginx upstream 做负载均衡,推荐 least_conn 策略(推理请求耗时不均匀,轮询会导致热点):
nginxupstream ollama_backend { least_conn; server 192.168.1.10:11434; server 192.168.1.11:11434; server 192.168.1.12:11434; }
健康检查通过 Ollama 自带的模型列表接口:
bashcurl http://localhost:11434/api/tags
返回 200 表示实例正常,可纳入负载均衡池。
性能调优
并发配置
Modelfile 中设置并行请求数:
dockerfilePARAMETER num_parallel 4
或通过环境变量 OLLAMA_NUM_PARALLEL 全局控制。数值要根据 GPU 显存大小调整——设置过大会 OOM,过小则吞吐不足。T4 实测开启动态批处理后吞吐可提升约 40%。
上下文窗口
通过 OLLAMA_MAX_LOADED_MODELS 控制同时加载的模型数量,避免显存碎片化。
Flash Attention
启用 Flash Attention 可显著降低长上下文的显存占用和推理延迟,Ollama 默认支持,确保 CUDA 版本兼容即可。
Keep-Alive 策略
生产服务建议设置较长的 keep-alive,避免模型频繁卸载重载:
bashexport OLLAMA_KEEP_ALIVE=24h
监控与运维
核心监控指标
- GPU 利用率和显存占用(
nvidia-smi或 Prometheus DCGM Exporter) - 推理延迟 P50/P95/P99
- 请求队列深度和超时率
- 模型加载/卸载频率
日志管理
bash# 实时日志 ollama logs -f # 调整日志级别 export OLLAMA_LOG_LEVEL=debug
生产环境建议接入 ELK 或 Loki 统一收集,配合 Grafana 做告警看板。
备份与故障恢复
bash# 备份整个 Ollama 数据目录(包含模型和配置) tar -czf ollama-backup-$(date +%Y%m%d).tar.gz ~/.ollama/ # 恢复 tar -xzf ollama-backup-20260528.tar.gz -C ~/
注意:只备份 Modelfile 和自定义配置即可,官方模型可以重新 pull,不必浪费存储空间。
Ollama vs vLLM:生产场景选型
这是面试中常见的追问方向。两者定位不同:
| 维度 | Ollama | vLLM |
|---|---|---|
| 定位 | 开发者本地部署 | 生产级高并发推理 |
| 安装复杂度 | 极低(一条命令) | 较高(需编译配置) |
| 并发能力 | 单机有限 | PagedAttention 优化,高并发强 |
| OpenAI 兼容 | 原生支持 | 原生支持 |
| 适合场景 | 内网工具、私有 Agent | 对外 API、高 QPS 服务 |
简单判断:内部工具、低 QPS 场景选 Ollama;对外服务、高并发需求选 vLLM。很多团队两者并用——Ollama 做开发测试,vLLM 做生产推理。
追问:Ollama 离线部署怎么做?
模型下载到本地后,Ollama 所有推理功能完全离线运行。气隙环境(air-gapped)的部署步骤:
- 在联网机器上
ollama pull所需模型 - 打包
~/.ollama/models/目录 - 传输到目标机器,解压到相同路径
- 启动
ollama serve即可使用
金融、医疗、军工等数据敏感行业,Ollama 的离线能力是选择它的核心理由之一。