chainer でGPUを利用するメモ(Windows 10)
Chainerによる畳み込みニューラルネットワークの実装 - 人工知能に関する断創録
この記事に載っているコードを試してみる。
Windows 10で試した結果。
chainerは、Pycharmからpipでインストールできた。
pycudaインストール(その1)
pycudaは、Pycharmのpipでやっても、コマンドラインからやってもインストールに失敗した。
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -DBOOST_PYTHON_SOURCE=1 -DHAVE_CURAND=1 -DPYGPU_PACKAGE=pycuda -DBOOST_THREAD_DONT_USE_CHRONO=1 -DPYGPU_PYCUDA=1 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION=1 -DBOOST_THREAD_BUILD_DLL=1 -Dboost=pycudaboost -DBOOST_ALL_NO_LIB=1 -Isrc/cpp -Ibpl-subset/bpl_subset -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tpsrc/cpp/cuda.cpp /Fobuild\temp.win32-2.7\Release\src/cpp/cuda.obj cuda.cpp c:\users\aaaaaa\appdata\local\temp\pycharm-packaging1634411973545365466.tmp\pycuda\src\cpp\cuda.hpp(14) : fatal error C1083: include ファイルを開けません。'cuda.h':No such file or directory error: command '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\cl.exe"' failed with exit status 2
cuda.hがないというエラー。これはCUDA Toolkitを入れていないからっぽいので、インストールする。
CUDA Toolkit
NVIDIAのウェブサイトから、CUDA Toolkitをダウンロードしてインストール。
CUDA 7.5 Downloads | NVIDIA Developer
cuda_7.5.18_win10_network.exe
をダウンロードしてインストールした。
cl.exe
https://msdn.microsoft.com/ja-jp/library/et4zwx34.aspx
コンパイラは、ビルド環境、/I コンパイラ オプション、/X コンパイラ オプション、および INCLUDE 環境変数で定義された検索パスに従います。
環境変数に
変数名:
INCLUDE
値:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include
を足した。
pycudaインストール(その2)
Windows7 64bitにPyCUDAとTheanoをインストールしてGPU計算する - Qiita
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycuda
ネット記事の情報をもとに、.whlという拡張子のファイルをpipを使ってインストールしてみる。
pip install "C:\Users\aaaaaa\Downloads\pycuda-2015.1.3+cuda7518-cp35-none-win_amd64.whl"
pycuda-2015.1.3%2Bcuda7518-cp27-none-win_amd64.whl is not a supported wheel on this platform.
失敗。
pycuda‑2015.1.3+cuda7518 のファイルがたくさんあるけど、他も何回か失敗。
ファイル名の
cp35
pythonのバージョンっぽい。35はPython 3.5
pip install "C:\Users\aaaaaa\Downloads\pycuda-2015.1.3+cuda7518-cp27-none-win32.whl"
で成功、したけど、これではダメっぽい。
chainerのコードを実行するとエラーになった(はず)。
ファイル名のcp27がPythonのバージョン(2.7)、
win32とamd64は、Pythonのexeが32bitか64bitかでうまくいくか決まるっぽい。
元からPCに入っていたPythonは、32bit版のPython 2.7だった。
64bit版のPython 2.7系を入れなおした。
python 64bit版のインストール - kubotti’s memo
chainerのコードを実行
aidiaryのchainerを使ったpythonコードを実行したらエラー。
RuntimeError: CUDA environment is not correctly set up. library not found. ['cublas64_75.dll', 'cublas64_70.dll', 'cublas64_65.dll']
このエラーがいつ出たのか忘れてしまった。。
たぶん、32bit版Python2.7の状態で実行した時だった。
numpy と scipyのインストール
http://www.lfd.uci.edu/~gohlke/pythonlibs/
から .whl をpip install
aidiary のコードを実行したら、↓のエラー。
ImportError: No module named pylab
pylabが何なのか分かってないけど、、使っている箇所がコメントアウトされていて、
実際には使っていなかったので、
import pylab
をコメントアウトした。
エラー解消。
nvcc
aidiary のコードを実行したら、エラー。
Traceback (most recent call last): File "C:/Users/aaaaaa/PycharmProjects/gihyo_ml/aidiary_chainer1.py", line 86, in <module> optimizer.zero_grads() File "C:\Python2710\lib\site-packages\chainer\optimizer.py", line 131, in zero_grads g.fill(0) 略 File "C:\Python2710\lib\subprocess.py", line 573, in check_output raise CalledProcessError(retcode, cmd, output=output) subprocess.CalledProcessError: Command '['nvcc', '--preprocess', '-Xcompiler', '/wd 4819', '-m64', 'c:\\users\\aaaaaa\\appdata\\local\\temp\\tmprimmvl\\kern.cu']' returned non-zero exit status 1
Pycharmのデバッグモードで動かしたら、output変数か何かに以下のメッセージが入っていた。
'nvcc fatal : Cannot find compiler \\'cl.exe\\' in PATH
環境変数のPATHに
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;
を足したら、
ついに動いた!
出力結果
最後の数字
1298.96243597
は、経過秒数だと思う。
GPUを使わない設定にしたiMacでは、7000秒以上かかっていた。(たぶん2時間以上)
それが22分くらいで完了した。
load MNIST dataset epoch: 1 kern.cu train mean loss: 0.168675 test accuracy: 0.984143 epoch: 2 train mean loss: 0.050884 test accuracy: 0.987143 epoch: 3 train mean loss: 0.035005 test accuracy: 0.990429 epoch: 4 train mean loss: 0.027337 test accuracy: 0.990429 epoch: 5 train mean loss: 0.022279 test accuracy: 0.990429 epoch: 6 train mean loss: 0.019686 test accuracy: 0.990571 epoch: 7 train mean loss: 0.015886 test accuracy: 0.991857 epoch: 8 train mean loss: 0.013832 test accuracy: 0.990857 epoch: 9 train mean loss: 0.011948 test accuracy: 0.990857 epoch: 10 train mean loss: 0.010653 test accuracy: 0.991143 epoch: 11 train mean loss: 0.009253 test accuracy: 0.991571 epoch: 12 train mean loss: 0.009377 test accuracy: 0.991714 epoch: 13 train mean loss: 0.008813 test accuracy: 0.992000 epoch: 14 train mean loss: 0.006887 test accuracy: 0.991000 epoch: 15 train mean loss: 0.008877 test accuracy: 0.992143 epoch: 16 train mean loss: 0.006171 test accuracy: 0.991571 epoch: 17 train mean loss: 0.005138 test accuracy: 0.991143 epoch: 18 train mean loss: 0.005211 test accuracy: 0.992429 epoch: 19 train mean loss: 0.007215 test accuracy: 0.992000 epoch: 20 train mean loss: 0.006014 test accuracy: 0.992429 1298.96243597