Theano 0.8.2 がリリースされましたね:
https://groups.google.com/forum/#!topic/theano-announce/kzuECmYnXgU
Highlight:
- cuDNN v5 convolution support (cuDNN v3 isn't supported anymore)
- A few crash fix
ということなので,Theano を 0.8.0 から 0.8.2 へ,cuDNN を v4 から v5 (現時点ではまだ RC = release candidate 版)へ,それぞれアップグレードすることにしました.ちなみに,Theano 0.8.0 と cuDNN 4 - まんぼう日記 に前回の作業のメモがあります.
Theano 0.8.2 へのアップグレード
Ubuntu 14.04 LTS の場合
インストールしたマシンのスペックや環境については,Theano 0.8.0rc1(または,ignore_border は True にしよう) - まんぼう日記 とそのリンク先へどうぞ.CUDA のバージョンは 7.5 です.前( Theano 0.8.0 と cuDNN 4 - まんぼう日記 )に 0.8.0 を pip 経由でインストールしてたので,pip コマンドでアップグレードするだけ:
$ sudo pip install --upgrade --no-deps theano
$ python >>> import theano >>> theano.version.full_version '0.8.2.dev-RELEASE'
らくちん.
Mac OS X の場合
CPU only で Theano を使ってる Mac の場合です.前に 0.8.0 を MacPorts でインストールしてたので,port コマンドでアップグレードするだけ:
$ sudo port upgrade py27-theano
cuDNN v5 (RC) のインストール
上記の Ubuntu マシンに cuDNN v5 のRC版をインストールします.以下もどうぞ.
- cuDNN v3 のインストールメモ: cuDNN を入れて Theano で使ってみる - まんぼう日記
- cuDNN v4 のインストールメモ: Theano 0.8.0 と cuDNN 4 - まんぼう日記
https://developer.nvidia.com/rdp/cudnn-download にログインして,
Download cuDNN v5 Release Candidate (RC) (April, 2016), for CUDA 7.5 and later.
から cuDNN v5 Library for Linux を選択.cudnn-7.5-linux-x64-v5.0-rc.tgz というファイルがダウンロードされます.これを適当な場所に展開して,ヘッダファイルとライブラリを所定の場所へコピー.こういうことになりました.たかたかの環境では CUDA_HOME
は /usr/local/cuda です.
$ ls -l $CUDA_HOME/include/cudnn* -r--r--r-- 1 root root 99317 5月 7 14:14 /usr/local/cuda/include/cudnn.h $ ls -l $CUDA_HOME/lib64/libcudnn* lrwxrwxrwx 1 root root 13 5月 7 14:18 /usr/local/cuda/lib64/libcudnn.so -> libcudnn.so.5 lrwxrwxrwx 1 root root 17 5月 7 21:50 /usr/local/cuda/lib64/libcudnn.so.4 -> libcudnn.so.4.0.7 -rwxr-xr-x 1 root root 61453024 3月 25 17:51 /usr/local/cuda/lib64/libcudnn.so.4.0.7 lrwxrwxrwx 1 root root 17 5月 7 14:17 /usr/local/cuda/lib64/libcudnn.so.5 -> libcudnn.so.5.0.4 -rwxr-xr-x 1 root root 59823168 5月 7 14:16 /usr/local/cuda/lib64/libcudnn.so.5.0.4 -rw-r--r-- 1 root root 58734618 5月 7 14:16 /usr/local/cuda/lib64/libcudnn_static.a
v4 のライブラリを残してあるのは,↓のような事情からです.
ついでに Caffe も再インストール…
しようとしましたが,make 途中で cuDNN 関係らしきエラーを吐いて止まってしまいました.どうやら現時点では Caffe はまだ cuDNN v5 に対応してないようです.そういうわけで,上記のように v4 と v5 のライブラリを共存させることにしました.ちなみに,Ubuntu マシンに Caffe をインストール - まんぼう日記 に以前の作業メモがあります.
速くなった?
Theano 使って書いた CNN のプログラムを実行して,速くなったかどうか調べてみました.
MNIST の学習
まずは,Theano では allow_gc を False にしよう - まんぼう日記 で使ったプログラムを動かしてみました.詳しい実験条件はそちらを見てもらうとして,結論は,「この条件では,Theano 0.8.0 & cuDNN v4 から 0.8.2 & v5 に移行しても計算時間は変わらない」でした.
VGG-16の場合
次に,Caffe の学習済みネットワークを Theano に移して動かす (2) - まんぼう日記 で使ったVGG-16(Models used by the VGG team in ILSVRC-2014 の 16-layer のモデル)を動かしてみました.Theano 0.8.0 & cuDNN v4 では
Caffe で動かすプログラム ex160328_Caffe.py での結果は次の通り:
- top-1 error rate: 29.03%, top-5 error rate: 10.118%
- 計算時間 10分,GPU メモリ使用量 1376MiB
Theano に移して動かすプログラム ex160328_Theano.py での結果は次の通り:
- top-1 error rate: 29.03%, top-5 error rate: 10.118%
- 計算時間 18分,GPU メモリ使用量 2984MiB
という結果でしたが,Theano 0.8.2 & cuDNN v5 の下で ex160328_Theano.py を実行すると,721秒 = 12分 となりました.おお.
とまあ,こんな感じです.