引言
你是否在运行 Ollama 时发现 GPU 利用率不足?默认配置可能只调用单块 GPU,而现代 AI 任务往往需要更强的算力支持。本文将手把手教你如何通过 Docker Compose 配置,让 Ollama 容器识别并使用所有可用 GPU,显著提升模型推理效率。无论你是开发者还是运维人员,只需 5 分钟调整,即可解锁硬件潜能!
正文
1. 为什么需要显式配置 GPU?
Docker 默认不会自动将宿主机的 GPU 资源分配给容器,尤其是多卡环境下。常见的“卡脖子”问题包括:
容器仅使用 1 块 GPU,其他显卡闲置
CUDA 驱动未正确加载,导致报错
No CUDA-capable device is detected
显存分配不均,部分任务阻塞
通过调整 docker-compose.yml
,我们可以精准控制 GPU 资源的调度。
2. 完整配置代码(支持多 GPU)
version: '3.8' # 必须 ≥ 3.8 以支持 GPU 配置
services:
ollama:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all # 关键!允许使用所有 GPU
capabilities: [gpu]
environment:
- NVIDIA_VISIBLE_DEVICES=all # 开放所有显卡访问权限
- NVIDIA_DRIVER_CAPABILITIES=compute,utility # 启用 CUDA 支持
# 其他配置(网络、卷等)保持不变...
3. 关键配置解析
① count: all
与 NVIDIA_VISIBLE_DEVICES=all
的区别
count: all
:告诉 Docker 允许容器使用所有物理 GPU 设备(硬件层权限)。NVIDIA_VISIBLE_DEVICES=all
:让 NVIDIA 驱动将 GPU 列表暴露给容器内的应用(软件层可见性)。
类比:就像给你的员工(容器)开了一间有所有门禁卡(
count: all
)的办公室,但还需要把每台电脑(GPU)的密码(NVIDIA_VISIBLE_DEVICES
)告诉他。
② 为什么需要 capabilities: [gpu]
?
它声明容器需要 GPU 的计算能力,而非仅图形渲染(如游戏或视频处理)。
4. 验证 GPU 是否生效
按步骤检查:
启动容器
docker-compose up -d
进入容器执行命令
docker exec -it ollama nvidia-smi
✅ 预期结果:输出与宿主机
nvidia-smi
相同的 GPU 列表。测试 Ollama 模型加载
ollama run llama2
观察任务管理器,确认所有 GPU 的显存和算力被占用。
5. 常见问题排查
Q1:报错 Failed to initialize NVML: Unknown Error
原因:NVIDIA 驱动未正确安装或 Docker 无权限。
解决:
sudo apt-get install nvidia-container-toolkit sudo systemctl restart docker
Q2:只想用特定 GPU(如仅卡 0 和卡 2)
修改环境变量:
environment:
- NVIDIA_VISIBLE_DEVICES=0,2 # 仅使用 GPU 0 和 2
结语
通过本文的配置,你的 Ollama 容器现在可以像“霸总”一样调用所有 GPU 资源了!无论是训练大模型还是并行推理,都能最大化硬件利用率。如果你遇到其他 Docker 或 GPU 相关的问题,欢迎在评论区留言讨论。
下一步尝试:
结合 Kubernetes 管理多节点 GPU 资源
监控 GPU 使用率,优化显存分配
🚀 记住:算力就是生产力,别让你的显卡偷懒!
评论区