小编典典

使用 docker 容器中的 GPU?

all

我正在寻找一种从 docker 容器内使用 GPU 的方法。

容器将执行任意代码,所以我不想使用特权模式。

有小费吗?

从之前的研究中,我了解到run -v和/或 LXCcgroup是要走的路,但我不确定如何准确地实现这一目标


阅读 146

收藏
2022-06-30

共1个答案

小编典典

写一个更新的答案,因为大多数已经存在的答案现在已经过时了。

早于Docker 19.03要求nvidia-docker2--runtime=nvidia标志的版本。

由于 Docker 19.03 ,您需要安装nvidia-container-toolkit包,然后使用--gpus all标志。

所以,这里是基础知识,

包安装

根据Github上的官方文档安装nvidia-container- toolkit软件包。

对于基于 Redhat 的操作系统,请执行以下命令集:

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

$ sudo yum install -y nvidia-container-toolkit
$ sudo systemctl restart docker

对于基于 Debian 的操作系统,执行以下命令集:

# Add the package repositories
$ 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

运行带有 GPU 支持的 docker

docker run --name my_all_gpu_container --gpus all -t nvidia/cuda

请注意,该标志--gpus all用于将所有可用的 gpus 分配给 docker 容器。

将特定 gpu 分配给 docker 容器(如果您的机器中有多个 GPU 可用)

docker run --name my_first_gpu_container --gpus device=0 nvidia/cuda

或者

docker run --name my_first_gpu_container --gpus '"device=0"' nvidia/cuda
2022-06-30