桜朔

さくらさく

                                      スポンサーリンク

ChainerでDeep Learning (1)

こんにちは,櫻井朔@hajimesakuraiです.

メインのCUDAマシンにはWindowsが入っているので,VMWare等でLinux入れてGPUにアクセスできるのかなと思って調べてみたら,どうもできないらしい.いや,できるらしい.と,どうも情報が不明確なのでWindowsマシンにはおとなしくChainerを入れることにしました.

Pythonをインストール

とりあえずPythonがないと始まらないので,公式ページからダウンロードしてインストールします. 自分が入れていたバージョンも古かったので,2.7.10に更新しました.

コマンドプロンプトを立ち上げて,pythonと打ってみてバージョンを確認します.

>python
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

(あ,Enthought入れてたのに消えてしまった.)

pipで必要なパッケージをインストール

2.7.9以降はデフォルトでpipが同梱されるはずなので,pip自体のインストールは不要.GitVisual C++ Compiler for Python 2.7は事前にインストールしておく必要があります.

Enthoughtを消してしまったので,いつもお世話になっているUnofficial Windows Binaries for Python Extension Packagesから,numpy‑1.9.2+mkl‑cp27‑none‑win_amd64.whlとscipy‑0.16.0‑cp27‑none‑win_amd64.whlをダウンロード. ついでにopencv_python‑2.4.12‑cp27‑none‑win_amd64.whlとpycuda‑2014.1+cuda6514‑cp27‑none‑win_amd64.whl(CUDA7.0の場合はpycuda‑2015.1.3+cuda7028‑cp27‑none‑win_amd64.whl),scikit_learn‑0.16.1‑cp27‑none‑win_amd64.whlもダウンロードしておきます.

デフォルトでpipまずはpipをupgradeして,

pip install --upgrade pip
(アクセス権のエラーが出ても大丈夫な様子)
>pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whl
>pip install scipy-0.16.0-cp27-none-win_amd64.whl
>pip install pycuda-2014.1+cuda6514-cp27-none-win_amd64.whl
>pip install opencv_python-2.4.12-cp27-none-win_amd64.whl
>pip install scikit_learn-0.16.1-cp27-none-win_amd64.whl

であっという間に完了.

Chainerのインストール

Gitが動くことを確認して,コマンドプロンプトでまずクローンを作成.

>git clone https://github.com/pfnet/chainer.git

"chainer"というディレクトリが出来上がるので,移動してsetup.pyをインストール.

>cd chainer
>python setup.py install
...
Using c:\python27\lib\site-packages
Finished processing dependencies for chainer==1.2.0

これでChainerのインストールは完了です.

サンプルを実行

手書き文字認識のMNISTを実行する場合,

>python examples\mnist\train_mnist.py --gpu 0

とします(デバイスの番号はnvidia-smi.exeかdeviceQuery.exeで確認しましょう).するとエラーが出た.

load MNIST dataset
Traceback (most recent call last):
  File "examples\mnist\train_mnist.py", line 48, in <module>
    cuda.init(args.gpu)
  File "build\bdist.win-amd64\egg\chainer\cuda.py", line 191, in init
  File "build\bdist.win-amd64\egg\chainer\cuda.py", line 156, in _check_cuda_available
RuntimeError: CUDA environment is not correctly set up.
    Use `pip install -U chainer-cuda-deps` to install libraries.
    Required package is not found: {}The 'Mako' distribution was not found and is required by the application

とりあえず言われたとおり,

>pip install -U chainer-cuda-deps

を実行してみる...が,

Command "C:\Python27\python.exe -c "import setuptools, tokenize;__file__='c:\\users\\saku\\appdata\\local\\temp\\pip-build-rblso5\\pycuda\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\saku\appdata\local\temp\pip-ztrxrf-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\users\saku\appdata\local\temp\pip-build-rblso5\pycuda

というエラーメッセージが出て状況は変わらず.調べても原因がよく分からないので,CUDA7.0にアップデートすることにしました.

>pip uninstall pycuda-2014.1+cuda6514-cp27-none-win_amd64.whl
>pip install pycuda-2015.1.3+cuda7028-cp27-none-win_amd64.whl
>pip install chainer-cuda-deps

すると今度は正常にインストールされました.環境変数に"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin"を追加して,再度train_mnist.pyを試すと,今度は

RuntimeError: CUDA package found but could not be imported: DLL load failed: 指定されたモジュールが見つかりません。

と表示.これは単にOSを再起動してないからなので,再起動して再度実行したら,警告が大量に出たものの無事動作しました.

('epoch', 20)
train mean loss=0.044669792671, accuracy=0.986616635323
test  mean loss=0.0590288019222, accuracy=0.985799974203

CPU onlyでの速度と比較するとTesla K20で約10~15倍といったところでした.

それでは.

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)