1. 项目概述
最近在部署Ollama的GPU版本时,发现官方文档对Docker Compose方式的说明比较简略。经过多次实践,我整理出一套完整的部署方案,特别适合需要快速搭建本地大语言模型开发环境的朋友。这个方案在NVIDIA显卡(RTX 3060及以上)的Linux系统上测试通过,相比CPU版本可以获得5-8倍的推理速度提升。
2. 环境准备
2.1 硬件要求
首先确认你的硬件配置满足以下条件:
- NVIDIA显卡(建议RTX 3060 12GB及以上)
- 至少16GB系统内存(32GB更佳)
- 50GB可用磁盘空间(模型文件体积较大)
注意:笔记本显卡可能因功耗限制无法发挥全部性能,建议使用台式机工作站
2.2 软件依赖
需要预先安装的软件包:
# Ubuntu/Debian系统 sudo apt update && sudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ nvidia-container-toolkit验证NVIDIA驱动安装正确:
nvidia-smi应该能看到类似如下的输出:
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 | |-------------------------------+----------------------+----------------------+3. Docker Compose配置
3.1 基础配置文件
创建docker-compose.yml文件:
version: '3.8' services: ollama: image: ollama/ollama:latest container_name: ollama runtime: nvidia deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] volumes: - ollama_data:/root/.ollama ports: - "11434:11434" restart: unless-stopped volumes: ollama_data:关键配置说明:
runtime: nvidia:启用NVIDIA容器运行时capabilities: [gpu]:声明需要GPU支持- 卷挂载:持久化存储模型文件
3.2 性能优化配置
对于高性能需求,可以添加以下参数:
environment: - OLLAMA_NUM_PARALLEL=2 - OLLAMA_MAX_LOADED_MODELS=34. 部署与验证
4.1 启动服务
docker-compose up -d检查容器日志:
docker logs ollama正常启动后应该看到:
Starting ollama... Listening on [::]:114344.2 测试GPU加速
进入容器执行测试:
docker exec -it ollama ollama pull llama2 docker exec -it ollama ollama run llama2 "写一段关于人工智能的诗"观察nvidia-smi的输出,应该能看到显存占用和GPU利用率。
5. 常见问题排查
5.1 GPU未被识别
症状:模型加载速度与CPU版本无异
解决方案:
- 确认
nvidia-container-toolkit已安装 - 重启docker服务:
sudo systemctl restart docker - 检查容器运行时配置:
docker info | grep -i runtime
5.2 显存不足
症状:加载大模型时崩溃
处理方法:
- 选择较小尺寸的模型(如7B版本)
- 调整加载参数:
docker exec -it ollama ollama run llama2:7b - 添加交换空间(临时方案):
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
5.3 模型下载中断
解决方案:
- 手动下载模型文件:
wget -O ollama_data/_models/llama2 https://example.com/model.bin - 重启容器后重新pull
6. 高级配置技巧
6.1 多GPU分配
如果有多个GPU,可以指定使用特定设备:
environment: - NVIDIA_VISIBLE_DEVICES=0,1 # 使用前两块GPU6.2 模型缓存管理
查看已下载模型:
docker exec -it ollama ollama list删除不需要的模型释放空间:
docker exec -it ollama ollama rm llama26.3 性能监控
实时查看GPU使用情况:
watch -n 1 nvidia-smi容器资源监控:
docker stats ollama7. 实际应用建议
开发环境配置:
export OLLAMA_HOST=http://localhost:11434然后在代码中直接调用本地API
推荐的基础模型组合:
- 代码生成:codellama:7b
- 通用对话:llama2:13b
- 中文处理:chinese-llama2:7b
对于持续集成环境,建议添加健康检查:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:11434"] interval: 30s timeout: 10s retries: 3
这套配置在我团队的开发环境中已经稳定运行3个月,相比直接安装省去了大量依赖管理的工作。特别是在多项目切换时,Docker的隔离性避免了环境冲突问题。最大的收获是发现Ollama对消费级显卡的优化相当不错,RTX 4090上跑13B模型的性能已经接近商用API的响应速度