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容器內可以共享計算機顯卡資源,實現對顯卡的高效利用。