読者です 読者をやめる 読者になる 読者になる

まんぼう日記

takataka's diary

Theano 0.8.0 と cuDNN 4

computer 研究

Theano 0.8.0 がリリースされましたね:

https://groups.google.com/forum/#!topic/theano-announce/yK8nPkxH6AQ

というわけで,Ubuntu マシンと Mac にインストール.ついでに,Ubuntu マシンの cuDNN のバージョンアップも.

 

 

Theano 0.8.0 のインストール

Ubuntu マシンへのインストール

Theano 0.8.0rc1(または,ignore_border は True にしよう) - まんぼう日記 のマシンが対象です.リリースのアナウンスには

For those using the bleeding edge version in the
git repository, we encourage you to update to the `rel-0.8.0` tag.

と書いてありましたが,どうやったらいいかわからへん&調べるん面倒やったんで,http://deeplearning.net/software/theano/install.html#updating-theano に従って pip コマンドを使ってアップグレード.ところが

$ sudo pip install --upgrade --no-deps theano

すると

Requirement already up-to-date: theano in /usr/local/lib/python2.7/dist-packages Cleaning up...

とか言われちゃいました.Theano 0.8.0rc1 を手動で入れてたせいかも.というわけで,一度アンインストールして再インストールという形に.

$ sudo pip uninstall theano
$ sudo pip install --upgrade --no-deps theano

無事インストールできました.

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import theano
>>> theano.version.full_version
'0.8.0.dev-RELEASE'

 

Mac へのインストール

たかたかは MacPorts を使ってますが,

$ sudo port sync
$ port info py27-theano
py27-theano @0.8.0 (python, devel)
  :

というわけで,すでに MacPorts でインストールできるようになってました.

 

手元の Mac には,Theano 0.8.0rc1(または,ignore_border は True にしよう) - まんぼう日記 に書いたのと同様の手順で 0.8.0rc1 をインストールしていたので,まずはそれを削除.setup.py を実行する際に --prefix オプションでインストール先を指定してたので,その先のファイルを rm .環境変数 PYTHONPATH の設定も不要なものを除いておきます.

 

で,あとはコマンド一発.

$ sudo port install py27-theano

 

cuDNN 4 のインストール

ついでに,上記 Ubuntu マシンの cuDNN( NVIDIA cuDNN | NVIDIA Developer )を v3 から v4 にアップグレードすることにしました.v3 のインストールの時とほとんど同じ作業なので,ここでは簡単に.cuDNN を入れて Theano で使ってみる - まんぼう日記 に v3 のインストールメモがありますので,詳しくはそちらへどうぞ.

 

cuDNN Download | NVIDIA Developer の

Download cuDNN v4 (Feb 10, 2016), for CUDA 7.0 and later.

から cuDNN v4 Library for Linux を選択.cudnn-7.0-linux-x64-v4.0-prod.tgz というファイルがダウンロードされます.適当な所に tar xzf すると,cuda というディレクトリにヘッダとライブラリのファイルが展開されます.

 

それらを適切な場所へコピー.このマシンでは /usr/local/cuda 以下に CUDA 関係のファイルが置いてあるので,次のようにしました.

$ cd cuda  (アーカイブを展開してできた cuda ディレクトリへ移動)
$ sudo cp include/cudnn.h /usr/local/cuda/include
$ sudo cp lib64/libcudnn /usr/local/cuda/lib64/
$ sudo cp lib64/libcudnn_static.a /usr/local/cuda/lib64/
$ cd /usr/local/cuda/lib64
$ sudo ln -s libcudnn.so.4.0.7 libcudnn.so.4
$ sudo rm libcudnn.so
$ sudo ln -s libcudnn.so.4 libcudnn.so

途中で rm してるのは,以前のバージョンのライブラリへのシンボリックリンクを削除して新しい方をリンクするためです.v3 まではファイル名が libcudnn.so.7.0.64 みたいに対応してる CUDA のバージョン番号を使ったものになってましたが,v4からは libcudnn.so.4.0.7 というふうに素直に cuDNN のバージョン番号を表すようになったみたいですね.