TASさんのメモ帳

TAS動画作成などをしております。動画一覧: http://www.nicovideo.jp/mylist/18908465

Deep Learning: chainer環境の構築 on 64bit Windows

参考情報

公式QuickStart: Chainer: A flexible framework of neural networks

DeepLearningライブラリのChainerがすごい、らしい - cvl-robot's diary

Python, gitのインストール

chainerのクローン作成

SourceTree上でクローンを作成。

  1. "新規/クローンを作成する"をクリック
  2. "元のパス/URL"に https://github.com/pfnet/chainer を入力
  3. "保存先のパス"に保存したいディレクトリを指定 (ここではD:\chainer)
  4. "クローン"をクリック

コマンドラインで以下を実行

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分弱かかる。必要なモジュールも全部入れてくれる・・・と思ったけどそうでも無かった。追加で以下のモジュールをインストールする。

  1. 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
  2. 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使えるので対応させる。

  1. まずはCUDAをインストール
    CUDA 7 Downloads または CUDA Toolkit 6.5

  2. 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
  3. 依存パッケージをインストール
    D:\chainer>pip install chainer-cuda-deps
  4. example実行
    D:\chainer>python examples\mnist\train_mnist.py --gpu 0
    
    nvccのエラーが出る場合は このあたりを参照。

こちらの初回実行は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%までしか上がらない。
元々そのくらいしか出ないのか、まだ本気出していないのかは調べてない。