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

備忘録とか日常とか

機械学習を勉強中。ベース日々練習中。

64bit windows8.1 に Theano, Pylearn2をインストール(GPU使用, Anaconda)

普段は研究室のPC(Ubuntu14.04 LTS, GTX780)を使っているが、どうにも学習に時間がかかるので、自分のPCでも軽く実験とかできたらなーと思った次第。今更すぎるが64bitのwindowsにTheanoを導入したので、手順をメモしておく。

参考元は以下
Installing CUDA 7.5 and PyCUDA on windows (for testing theano with GPU) | Weimin.Wang
TheanoをWindowsにインストール - 人工知能に関する断創録


<環境>
Windows8.1 64bit
GeForce GTX970

Anaconda Python2.7

Anacondaを使いたいので、まずはそれからインストールする
Download Anaconda now! | Continuum
上のページからpython2.7のインストーラをダウンロード。指示に従ってインストール。
64bit版を使って問題ないと思います。
必要なパッケージは大体入っているので便利だと思う。
あとwindowsのコンソールからもpipコマンドが使えるようになります。
インストール途中でpathを追加するか聞かれるので、指示通り追加しておく。

Visual Studio 2013 community

MicrosoftのおなじみVisual Studioをインストールする。
2015は対応していないので注意。2013 communityだと無償で利用できるが、Microsoftアカウントへの登録は必要。
以下からVisual Studio 2013 communityのインストーラをダウンロードしてインストール。途中でいろいろ聞かれるが、GPUで使う分には推奨設定で問題なさそう。ただし読み飛ばしてると付属で別のソフトが入れられるのでその辺は注意。
https://www.visualstudio.com/ja-jp/downloads/download-visual-studio-vs.aspx
その後「システムの詳細設定」から環境変数にpathを追加する。場所は適宜読み替えてください。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\;C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE

依存パッケージ

Anacondaを入れるとほぼ必要なものが入るそうなので、以下のコマンドで事足りる。

conda install mingw libpython

CUDA Toolkit

NVIDIAのサイトから、CUDA Toolkitをダウンロードする。
2015/11/21現在ではCUDA7.5が最新でした。
CUDA 7.5 Downloads | NVIDIA Developer
このサイトで、使用するGPUが対応しているかを確認しておく。

Git

gitを使える環境でなければインストールする。これじゃなくてもgitが使えれば何でもよい。
Git for Windows

PyCUDA

pythonでCUDA Toolkitを使うためのライブラリ。バイナリからインストールしている人が多かったので一応同じようにした。以下からバイナリをダウンロードできる。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
python2.7 64bit版のAnacondaをインストールしたので、
pycuda-2015.1.3+cuda7518-cp27-none-win_amd64.whlをダウンロードする。
その後同じディレクトリまで移動し、

pip install pycuda-2015.1.3+cuda7518-cp27-none-win_amd64.whl

としてインストール。
うまくできたか確認するには、以下のコードを使用する。

# from: http://documen.tician.de/pycuda/tutorial.html
import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import pycuda.autoinit
import numpy
a_gpu = gpuarray.to_gpu(numpy.random.randn(4,4).astype(numpy.float32))
a_doubled = (2*a_gpu).get()
print a_doubled
print a_gpu

乱数の行列が出力されればおけ。


ここからtheano↓

Theano

Theanoをインストール。以下のコマンドでcloneする

git clone git://github.com/Theano/Theano.git

その後、

cd Theano
python setup.py install

としてインストール。GPUを使う場合は、ホームディレクトリ(C:\Users\ユーザ名 とかそんなん)に.theanorc.txtファイルを作成し、以下のように記述する。

#!sh
[global]
device = gpu
floatX = float32

[nvcc]
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
# flags=-m32 # we have this hard coded for now

[blas]
ldflags =
# ldflags = -lopenblas # placeholder for openblas support


動作確認には以下のコードを使う。

from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time

vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000

rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print f.maker.fgraph.toposort()
t0 = time.time()
for i in xrange(iters):
    r = f()
t1 = time.time()
print 'Looping %d times took' % iters, t1 - t0, 'seconds'
print 'Result is', r
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print 'Used the cpu'
else:
    print 'Used the gpu'

実行して以下のように表示されれば、めでたくインストール完了。

Using gpu device 0: GeForce GTX 970 (CNMeM is disabled)
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.674000024796 seconds
Result is [1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761  1.62323296]
Used the gpu


これで自宅pcでもtheanoが使えるようになった。
二台体制で実験できるでこれ


ここまでやったのでついでにpylearn2も入れる。

pylearn2

適当な場所に

git clone git://github.com/lisa-lab/pylearn2.git

でcloneしてくる。
その後環境変数pathにpylearn2ディレクトリ内のscriptsまでのpathを追加。
できたら

cd pylearn2
python setup.py develop

とすれば完了。python立ち上げて

import pylearn2

としてエラーが出なければちゃんとできている。