深層学習のための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を使って,イメージとして保存された実行環境をコンテナとして起動したい. NVIDIAのGPUを利用する場合には,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