Deep Learning: chainer環境の構築 on 64bit Windows
参考情報
公式QuickStart: Chainer: A flexible framework of neural networks
Python, gitのインストール
chainerのクローン作成
SourceTree上でクローンを作成。
- "新規/クローンを作成する"をクリック
- "元のパス/URL"に https://github.com/pfnet/chainer を入力
- "保存先のパス"に保存したいディレクトリを指定 (ここではD:\chainer)
- "クローン"をクリック
コマンドラインで以下を実行
C:\Users\****>d: D:\>cd chainer D:\chainer>python setup.py install
Microsoft Visual C++ が無いって怒られる。表示されたURLにアクセスしてインストール。
もう一度
D:\chainer>python setup.py install (snip) Installed d:\python27\lib\site-packages\numpy-1.9.2-py2.7-win-amd64.egg Finished processing dependencies for chainer==1.0.0
終わるまでに10分弱かかる。必要なモジュールも全部入れてくれる・・・と思ったけどそうでも無かった。追加で以下のモジュールをインストールする。
- Python Extension Packages for Windows - Christoph Gohlke
scipy‑0.16.0b2‑cp27‑none‑win_amd64.whl
numpy‑1.9.2+mkl‑cp27‑none‑win_amd64.whl- pip でインストール。pipの新しいバージョンがあるといわれたのでついでにupgradeしておく。
D:\>pip install --upgrade pip D:\>pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whl
D:\>pip install scipy-0.16.0b2-cp27-none-win_amd64.whl
exampleの実行
chainerについてくるexampleを実行する。sklearn.datasetsモジュールが必要といわれるのでscikit-learnをインストール。
D:\chainer>pip install scikit-learn Collecting scikit-learn Downloading scikit_learn-0.16.1-cp27-none-win_amd64.whl (3.1MB) 100% |################################| 3.1MB 119kB/s Installing collected packages: scikit-learn Successfully installed scikit-learn-0.16.1
準備が整ったので実行する。
D:\chainer>python examples\mnist\train_mnist.py
裏でデータをダウンロードしているので初回は少し時間がかかる。"epoch 1"と表示される前に間違ってキャンセルすると、"IOError: could not read bytes"とエラーが出る。 中途半端なキャッシュデータが残っているので削除する。
C:\Users\****\scikit_learn_data\mldata\mnist-original.mat
2回目を実行すると、Core 2 Quad (Q9650)で1410秒程度、Core i5-4590で643秒程度だった。
GPU対応
グラフィックボードがかなり古いけど一応CUDA使えるので対応させる。
まずはCUDAをインストール
CUDA 7 Downloads または CUDA Toolkit 6.5- Python Extension Packages for Windows - Christoph Gohlke pycuda‑2015.1+cuda7028‑cp27‑none‑win_amd64.whl (CUDA 7.0の場合)
または
pycuda‑2014.1+cuda6514‑cp27‑none‑win_amd64.whl (CUDA 6.5の場合)D:\chainer>pip install pycuda-2015.1+cuda7028-cp27-none-win_amd64.whl または D:\chainer>pip install pycuda-2014.1+cuda6514-cp27-none-win_amd64.whl- 依存パッケージをインストール
D:\chainer>pip install chainer-cuda-deps- example実行
D:\chainer>python examples\mnist\train_mnist.py --gpu 0nvccのエラーが出る場合は このあたりを参照。
こちらの初回実行はnvccでのコンパイルなどの処理が入るので、"epoch 1"が表示されてから一度キャンセル。
実行時間は8800GT(古い!)で375秒程度だった。ちなみにCUDA 6.5までしか対応しておらず、間違ってCUDA 7.0を入れるといろいろとエラーが出る。
[7/29追記] CUDA 7 対応
8800GTがお亡くなりになったので、750Tiを購入。CUDA6.5からCUDA7の環境へ更新する。
CUDAはここから: CUDA 7 Downloads
あとは、CUDA6.5用のPyCUDAを消して、CUDA7用をインストールする。バージョン2015.1.2が出ていたのでそれを使う。 Python Extension Packages for Windows - Christoph Gohlke
D:\chainer>pip uninstall pycuda-2014.1+cuda6514-cp27-none-win_amd64.whl D:\chainer>pip install pycuda-2015.1.2+cuda7028-cp27-none-win_amd64.whl D:\chainer>pip install chainer-cuda-deps
実行!
D:\chainer>python examples\mnist\train_mnist.py --gpu 0
CUDA7でリコンパイルされるので初回は遅い。2回目を実行すると192秒で、8800GTの約半分に。
NVIDIA Inspector で見ていると、GPU Loadが大体40~45%までしか上がらない。
元々そのくらいしか出ないのか、まだ本気出していないのかは調べてない。