1. ホーム
  2. cuda

[解決済み】DockerコンテナからGPUを使用する?

2022-04-16 05:52:14

質問

dockerコンテナ内からGPUを使用する方法を探しています。

コンテナは任意のコードを実行するので、特権モードは使いたくありません。

何かヒントがあれば教えてください。

以前の調査から、私は以下のことを理解しました。 run -v および/またはLXC cgroup ということだったのですが、どうすればいいのかよくわかりません。

どのように解決するのですか?

すでにある回答のほとんどは現在では時代遅れになっているため、最新の回答を書いています。

より前のバージョン Docker 19.03 は、以前は nvidia-docker2 であり --runtime=nvidia フラグを使用します。

以来 Docker 19.03 をインストールする必要があります。 nvidia-container-toolkit パッケージを使用し、その上で --gpus all フラグを使用します。

では、基本的なことを説明します。

パッケージのインストール

をインストールします。 nvidia-container-toolkit パッケージは Githubにある公式ドキュメント .

RedhatベースのOSの場合、以下のコマンド一式を実行します。

$ 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ベースのOSの場合、以下のコマンド一式を実行します。

# 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をドッカーコンテナに割り当てるために使用されます。

特定のGPUをドッカーコンテナに割り当てる場合(マシンに複数の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