DockerでNvidia GPU対応コンテナを使えるように設定する【Ubuntu 18.04】

2019年11月18日

Dockerはバージョン19.03からネイティブで「Nvidia GPUによるコンテナのアクセラレーション」がサポートされました。この機能はNVIDIA Container Toolkitを使うことでを利用できるようになります。ここでは、それに必要な初期設定を行います。

環境
OS:Ubuntu 18.04 LTS
GPU:GTX1080

手順0:前提条件の確認

Dockerの「GPUによるコンテナのアクセラレーション」を使うにあたり、環境を確認しておきましょう。古すぎる環境ではGPUコンテナは使えません。

  • GNU / Linux x86_64(kernel version > 3.10)← Ubuntu 18.04なのでOK
  • NVIDIA GPU with Architecture > Fermi(2.1 ) ← GPUはデスクトップ用ならGTX600台以降はOK
  • NVIDIA driverバージョン ≧ 361.93   ← 下記の手順2参照

詳細は以下のページをご覧ください。

手順1:Dockerのインストール

まだDockerを入れてない場合は、以下の手順に従いインストールします。

手順2:Nvidia GPU Driverのインストール

GPUコンテナ(CUDAコンテナ)を実行するには、Nvidiaドライバーが必要です。

Nvidiaドライバーのバージョンは、使用したいCUDAのバージョンに対応する以上のものにします(例えばtensorflowなどでは使うバージョンにより必要なCUDAバージョンが厳密に異なるため)。

CUDAバージョンとNvidia Driverバージョンの対応
CUDAバージョンとNvidia Driverバージョンの対応

Nvidiaドライバーさえちゃんとインストールすれば、CUDA toolkit や NVIDIA Container Toolkitを別途インストールしなくても大丈夫です。

Nvidia Driverのインストール方法は以下にまとめました。

手順3:DockerでGPUコンテナを使えるようにする

端末から以下入力します。
公式参照: https://github.com/NVIDIA/nvidia-docker

# パッケージリポジトリを追加
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

動作確認してみる

# 最新の公式CUDA imageでテスト
docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

上手くいけばこんな表示がでます。

以後GPUコンテナを使うには「docker run」に「 –gpus」オプションをつけます。

dockerをインストールしたばかりであればdocker runの前にsudoを加えないと実行されないかもしれません。
【Ubuntu】dockerをsudoコマンドなしで実行するための設定と注意点

以上、UbuntuでDockerのGPU対応コンテナ利用に必要な初期設定でした。

参考書籍