昨日のこの記事に引き続き、GTX Titanを取り付けたZ620 WorkstationにDocker, nvidia-docker2をインストールして、コンテナからTitanを使うようにする。
最終的にはTensorFlowを使って、Deep Learningを学ぶ(楽しむ)ことが、ゴール。
(1)Dockerをインストールする。
公式のこのページを参考にした。
・先ずは、レポジトリを設定する
$ sudo apt-get update
$ sudo apt-get install \
> apt-transport-https \
> ca-certificates \
> curl \
> gnupg-agent \
> software-properties-common
→ ca-certificates, software-properties-commonは既に最新バージョンだったので、インストールはされない。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable"
・DOCKER CEをインストールする。
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
・Docker CEが正しくインストールされているか、確認する。
$ sudo docker run hello-world
・Dockerのバージョンは次の通り。
$ sudo docker version
Client:
Version: 18.09.5
API version: 1.39
Go version: go1.10.8
Git commit: e8ff056
Built: Thu Apr 11 04:43:57 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.5
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: e8ff056
Built: Thu Apr 11 04:10:53 2019
OS/Arch: linux/amd64
Experimental: false
(2)nvidia-docker2をインストールする
・レポジトリを設定する。
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
> sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ 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
・nvidia-docker2をインストールする。
$ sudo apt-get install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
・インストールを確認する。
$ sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
・・・・
Status: Downloaded newer image for nvidia/cuda:latest
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:424: container init caused \"process_linux.go:407: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility --require=cuda>=10.1 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=410,driver<411 --pid=13217 /var/lib/docker/overlay2/063ed3397c21a6dc26ecb6f1b754c4f56532aa0b48cd62f4a4ca00fcd7b72931/merged]\\\\nnvidia-container-cli: requirement error: unsatisfied condition: brand = tesla\\\\n\\\"\"": unknown.
※メッセージから察するに、nvidia/cudaコンテナは、CUDA 10.1から成り、最新のドライバーを必要とするようだ。
(3)CUDAとドライバーのバージョンの関係
このページで、CUDAのバージョンと必要なドライバーバージョンとの関係を調査する。
どうやら、最新のCUDA 10.1に対応するドライバーバージョンは、418.39以上で、Keplerにも対応しているようだ。
(4)最新のnvidiaドライバーをインストールする
・リポジトリの追加
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
・「ソフトウェアとアップデート」の「追加のドライバー」タグを開く。。
→インストール可能なドライバーが増えている。
・「追加のドライバー」タグで、nvidia-driver-418を選び、「変更の適用」を実行。
・システムを再起動し、NVIDIA X Serer Settingを起動する。
改めて、NVIDIA X Server Settingsを起動すると、次の通り最新のドライバー418.56が、インストールされたことが確認できた。
(5)nvidia-docker2インストールの確認
ここで、改めて((2)の最後で確認したコマンドを実行し)インストールの確認をする。
$ sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
※端末の文字列をコピペは、改行位置の関係で見ずらいので、スクリーンショットに貼り替えた。
次は、TensorFlowコンテナを実行したい。
複数GPUが実装されている環境下で、GPU(より高機能なGTX Titan)を指定して実行させるにはどうするのか?も含めて確かめていきたい。