Docker使用GPU的奇技淫巧
前言#
使用Docker对多卡GPU服务器进行隔离,具体搭建方法可参考使用Docker实现GPU服务器共享与资源隔离 - azureology - 博客园。
使用过程中遇到并解决一些问题,记录解决方案避免供参考。
问题#
Docker with GPU: "Failed to initialize NVML: Unknown Error"#
优先尝试将host显卡驱动版本与内核对齐,方法为sudo dmesg | grep NVRM
查看正确版本。
如果不行再往下看:
这个问题比较复杂,在我这边属于偶发,表现为container中cuda无法正常调用,运行nvidia-smi
报错Docker with GPU: "Failed to initialize NVML: Unknown Error"
,
且调用torch.cuda.is_avaliable()
值为False
,重启container可以暂时恢复正常,host始终没有发生此类问题。
开始根据参考文档指引修改了cgroups
参数,正常使用一段时间后问题依旧,后续又将host安装的nvidia驱动升级到最新依然无法解决。
仔细观察文档中的docker run
命令,包含--gpus all
外还有--privileged
不知用意为何。
抱着试试看的心态将现有container打包为image并重新加入--privileged
参数,问题未再复现。
Bus error. It is possible that dataloader's workers are out of shared memory. Please try to raise your shared memory limit.#
这个报错比较直白,默认container设置的shared memory数量为64MB无法满足需求,
在启动阶段可通过向docker run
追加--shm-size=16gb
解决,建议不要超过物理内存一半。
如果container已经运行,则需要手动修改对应配置文件:
docker ps
# 查看并记录container id
docker stop <container_id>
sudo vi /var/lib/docker/containers/<container_id>/hostconfig.json
# 修改"ShmSize":17179869184 单位bytes
docker start <container_id>
#验证修改生效
docker exec <container_id> df -h /dev/shm
参考#
Nvml error: driver/library version mismatch - NVIDIA cuOpt / cuOpt - NVIDIA Developer Forums
[SOLVED] Docker with GPU: "Failed to initialize NVML: Unknown Error" / Applications & Desktop Environments / Arch Linux Forums
Can I increase shared memory after launching a docker session - Stack Overflow
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话