5月28日 07:06

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 示例:

dockerfile
FROM 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:

nginx
upstream 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 端口:

bash
ufw allow from 192.168.1.0/24 to any port 11434

3. 速率限制

在 Nginx 层配置 limit_req,防止单个客户端耗尽推理资源。

负载均衡与高可用

多实例场景用 Nginx upstream 做负载均衡,推荐 least_conn 策略(推理请求耗时不均匀,轮询会导致热点):

nginx
upstream ollama_backend { least_conn; server 192.168.1.10:11434; server 192.168.1.11:11434; server 192.168.1.12:11434; }

健康检查通过 Ollama 自带的模型列表接口:

bash
curl http://localhost:11434/api/tags

返回 200 表示实例正常,可纳入负载均衡池。

性能调优

并发配置

Modelfile 中设置并行请求数:

dockerfile
PARAMETER num_parallel 4

或通过环境变量 OLLAMA_NUM_PARALLEL 全局控制。数值要根据 GPU 显存大小调整——设置过大会 OOM,过小则吞吐不足。T4 实测开启动态批处理后吞吐可提升约 40%。

上下文窗口

通过 OLLAMA_MAX_LOADED_MODELS 控制同时加载的模型数量,避免显存碎片化。

Flash Attention

启用 Flash Attention 可显著降低长上下文的显存占用和推理延迟,Ollama 默认支持,确保 CUDA 版本兼容即可。

Keep-Alive 策略

生产服务建议设置较长的 keep-alive,避免模型频繁卸载重载:

bash
export 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:生产场景选型

这是面试中常见的追问方向。两者定位不同:

维度OllamavLLM
定位开发者本地部署生产级高并发推理
安装复杂度极低(一条命令)较高(需编译配置)
并发能力单机有限PagedAttention 优化,高并发强
OpenAI 兼容原生支持原生支持
适合场景内网工具、私有 Agent对外 API、高 QPS 服务

简单判断:内部工具、低 QPS 场景选 Ollama;对外服务、高并发需求选 vLLM。很多团队两者并用——Ollama 做开发测试,vLLM 做生产推理。

追问:Ollama 离线部署怎么做?

模型下载到本地后,Ollama 所有推理功能完全离线运行。气隙环境(air-gapped)的部署步骤:

  1. 在联网机器上 ollama pull 所需模型
  2. 打包 ~/.ollama/models/ 目录
  3. 传输到目标机器,解压到相同路径
  4. 启动 ollama serve 即可使用

金融、医疗、军工等数据敏感行业,Ollama 的离线能力是选择它的核心理由之一。

标签:Ollama