Docker是目前广泛使用的一种容器技术,在模拟运行环境方面具有很高的灵活性和可扩展性。在计算机程序的运行过程中,显卡是不可或缺的一部分,对于机器学习和深度学习等领域尤其重要。但是,在Docker容器内使用显卡却比较麻烦,需要进行专门的配置。
在实现Docker共用显卡的过程中,需要安装NVIDIA Docker插件,该插件是专门为Docker容器提供GPU硬件加速的工具。
$ sudo apt-get update
$ sudo apt-get install -y docker.io
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
完成以上安装和配置后,在Docker容器内的操作只需要添加一句参数即可,在启动容器时添加--gpus all参数即可。
$ docker run --rm --gpus all ubuntu nvidia-smi
可以使用nvidia-smi命令查看显卡状态,如果显卡信息正确,则说明显卡已经成功共享到Docker容器内。
在使用TensorFlow、PyTorch等深度学习框架时,也可以通过添加一些参数来共享显卡。例如,在使用TensorFlow时,需要指定可见显卡列表,即设置CUDA_VISIBLE_DEVICES环境变量。
$ docker run --rm --gpus all -e CUDA_VISIBLE_DEVICES=0 tensorflow/tensorflow:latest-gpu python -c "import tensorflow as tf; tf.config.experimental.list_physical_devices('GPU')"
通过以上配置,Docker容器内可以共享计算机显卡资源,实现对显卡的高效利用。