DNN環境構築
DNN(Deep Neural Network)の環境構築を行っていきます。ハードウェア環境は下記の通りです。
CPU:i7-6700K, 4.00GHz
GPU : GeForce 980Ti 6GB
Memory : 16GB
ソフトウェア環境は下記のとおりです。
OS : Ubuntu 14.0.4.3 LTS
DLL Library : Caffe
DLL GUI Tool : Digits2
CUDA : 7.5
cuDNN : 4
まず、DNNはGPUにて計算を行うため、家庭用だと現在一番高スペックのGeForce TItan Xがメモリ(VRAM)が12GBあるため、NVIDIAでも推奨されています。ただし、かなり高額なため、今回は980Tiを使用します。980TiはTitan Xと同等とCUDA Cores数がありますが、VRAMが6GBと半分です。本当はTITAN Xを使用したかったのですが、来年度に新しいアーキテクチャのGPUがNVIDIAより発売され、そちらは現行アーキテクチャより数倍DNNにおいては性能向上するらしいので、我慢しておきます。
DNNライブラリにはCAFFEやTORCHといった、大学や企業が提供しているDNN用のライブラリがいろいろとあります(詳細はこちらを参照)。最近はchainerが簡潔にコードを書ける事もあったり、日本企業Prefered Networkの国産ライブラリという事もあり、良く使われているが、やはり昔からあるCaffeあたりがスタンダードなものになると思われる。海外の論文のコードはCaffeで書かれていることも多いので、今回はCaffeを使用。またNVIDIA GPUでの高速化とWEBでのGUI操作・WEBAPI操作の恩恵が受けられるDIGITというGUI環境がNVIDIAより提供されている。これはCaffe, Torch, Theano, chainer等のDNNライブラリがバックエンドの画像処理Deep Learning Frameworkであり、下記のような利点があります(詳細はこちらを参照)。
・データセット、ネットワークモデルの管理が行える。
・学習の様子がリアルタイムでモニターできる。
・マルチGPU機能も簡単に使える。
・ネットワークの可視化が簡単。
Caffeは公式ではLinuxのみ対応で、DIGITも中身はCaffe等のライブラリのwrapperなので、Linuxのみが対応(抜け道はあるだろうが)。LinuxとしてはUbuntuのLTSバージョンの14.0.4を用いる。Virtual Box等の仮想OSソフトを入れようとも考えたが、基本的にGPGPU(GPUによる計算)が行えないらしいので、素直に普通にインストールする(下記URL参照)。
http://micaca.hateblo.jp/entry/2015/09/07/043246
http://askubuntu.com/questions/598317/enable-cuda-gpu-working-under-vm
ubuntuをインストールすると、標準でnouveauというフリーのグラフィックドライバが入っているが、DNNで用いるCUDAを用いるためには、NVIDIAの純正のドライバを入れる必要がある。NVIDIAのドライバを入れた後に、nouveauを無効化しないと、ドライバが競合して、よくない動作をする(下記URL参照)。
http://nonbiri-tereka.hatenablog.com/entry/2015/02/12/160811
無効化し再起動した後に、”$ lsmod | grep nouveau”で、何も表示されなければ、きちんと無効化されている。
DIGITが公式にサポートしているのは、Ubuntu 14.0.4であり、このバージョンであればプリビルドされたパッケージを用いる事ができる。それ以外のOSの場合は自分でビルドする必要があり大変そう。
今回はUbuntu 14.0.4なので、Gitに公開されている手順にしたがってインストールしていく(こちらを参照)。
・CUDA インストール
$ CUDA_REPO_PKG=cuda-repo-ubuntu1404_7.5-18_amd64.deb && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/$CUDA_REPO_PKG && sudo dpkg -i $CUDA_REPO_PKG
$ sudo apt-get update
$ sudo apt-get install -y cuda
$ echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
$ sudo reboot
・Machine Learning repository(digits, caffe-nv, torch, libcudnn4, etcのパッケージ) インストール
$ ML_REPO_PKG=nvidia-machine-learning-repo_4.0-2_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG && sudo dpkg -i $ML_REPO_PKG
$ sudo apt-get update
$ apt-get install -y digits
これでインストール完了。
ブラウザで”http://localhost/”といれ、DIGITが起動される事を確認する。
上記の画面が確認できたら、チュートリアルを一度実行してみましょう(こちらを参照)。
参考URL
http://qiita.com/kendemu/items/a52e37b5e309e83a057b
https://developer.nvidia.com/deep-learning-getting-started
http://www.nvidia.com/content/events/geoInt2015/AGrey_Intro_DIGITS_GEOINT2015.pdf
http://www.nvidia.com/content/events/geoInt2015/LBrown_DL.pdf
http://www.slideshare.net/NVIDIAJapan/1018-cudnn-3digits-2cuda-75
http://jikkenyametatta.hatenablog.com/entry/2015/06/27/174910
http://www.vision.is.tohoku.ac.jp/files/1713/7125/7458/SSII_DL7.pdf
http://eiji-kb.hatenablog.com/entry/2015/07/29/164001