容器内执行nvidia-smi报错提示Failed to initialize NVML
- 2024-01-11 10:01:32
- 运维
- 56
- shevechco
使用GPU的容器运行了一个训练任务,一段时间以后查看训练任务失败,进POD容器内执行nvidia-smi返回"Failed to initialize NVML: Unknown Error"。
目前该问题是一个已知问题,是由于在docker环境中daemon.json文件中配置了
01."exec-opts": ["native.cgroupdriver=systemd"]
同时通过systemctl daemon-reload等命令守护进程重载命令,导致容器化的GPU工作负载可能会突然失去对GPU的访问,GPU目前不提供自动创建重新链接设备的符号的创建,从而出现以上问题。
目前唯一在docker上唯一解决的方法是cgroup驱动不要使用systemd,修改成以下配置
01."exec-opts": ["native.cgroupdriver=cgroupfs"]
另外有些containerd环境可能也有上述问题,但是我本地使用的container1.7.10这个版本没有复现该问题,但是在docker环境下100%复现,环境是否存在这个问题可以通过以下方式复现,在POD中添加
01.command: ["bash", "-c"]02.args: ["while true; do nvidia-smi -L; sleep 3; done;"]
然后创建POD容器
01.kubectl logs -f -n <namespace> <pod_name>02.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)03.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)04.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)
这时我们在宿主机执行daemon-reload命令
01.systemctl daemon-reload
然后再此查看POD容器日志
01.kubectl logs -f -n <namespace> <pod_name>02.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)03.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)04.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)05.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)06.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)07.GPU 0: NVIDIA GeForce RTX 2060 (UUID: GPU-c455907b-b566-3bf7-e873-8115c0fb869a)08.Failed to initialize NVML: Unknown Error09.Failed to initialize NVML: Unknown Error10.Failed to initialize NVML: Unknown Error
这样就复现了该问题,该问题可以查看github:https://github.com/NVIDIA/nvidia-container-toolkit/issues/48
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.sulao.cn/post/959