Windows10にCUDA8.0とPyCUDAをインストールしてテストが動くまで を参考にさせていただきましたが、Ver違いか、PC環境の違いかPyCUDAのインストール方法等が一部異なっていたので、以下記録を公開します。
環境
CPU: Core i7 7700K
RAM: 32GB
GPU: GeForce GTX1080
OS: Windows10 Home 64bit
Windows Power Shell (アイコン右クリック「管理者として実行する」)で実行
Anaconda
https://www.anaconda.com/download/
インストール時にチェックを入れた
Add Anaconda to my PATH environment variable
Register Anaconda as my default Python 3.6
Python 3.6.3 Anaconda 5.0.1
Visual Studio
環境変数のPathに下記を追加する
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
CUDA Toolkit
https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
cuda_9.0.176_win10
GPU デバイスドライバ
http://www.nvidia.co.jp/Download/index.aspx?lang=jp
より自分のOS, GPUに対応したものをインストール
環境変数を設定
ブログ例とは 10.0. 以下のバージョンが更新されていたので下記を試みた
setx /M INCLUDE ’C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt’
pipでpycudaをインストール
pip install numpy
次に
pip install pycuda
を試みたが正常インストールせず。Pythonの文字コードの問題?
c.f. https://qiita.com/zinziroge/items/a55eda9ae0a8fdfac304
c.f. https://qiita.com/masato/items/713fa8876e50a65d575c
などを参考に、結局下記のインストールを行った。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycuda から
pycuda‑2017.1.1+cuda90176‑cp36‑cp36m‑win_amd64.whl
をダウンロード
pip install 'C:\Users\{自分のユーザ}\Downloads\pycuda-2017.1.1+cuda90176-cp36-cp36m-win_amd64.whl'
再起動
再起動前は
import pycuda.driver as cuda
でエラーが出たが再起動で問題がなくなった。
Chainer MNIST例でGPU使用で約6倍高速
Chainerインストール
pip install chainer
chainer-3.2.0
cupy インストール
pip install cupy
だがWindows環境だと動かず
PermissionError: [WinError 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。: 'C:\\Users\\aoki\\AppData\\Local\\Temp\\pip-build-a3r0ap5k\\cupy'
なエラーが出る
Win + Python3.6で「pip install」を実行したときに「UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83」と表示される。
を参考にして _init_.py を修正して再度 pip install cupy でOK
あっちこっち検索してここに行き着いた。こんなの分かんないよ
MNIST例をGPU使用で実行
https://github.com/chainer/chainer/archive/v3.2.0.tar.gz をダウンロードして解凍
チュートリアル実行
python chainer-3.2.0/examples/mnist/train_mnist.py
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.193365 0.102962 0.941033 0.9658 24.631
2 0.07364 0.0768279 0.97685 0.9766 44.4353
3 0.0476017 0.0678121 0.985117 0.9783 64.3442
4 0.0363481 0.0621047 0.988317 0.9814 84.6944
5 0.0288391 0.0700695 0.990767 0.9799 105.237
6 0.0222801 0.0815667 0.992317 0.9789 125.582
7 0.0233189 0.0941376 0.99295 0.9765 145.872
8 0.0195297 0.072608 0.993267 0.982 166.44
9 0.0121415 0.0803006 0.996183 0.9825 187.566
10 0.0183421 0.072313 0.993967 0.9832 208.961
11 0.0127146 0.0885336 0.995583 0.9817 230.528
12 0.0120679 0.110891 0.9965 0.9802 251.782
13 0.0149653 0.0880673 0.995467 0.9808 273.149
14 0.00883313 0.0925014 0.997333 0.9805 295.164
15 0.0121797 0.106574 0.99625 0.9795 317.23
16 0.00828545 0.117745 0.997567 0.9815 339.405
17 0.0130495 0.0902346 0.996367 0.9833 361.733
18 0.00622861 0.144263 0.998083 0.9777 384.78
19 0.0122948 0.10164 0.996317 0.9827 408.305
20 0.00753224 0.0918758 0.99765 0.9835 432.642
GPU使用時は ‐g 0 をつける
python chainer-3.2.0/examples/mnist/train_mnist.py -g 0
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.193117 0.103204 0.942433 0.9673 3.23175
2 0.0732215 0.0745765 0.976482 0.9778 5.78444
3 0.0478743 0.0838417 0.984848 0.9745 8.26351
4 0.0385924 0.0775026 0.987282 0.9787 10.804
5 0.0282176 0.0765588 0.990781 0.9793 13.3531
6 0.0238069 0.0894794 0.992031 0.9784 15.879
7 0.0207121 0.102661 0.993332 0.9743 18.406
8 0.0179733 0.0875146 0.993998 0.9798 20.9028
9 0.0152781 0.0864125 0.995265 0.9809 23.4604
10 0.0194912 0.0782601 0.993565 0.9812 25.988
11 0.0111541 0.0869075 0.996666 0.982 28.5471
12 0.0122531 0.0947352 0.996215 0.9818 31.0586
13 0.0146315 0.0888069 0.995482 0.9797 33.5438
14 0.0112458 0.0867098 0.996465 0.9819 36.0318
15 0.00814456 0.0958816 0.997366 0.9818 38.532
16 0.0103134 0.109307 0.997132 0.9807 41.0771
17 0.0115547 0.0960045 0.996199 0.9825 43.5898
18 0.00831023 0.107684 0.997749 0.9824 46.1141
19 0.010538 0.104213 0.996699 0.9825 48.6488
20 0.0104301 0.143603 0.997049 0.9781 51.293
データやNNの組み方によっても早さは変わるのだろうが約8倍となった。そんなでもないなと思ったけど1週間かかるものが1日、8時間かかるテストが1時間、と考えるとやっぱりいいよな。
TensorFlowも
cuDNN
https://developer.nvidia.com/rdp/cudnn-download
Download cuDNN v7.0.5 (Dec 11, 2017), for CUDA 9.1 をダウンロード
http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows を参照して3つのファイルを所定の場所にコピーする
- PCの環境変数のCUDA_PATHに C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 を指定する
- Visual Studio を起動し