LoginSignup
8
11

More than 5 years have passed since last update.

nvidia-dockerを導入して手軽に深層学習環境を作る

Last updated at Posted at 2017-01-16

Ubuntu14.04で深層学習を行うべく、NVIDIAドライバを入れたり、CUDAを入れたりとしていましたが、事あるごとにトラブルに見舞われていました。

ubuntuにてNVIDIAドライバが認識されない
http://qiita.com/moroku0519/items/234f1c53a3187e32bae5

UbuntuでNICを認識しない場合の対処法
http://qiita.com/moroku0519/items/06ac708f08d9570f2b93

最終的にCUDAがうまくインストールできなくなり、OSを再インストールしたのですが、ついでに16.04アップグレードしました。
その際、以前nvidia-docker使うといいよと教えてもらったことがあるので、試しに導入することにしました。

Dockerとは

まず、Dockerについて整理します。
Dockerはいわゆるコンテナという軽量な仮想環境です。
仮想環境というと、VertualBoxやVMWareなどがありますが、より軽量なので起動が早いのが特徴です。
仮想環境なのでうまくいかなくなったら気軽に破棄してやり直しが効きます。
(詳しいことは割愛します)

nvidia-dockerとは

dockerは仮想環境ですが、ゲストOSからホストOSのGPUにアクセスできるようにしてくれるのがnvidia-dockerです。
つまり、仮想環境下でGPUが利用できるので、nvidiaドライバ関係でx serverが起動しなくなってしまった!というトラブルが起きても、またイメージを引っ張ってきてやり直すことができます。(そもそもCUIなので関係ないですが)

インストール方法

GitHubに書いてあるとおりです。
https://github.com/NVIDIA/nvidia-docker

# Install nvidia-docker and nvidia-docker-plugin
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.0-rc.3/nvidia-docker_1.0.0.rc.3-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

その後、次のコマンドで動作確認

Using default tag: latest
latest: Pulling from nvidia/cuda
16da43b30d89: Pull complete 
1840843dafed: Pull complete 
91246eb75b7d: Pull complete 
7faa681b41d7: Pull complete 
97b84c64d426: Pull complete 
c9e83805074f: Pull complete 
d6df64031bb5: Pull complete 
6708c6ed44a1: Pull complete 
e18866fd24c5: Pull complete 
13a64a148a09: Pull complete 
Digest: sha256:ba934c84905ac5f7f678cbe8dc359996e3897f9618028631b9da2f066da74e31
Status: Downloaded newer image for nvidia/cuda:latest
Mon Jan 16 10:22:12 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| 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 750 Ti  Off  | 0000:01:00.0      On |                  N/A |
| 30%   25C    P8     1W /  38W |    287MiB /  1997MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+

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

なお、ホスト側にはNVIDIAドライバとCUDAを予めインストールしておく必要があります。

※訂正(2016/01/19)
入れておくのはドライバとDockerのみで,CUDAはコンテナで管理します.(コンテナごとにCUDAやcuDNNのバージョンを管理できるのが売りなのにホストにCUDAが入っている前提なのはおかしいですね,普通に考えて)
ちなみにNVIDIAドライバだけは仕様なのでホストに入れなければいけません.

以上です。

参考

https://github.com/NVIDIA/nvidia-docker
http://blog.engineer.adways.net/entry/2016/09/03/012940

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11