[[labs.beatcraft.com]]~
[[Deep Learning]]~

#contents

*Chainer1.5の導入 [#e6341151]
本文書はChainer1.5の導入で躓いた点などについてまとめています。

**構成 [#g32f0eb7]
以下の構成の機器に、これまでは1.3.0からアップデートの都度、1.4.2まで更新を行い試用を続けていました。

ハードウェア構成
 ・CPU : Corei7 3770
 ・Memory : 32GB
 ・GPU1(表示用) : NVIDIA GeForce GT730
 ・GPU2(CUDA用) : NVIDIA Tesla K20c

ソフトウェア構成
 ・OS : Ubuntu 14.04.1 LTS
 ・Python : 2.7
 ・CUDA : 6.5

**導入 [#l80f650c]
 当初1.5.0リリース後にsudo pip install --upgrade chainerでアップグレードしようとした際にはMemoryError等で失敗していましたが、~
 その後リリースされた1.5.1で改善されています。同バージョンのリリースと同時にインストールガイドが公開されたので、そちらを参考~
 にしつつ以下の手順でクリーンインストールを実施しました(以下sudoを省略しています)。

 参考:Chainer Install Guide : http://docs.chainer.org/en/stable/install.html

***1) chainer-cuda-depsのアンインストール [#a706db24]
 本来1.4系でCuPYを利用するようになった段階で不要な物でしたが、入れたままになっていたので念のためアンインストールを行います。

 pip uninstall chainer-cuda-deps

***2) pipのアップグレード [#ze1f1f57]
 同様にchainerのアンインストールを行おうとしたところ、pipがchainerを発見出来ない現象が起きたため、pipをアップグレードしました。

 pip install --upgrade pip

***3) chainerのアンインストール [#k5bfa6b6]
 インストールフォルダを見ると複数バージョンのパッケージが残っていたため、以下のアンインストール手順を二度繰り返しました。

 pip uninstall chainer

***4) libhdf5のインストール [#d3245e20]
 インストールガイドではgccと一緒にインストールしていますが、本環境では最新のg++導入済みだったため今回はlibhdf5のみ~
 インストールを行いました。

 apt-get install libhdf5-dev

***5) chainerのインストール [#zb943f05]
 ここで改めてchainerをインストールします。3)でアンインストールしている(クリーンインストールとなる) ため、~
 --upgradeは付けていません。

 pip install chainer

**ベンチマーク [#za2a8349]
以上でChainer 1.5.1のインストールに成功したので、MNISTサンプルの学習にかかる時間を time -pで計測し、簡易的なベンチマークを~
取りました。

 time -p pythone train_mnist.py -g 0
 ※-g 0 はGPU使用オプションです。

こちらの結果は

 real 65.34
 user 61.02
 sys 2.66

となりました。以前1.4.2で計測した際はreal 88秒、user 85秒程度かかっていたため、20秒ほど速くなっています。

**cuDNNの有効化 [#be379e33]
ひとまずこれで完了なのですが、上記実行時にcuDNNが有効化されていない旨の警告が表示されています。cuDNNはNVDIAが無償公開している~
Newral Network用のライブラリで、省メモリで高速であるとされています。

cuDNNはNVIDIAの開発者サイト(https://developer.nvidia.com/cudnn)で入手出来ますが、同サイトへの登録と承認が必要です。~
簡単なアンケート(使用言語やライブラリ、利用目的など)に回答して登録を行ったあと、数時間から数日後にNVIDIAから承認メールが~
届くとダウンロードが可能になります。
簡単なアンケート(使用言語やライブラリ、利用目的など)に回答して登録を行ったあと、NVIDIAから承認メールが届くとダウンロードが~
可能になります。承認には数時間から数日かかるようですが、今回は二時間ほどでメールが届きました。

登録時と同じようなアンケートに回答すると、いくつかのバージョンから選択式でcuDNNをダウンロード出来るようになっています。~
2015年12月現在 v4まで公開されていますが、Chainerがサポートしているのはv2及びv3となっています。使用しているCUDAのバージョンが~
6.5ならv2、7.0ならv3を選択します。今回はCUDA6.5を使用している環境のため、v2をダウンロードしました。

cuDNNにはインストーラなどは付属しておらず、ヘッダファイルとライブラリがそのまま入っています。今回ダウンロードしたLinux版 v2~
の場合、以下のような構成になっていました。

 $ tar zxvf cudnn-6.5-linux-x64-v2.tgz
 cudnn-6.5-linux-x64-v2/
 cudnn-6.5-linux-x64-v2/INSTALL.txt
 cudnn-6.5-linux-x64-v2/CUDNN_License.pdf
 cudnn-6.5-linux-x64-v2/cudnn.h
 cudnn-6.5-linux-x64-v2/libcudnn_static.a
 cudnn-6.5-linux-x64-v2/libcudnn.so.6.5
 cudnn-6.5-linux-x64-v2/libcudnn.so.6.5.48
 cudnn-6.5-linux-x64-v2/libcudnn.so

これらをCUDAインストールフォルダにコピーします。今回の環境では/usr/local/cudaにCUDAがセットアップされているため、以下の~
ようにしました。

 cp cudnn.h /usr/local/cuda/include/
 cp lib* /usr/local/cuda/lib64/

以上でcuDNNのインストールは完了です。

ChainerでcuDNNを有効にするには再インストールが必要になるため、手順3)、5)を再度実行しクリーンインストールを行います。

 pip uninstall chainer
 pip install chainer

これでcuDNNを有効化したChainer1.5.1がセットアップ出来ました。再度ベンチマークをとってみると、今度は先の警告は表示されず、結果は

 real 64.97
 user 60.91
 sys 2.65

となりました。若干の向上は見られますが、測定誤差の範囲です。もう少し規模の大きなデータで試すと有意な差があらわれるのかもしれません。

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS