ubuntu14.04 LTS + CUDA + cuDNN + Chainer インストールメモ

ubuntu14.04 LTS + CUDA + cuDNN + Chainer インストールメモ

OSの選定

インストールガイド — Chainer 1.18.0 ドキュメント

chainer 公式のインストールガイドに、We recommend these platforms. Ubuntu 14.04 LTS 64bit と、有るので、従います。

LTS は Long Term Support.

ハードウェアの選定

GPU

ディープラーニングだから特別重要、、、と言えばGPU.

CUDA を使用したいので、Nvidiaのチップが入っているやつにしたい。

Radeon も CUDA を利用できたりするらしいですが、動作確認が取れている組み合わせでも、かなりインストールで苦しむので、試す気になれない。

CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIAが提供するGPU向けのC言語統合開発環境であり、コンパイラ (nvcc) やライブラリなどから構成されている。

スペックメモ

Chip Architecture CUDAコア メモリ 実売 コメント
TITAN X Pascal 3584 12 GB 18万 日本未発売?
冷却を工夫しないと性能が出ない?
GTX1080 Pascal 2560 8 GB 6~12万 簡易水冷バージョンも出ている
GTX1060 Pascal 1280 6 GB 3~4.5万
GTX1050 Pascal 640 2 GB 1~2万
GTX 950 Maxwell 768 2 GB 1.5~3万

補助電源は、6pin, 8pin 1つだったり、2つだったり、ミックスだったりする。

RAM

曰く、32G では不足するとのこと。。。

電源

GPU の事を考えると、最低でも 400w

OS のインストール

ubuntu14,04 を DVD に焼いて、インストールします。

初期設定

パッケージのアップデート

$ sudo apt-get update
$ sudo apt-get upgrade

ssh をインストール自動起動設定して、ipを固定、nameサーバー設定

$ sudo apt-get install ssh
$ service ssh start
$ sudo apt-get install sysv-rc-conf
$ sudo sysv-rc-conf ssh on
$ sudo sysv-rc-conf --list ssh
ssh          2:on       3:on    4:on    5:on

$ sudo cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.100.50
netmask 255.255.255.0
gateway 192.168.100.1

$ cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.8.8
$ sudo reboot

ドライバとCUDAのインストール

Ubuntu14.04にNVIDIAドライバーをインストールしたらGUIログインできなくなったときの話 - Qiita

こちらにならいました。

ドライバと CUDA を入れる

先に、古いドライバを確認し、削除します。その後、公式サイトから最新の物をダウンロードして入れます。

$ dpkg -l | grep nvidia
$ dpkg -l | grep cuda

$ sudo apt-get --purge remove nvidia-*
$ sudo apt-get --purge remove cuda-*

※私の場合、初期設定では nvidia のドライバーと cuda は入っていませんでした。

グラフィックボードのドライバとCUDAを入れる

取得。

NVIDIAドライバダウンロード

NVIDIA-Linux-x86_64-375.39.runでした。

CUDA 8.0 Downloads | NVIDIA Developer

cuda_8.0.61_375.26_linux.runでした。

入れる

$ chmod a+x NVIDIA-Linux-x86_64-375.39.run
$ chmod a+x cuda_8.0.61_375.26_linux.run

$ sudo service lightdm stop

openglなしでNVIDIAドライバをインストール

$ sudo ./NVIDIA-Linux-x86_64-375.39.run --no-opengl-files

CUDAをドライバインストールなしでインストール

$ sudo ./cuda_8.0.61_375.26_linux.run --silent --no-opengl-libs --toolkit

nvidia ドライバ動作確認

$ nvidia-smi 
Tue Mar 14 10:36:45 2017       
+-----------------------------------------------------------------------------+
| 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 106...  Off  | 0000:06:00.0     Off |                  N/A |
|  0%   36C    P0    25W / 120W |      0MiB /  6071MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

cuda 動作確認

toolkit をインストール して、nvcc -V

$ sudo apt-get install nvidia-cuda-toolkit

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2013 NVIDIA Corporation
Built on Wed_Jul_17_18:36:13_PDT_2013
Cuda compilation tools, release 5.5, V5.5.0
環境変数追加
$ echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
$ echo 'export CUDA_PATH=/usr/local/cuda' >> ~/.bashrc
$ source ~/.bashrc

chainer 依存ライブラリ等を入れておく

NumPy 1.9, 1.10, 1.11 pip python2.7-dev

$ sudo apt-get install g++
$ sudo apt-get install python-numpy
$ sudo apt-get install python-pip
$ sudo apt-get install python2.7-dev

Six 1.9

cuDNN インストール

公式サイト曰く、

cuDNN support cuDNN v2, v3, v4, v5, v5.1

なので、

https://developer.nvidia.com/rdp/cudnn-download

cuDNN v5.1 Library for Linux から、 cudnn-8.0-linux-x64-v5.1.tgz を取得

$ tar -zxf cudnn-8.0-linux-x64-v5.1.tgz
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

Pathを通す。

$ echo 'export CPATH=/usr/local/cuda/include:$CPATH' >> ~/.bashrc
$ echo 'export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH' >> ~/.bashrc

Pathの通っている場所に、libcuda.so をシンボリックリンクさせる

$ find /usr/local/ -name libcuda.so
/usr/local/cuda-8.0/lib64/stubs/libcuda.so

$ cd /usr/local/cuda/lib64
$ sudo ln -sv /usr/local/cuda-8.0/lib64/stubs/libcuda.so .

chainer インストール

ディレクトリ作るのに permission denied でたので、sudo してます。
いいのかな?これで。

$ sudo PATH=/usr/local/cuda/bin:$PATH LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH CUDA_PATH=/usr/local/cuda CPATH=/usr/local/cuda/include:$CPATH  LIBRARY_PATH=/usr/local/cuda/lib64 pip install chainer

バージョンと動作の確認

$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import chainer
>>> chainer.__version__
'1.21.0'
>>> import cupy
>>> import cupy.cudnn