通过安装NVIDIA Container Toolkit在Docker中使用GPU
NVIDIA Container Toolkit
NVIDIA Container Toolkit允许用户构建和运行GPU加速Docker容器。该工具包包括一个容器运行时库和实用程序,用于自动配置容器以利用NVIDIA GPU。
NVIDIA Container Toolkit允许在生态系统中使用不同的容器引擎。
前提
- 安装了NVIDIA驱动
- 安装了Docker
- 不需要安装CUDA(CUDA Toolkit)
你的驱动版本可能会限制你的CUDA能力。较新的NVIDIA驱动程序向后兼容CUDA工具包版本,但是CUDA的每个新版本都需要一个最低的驱动程序版本。运行CUDA容器需要一台机器,至少有一个支持CUDA的GPU和一个与您正在使用的CUDA工具包版本兼容的驱动程序。
CUDA的和最小兼容驱动版本对应表:
注意:从CUDA 11.0开始,工具包组件单独进行版本控制,工具包本身的版本控制如下表所示。
安装
设置NVIDIA Container Toolkit的stable版本存储库的GPG key:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
有关NVIDIA Container Toolkit入门的说明,请参阅安装指南
使用
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
--rm
:当容器退出时自动移除它
上面这行代码,运行完之后输出
nvidia-smi
命令的相关信息之后就退出了,并且退出之后就把容器删除了。
但是明明下载的是cuda:11.0
的容器,怎么显示的却是11.2的,进入容器看看:
docker run -it --name nvidia_docker --gpus all nvidia/cuda:11.0-base
-it
:交互模式运行容器,并分配一个终端
--name
:指定容器名称。容器在运行之后会自动分配ID,并且有个随机的name
,可以指定名称,有时会很方便
--gpus
:指定GPU,有多种指定方式。
虽然没有看到什么资料,但是猜测nvidia-smi
显示的CUDA Version: 11.2
应该指的是这个驱动支持的最新版本的CUDA
,而非安装的CUDA
。应该这样理解才对
用户指南提供了在使用Docker运行GPU容器时可用的配置和命令行选项的信息。