nvidia-docker2版本以上增加在启动容器的时候加上
-e NVIDIA_VISIBLE_DEVICES=all
在容器中使用nvidia-smi可以显示出GPU信息
图源:来自网络
但是发现CUDA Version的版本为N/A,使用torch.cuda.is_available()会出现报错
UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
return torch._C._cuda_getDeviceCount() > 0
造成这样的主要原因是因为环境变量的配置
需要在启动容器时候加上
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility
如果你不改这个环境变量,宿主机的nvidia driver在容器内是仅作为utility存在的,也就是个花瓶。如果加上compute,宿主机的英伟达driver将对容器提供计算支持(所谓的计算支持也就是cuda支持)。
这样大概率问题就解决了
当然更推荐是将docker版本升级19以后,就不用使用nvidia-docker操作,在docker起容器的时候直接加上
-e gpus=all
就可以使用宿主机的GPU了,更为方便。
参考:
Found no NVIDIA driver on your system · Issue #533 · NVIDIA/nvidia-docker · GitHub