昨日のこの記事に引き続き、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)を指定して実行させるにはどうするのか?も含めて確かめていきたい。