深層学習のためのDocker(2)

インストール手順

Dockerコンテナ内とホストOSのNVIDIAドライバーの接続が面倒らしく,それをNVIDIA Container Toolkitが解決してくれる. ホストOSに(1)Docker Engine, (2)NVIDIA Driver, (3)NVIDIA Container Toolkitをインストールする. 順番は123もしくは213で行う. ホストOSにはUbuntuを想定.

1) Docker Engineのインストール

- [1]を参考に.

2) NVIDIA Driverのインストール(更新)

- [2]を参考に.

リポジトリを追加
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update

インストール可能なバージョンを確認
$ apt-cache search nvidia | grep nvidia-driver

インストール(バージョン470)
$ sudo apt install nvidia-driver-470

再起動と確認
$ sudo reboot
$ nvidia-smi

3) NVIDIA Container Toolkitのインストール

- [3]を参考に.

動作確認.

$ sudo docker run --rm --gpus all nvidia/cuda:9.0-base cat /usr/local/cuda/version.txt

Dockerコンテナ内のCUDAのバージョンが表示される.この例だと9.0. nvidia-smiの表示するCUDAのバージョンは実際に使われるものとは別らしいので,この方法で確認. 一般にはnvccでも確認できるが,ここでは使えない.

イメージ・コンテナの準備

Docker Engineを使って,イメージとして保存された実行環境をコンテナとして起動したい. NVIDIAGPUを利用する場合には,NVIDIA Container Toolkit(NVIDIA Docker)によってホストOSのNVIDIAドライバを利用できる. あとはCUDAより上のレイヤをDockerイメージが含んでいる必要がある.

Dockerイメージの選択

NVIDIAがCUDAインストール済みのイメージを公開している. いずれ必要なライブラリを入れていく必要はあるが,まずはベースのイメージを選ぶ.

  • nvidia/cudaが提供するDockerイメージのうち,runtimeフレーバーのやつはcuDNNが入っている.[6]
    • nvidia/cuda:11.4.1-cudnn8-runtime-ubuntu18.04 これが良さそう.cuDNNは8.2が入る[8]

深層学習ライブラリ・GPUの世代を基準にした互換性チェック:

  • RTX30台を使うには,CUDA11.1以降が必要[5].最新版は11.4
  • Chainerのlatestはv7.8.0.これは部分的にCUDA11.1以降/Cupy8,9をサポートしている.[4]
    • cupyの最新版は10台だけどchainerが未対応かもしれない.cupy9台の最新版は9.4.0
  • cupy 9.4.0に対応する最新のcuDNNは8.2 [7]
  • Chainer7.8.0, CUDA11.4, Cupy9.4.0, cuDNN8.2の組み合わせが,互換性のある最新の構成(2021/9/26現在)

参考文献

[1] Install using the repository. https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
[2] ubuntuにCUDA、nvidiaドライバをインストールするメモ. https://qiita.com/porizou1/items/74d8264d6381ee2941bd
[3] Setting up NVIDIA Container Toolkit. https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit
[4] Chainer. https://github.com/chainer/chainer/releases
[5] GPUs supported. https://en.wikipedia.org/wiki/CUDA#GPUs_supported
[6] Overview of Images. https://hub.docker.com/r/nvidia/cuda
[7] Cupy v9.4.0. https://docs.cupy.dev/en/v9.4.0/install.html
[8] nvidia/cuda. https://hub.docker.com/layers/nvidia/cuda/11.4.1-cudnn8-runtime-ubuntu18.04/images/sha256-b8441f7e65e345b8b73f5464387711a2b82f60911ac55ed203ea5a1bf0061bc6?context=explore