前提
- Ubuntu 18.04にCUDAとnvidia-docker2をインストールする手順を説明します。
- 2018年6月6日現在、安定した環境が必要ならUbuntu16.04を使った方が良いと思います。
環境
- OS: Ubuntu 18.04
- GPU: GeForce GTX 1080
CUDAもdockerもnvidia-driverも入っていない状態からインストールしていく前提で書いていきます。
CUDA 9.1のインストール
nvidia-docker2のrequirementsにはCUDA 9.1までしか記載が無いので、CUDA 9.1をインストールしてみます。
https://github.com/nvidia/nvidia-docker/wiki/CUDA#requirements
手順はこの記事を参考にさせていただきました。
https://qiita.com/yukoba/items/4733e8602fa4acabcc35
準備
$ sudo apt update
$ sudo apt upgrade
CUDAとnvidia-driveのインストール
$ sudo apt install nvidia-cuda-toolkit nvidia-driver-390
$ sudo reboot
nvidia-smiで動作確認
$ nvidia-smi
Wed Jun 6 12:51:28 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48 Driver Version: 390.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1080 Off | 00000000:01:00.0 On | N/A |
| 27% 38C P8 7W / 180W | 707MiB / 8118MiB | 2% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1161 G /usr/lib/xorg/Xorg 40MiB |
| 0 1232 G /usr/bin/gnome-shell 49MiB |
| 0 1490 G /usr/lib/xorg/Xorg 349MiB |
| 0 1617 G /usr/bin/gnome-shell 170MiB |
| 0 2242 G ...-token=D43C41A55B86FF654DC9ACF0F3A5BF30 92MiB |
+-----------------------------------------------------------------------------+
hostマシン上でCUDAが動いた事を確認できました。
nvidia-dockerのインストール
公式に書いてある手順でインストールします。
# Add the package repositories
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
# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
nvidia-dockerの動作確認
$ sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
Unable to find image 'nvidia/cuda:latest' locally
latest: Pulling from nvidia/cuda
b234f539f7a1: Pull complete
55172d420b43: Pull complete
5ba5bbeb6b91: Pull complete
43ae2841ad7a: Pull complete
f6c9c6de4190: Pull complete
0555b970f65d: Pull complete
864a2d44e3fa: Pull complete
b6ff28d6c105: Pull complete
0c3c54b51c1e: Pull complete
570d460dc4c7: Pull complete
Digest: sha256:2cc38b464d4e0ca8d04a512061f56b7931036c6ae2c9520a39bbd47f943d2295
Status: Downloaded newer image for nvidia/cuda:latest
Wed Jun 6 04:00:20 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48 Driver Version: 390.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1080 Off | 00000000:01:00.0 On | N/A |
| 27% 37C P8 7W / 180W | 740MiB / 8118MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
nvidia-docker上で動作するコンテナからCUDAにアクセスできる事が確認できました。
dockerのバージョン
nvidia-docker2インストール時にdokcer本体もインストールされています。
$ docker --version
Docker version 17.12.1-ce, build 7390fc6
コンテナ上でCUDAが使えるようになりました。
おまけ: Ubuntu 18.04にdocker-composeを入れて、nvidia-docker2のコンテナを管理したい場合
apt install docker-compose
でインストールできるdocker-composeだとバージョンが古くてruntimeオプションに対応していません。
この手順で新しいバージョンのdocker-composeがインストール出来ます。