Edited at

Ubuntu 16.04 に nvidia-docker を install

More than 1 year has passed since last update.

まっさらな Ubuntu 16.04 で「ディープラーニングの勉強はじめるぞ〜」な環境を作りたかったので、nvidia-docker を入れました。これはそのときのメモです。

nvidia-docker を入れる前に以下を install しました。


  • openssh-server, zsh (個人的な趣味なので、入れる必要は全くない)

  • docker

  • nvidia-driver


openssh & zsh を install

openssh

$ sudo apt-get install openssh-server

zsh

$ sudo apt-get install zsh

$ which zsh
$ chsh


docker を install

公式に従っていろいろインストール。

$ sudo apt-get install \

apt-transport-https \
ca-certificates \
curl \
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"

$ sudo add-apt-repository \
"deb [arch=armhf] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

$ sudo apt-get update

# sudo apt-get install docker-ce

# 確認
$ sudo docker run hello-world

公式に従って、docker コマンドを sudo なしで実行できるように、自動で docker コマンドが最初っから使えるようにするように。

$ sudo groupadd docker

$ sudo usermod -aG docker $USER

exit & login

$ docker run hello-world
$ sudo systemctl enable docker


nvidia-driver を install

公式で自分の GPU にあった nvidia-driver のバージョンを検索する。わたしの GTX 960 の場合は "バージョン:375.39" だったので、それにあった nvidia driver を install。

$ sudo add-apt-repository ppa:xorg-edgers/ppa

$ sudo apt-get update
$ apt-cache search 'nvidia-[0-9]+$'

ここで出てきるリストの中から検索したバージョンを選ぶ。

$ sudo apt-get install nvidia-375
$ sudo reboot
$ nvidia-smi


nvidia-docker を install

公式に従ってやる。


(念のため、)nvidia-docker に事前に必要なものの確認方法

必要なバージョンが入ってなかったら入れたほうがいい。

(1) GNU/Linux x86_64 with kernel version > 3.10

$ cat /proc/version

(2) Docker >= 1.9 (official docker-engine only)

$ docker version

(3) NVIDIA GPU with Architecture > Fermi (2.1)

$ lspci | grep VGA

(4) NVIDIA drivers >= 340.29 with binary nvidia-modprobe

$ nvidia-smi


インストール

$ wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb

$ sudo dpkg -i /tmp/nvidia-docker_1.0.1-1_amd64.deb
$ sudo apt-get install nvidia-modprobe
$ sudo docker volume create -d nvidia-docker --name nvidia_driver_375.39
$ sudo docker volume ls
DRIVER VOLUME NAME
nvidia-docker nvidia_driver_375.39

# ふつうの docker コマンドだと使えない nvidia-smi コマンドが nvidia-docker がちゃんと install されたら、 docker 内から使えるか?を確認。
$ nvidia-docker run nvidia/cuda nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39 Driver Version: 375.39 |
|-------------------------------+----------------------+----------------------+
| 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 970 Off | 0000:01:00.0 On | N/A |
| 25% 30C P8 19W / 151W | 242MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+

nvidia-docker volume setupする的なことがいろんな記事に書いてあるが、最近の nvidia-docker にはそんなコマンドがないような気がしてハマった