chainerセットアップ for windows

2017.05.22

chainer でディープラーニング

chainerとはディープラーニング(深層学習)を行うためのpythonのライブラリのひとつです。
ここ数年多方面で盛り上がりを見せているディープラーニングですが、ディープラーニングのためのライブラリには有名なものがいくつか存在しています。
今回はその中のひとつのchainerのセットアップをしてみようと思います。今回はwindowsPCで行いますが、ディープラーニングを行ううえではlinuxが推奨されている場合が多いです。

人工知能(AI)などといわれると感情を持ったロボットなどを想起しがちですが、画像に写っている物体を識別したり、人が発する言葉を文字化したりといったものも機械学習の成果の例です。
動画(カメラの入力など)も画像の集合体であると考えればリアルタイムで処理することが可能なので、うまく扱えられればインタラクティブコンテンツなどへの汎用性はとても高いと思われます。

それでは早速はじめてみます。


準備物

PC(64bit版のwindowsがインストールされたもの)
NVIDIA製のGPU(GPUを使って計算したい場合(多くの場合、GPUを使うと学習速度が格段に速くなります))


pythonのセットアップ

ディープラーニングで使用される言語はc++、Java、pythonなどがありますが、今回はディープラーニング用途ではおそらく一番使われているであろうpythonを使用します。
pythonには実装やパッケージがいくつかありますが、今回はanacondaというパッケージをインストールします。(今後使用するライブラリがすでに多く含まれているため)

またpythonには今後もアップデートが予定されているpython3系とすでにアップデートがとまっているpython2.7が存在します。
今回はpython3版のanacondaをインストールします。
(2017/5/15現在最新版のanaconda3-4.3.1だとこの後の工程で不具合が生じる場合があるようです。こちらから過去のバージョンをインストールしてください)


コンパイラの準備

chainerではインストール時にcythonを使うためc/c++コンパイラが必要になります。
ダウンロードページからvisual studio community 2015をインストールします。
インストール時の項目選択でVC++にチェックを入れます。


CUDAのインストール(GPUを使う場合)

CUDAをインストールすることでGPUの使用が可能になります。
ダウンロードページからCUDA Toolkitをインストールします。


cuDNNをインストール。(オプション)

cuDNNは学習速度を上げるためのCUDAのオプションライブラリです。
ダウンロードページからユーザー登録をしてダウンロードします。
解凍したフォルダの中身をC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0の中のそれぞれ対応するフォルダ内にコピーします。

環境変数の設定

環境変数「PATH」に以下のパスを追加します。

さらに環境変数「INCLUDE」に以下のパスを追加します。

 

chainerをインストール

コマンドプロンプトにpip install chainer –no-cache-dir -vvvvを入力し実行。
ここでエラーがないかしっかり見張っておきます。
(私はここで引っかかって二晩費やしました。windows creators updateをインストールしたらなぜかうまくいきました。)

 

確認

コマンドプロンプトにてpythonを入力、実行してライブラリがインポートできるかテストしてみます。
import chainer (chainerがインストールされているかテスト)
import cupy (cupy(GPU向けのnumpy的なモジュール)がインストールされているかテスト)
import cupy.cudnn (cuDNNがインストールされているかテスト)

ここでどれかだめだった場合はpip uninstall chainerで一度chainerをアンインストールしてから、もう一度pip install chainer –no-cache-dir -vvvvを入力し実行します。

 

テスト実行

mnistという手書き数字認識を学習させてみます。
こちらのgithubページからソースコードをダウンロードします。
適当なディレクトリにおいてコマンドプロンプトから、

python train_mnist.py (CPU使用時)

python train_mnist.py –gpu 0 (GPU使用時)

と入力し実行します。
下記のように実行が開始されればセットアップは無事完了です。

GPU: 0 
# unit: 1000 
# Minibatch-size: 100 
# epoch: 20 
 
epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time 
1           0.190265    0.108552              0.9418         0.9651                    13.2056 
2           0.0744211   0.0768749             0.976865       0.9765                    18.9618


最後に

これでchainerでGPUを使ったディープラーニングができるようになりました。
ディープラーニングは言葉としては一般的にはなりましたが、まだまだハードルの高い存在であることは否めないと思います。
これでいつでも使える状態になったので、今のうちに積極的に使っていければと思います。