情况描述

服务器使用docker启动容器。启动以后一切正常也能跑程序。但是,在运行一段时间(2天左右不等),会发现gpu掉了。输入nvidia-smi提示

Failed to initialize NVML: Unknown Error

主要发生条件是,docker启动的时候指定的部分卡。譬如4卡,指定2卡在容器中使用。

当前发现情况基本都是,代码运行完,准备下一次跑的时候,提示这个问题。

解决方案记录

1、如果是容器使用本机所有卡,在启动容器时候添加“--privileged”参数,能够避免上述问题。但是,如果只使用部分卡,则不能添加此参数。

2、【测试完毕】根据链接所述,发生原因如下,详情见链接。https://github.com/NVIDIA/nvidia-container-toolkit/issues/48

主要首先要确定docker是否使用systemd cgroup进行管理,如果不是这问题导致,大概率后续解决方案无效。运行docker info| grep Cgroup。确认一下。

 $ docker info  
 ...  
 Cgroup Driver: systemd  
 Cgroup Version: 1

如果如上图所示,在/etc/docker/daemon.json里面添加参数,重启docker。

"exec-opts": ["native.cgroupdriver=systemd"]  【systemd不行】

"exec-opts": ["native.cgroupdriver=cgroupfs"]  【测试通过】

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐