なんか作りたい

PCとかオーディオとか

機械学習の環境づくり平成31年4月ver

季節が巡ってPCも色々変わったので改めて機械学習の環境づくり。
平成が終わる前にやりたかっただけ。

バージョン上がるのが本当に早いので要注意。
去年の記事はほぼ役にたたなくなっていたので更新ではなく新しい記事にした。
ただ前回よりも状況は良くなっているようで、特に難しいとは感じなかった。

Python 3.7.3 + Anaconda 2019.03 + CUDA10.1 + cupy6.0.0rc1 + Chainer6.0.0rc1




0. VisualStudioCommunity2017および2019インストール済みの環境

MSVC v142 – VS 2019 C++ x64/x86 ビルド ツール (v14.20)、
MSVC v141 – VS 2017 C x64/x86 ビルド ツール (v14.16)、
MSVC v141 – VS 2017 C++ x64/x86 Spectre 軽減ライブラリ (v14.16)、
などがインストールされた環境。


1. Anaconda公式から最新版をインストール

Pathに登録するように設定。
それ以外はとくにいじらず。
前回はアップデート関係のトラブルがあったが今回はすんなり入った。


2. CUDA(当時最新版10.1)を公式からインストール

高速インストールで特に設定せずに入れた。


4. cuDNNのインストール

開発者登録して以下からダウンロード
Deep Learning Software | NVIDIA Developer
解凍して出てきたcudaフォルダの中身を以下にコピー (bin, include, lib) C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1


5. cupy, Chainer, opencvのインストール

管理者権限のPowershellから以下を実行。

python -m pip install --upgrade pip
pip install ipykernel
pip install cupy-cuda101==6.0.0rc1
pip install opencv-python
git clone https://github.com/chainer/chainer.git
cd chainer
pip install .


6. 環境のテスト

cupyのテスト

git clone https://github.com/cupy/cupy
cd cupy/examples/kmeans
python ./kmeans.py
 CPU :  10.740523 sec
 GPU :  0.755733 sec

chainerのテスト

git clone https://github.com/chainer/chainer.git
cd chainer/examples/mnist
python 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.191485    0.093776              0.94235        0.9706                    13.8266
2           0.0730379   0.0719899             0.977383       0.9785                    27.3778
3           0.0470612   0.0767688             0.9848         0.9751                    40.7138
4           0.035586    0.0811157             0.988017       0.9771                    57.2792
5           0.0282599   0.0762014             0.990567       0.9791                    70.6485
6           0.0224677   0.0940598             0.992667       0.9732                    84.2787
7           0.0213568   0.113709              0.992733       0.974                     97.7589
8           0.0200573   0.0721318             0.993683       0.9827                    111.822
9           0.0177061   0.0788107             0.994133       0.9812                    125.633
10          0.014575    0.0848092             0.9954         0.9804                    139.365
11          0.0109873   0.109093              0.996367       0.9778                    153.069
12          0.0159875   0.0789957             0.994767       0.9821                    166.925
13          0.00998175  0.104576              0.996883       0.9796                    180.697
14          0.012426    0.10348               0.9964         0.9808                    194.475
15          0.00852416  0.0854647             0.997783       0.983                     208.257
16          0.0154495   0.0836159             0.995467       0.9847                    222.253
17          0.011154    0.0924353             0.99665        0.9818                    236.376
18          0.00941916  0.105031              0.997183       0.9819                    250.512
19          0.00950466  0.106474              0.99715        0.9813                    264.807
20          0.00912466  0.100974              0.9974         0.9828                    279.043

python train_mnist.py -g 0

Device: <GpuDevice (cupy):0>
# unit: 1000
# Minibatch-size: 100
# epoch: 20

epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           0.191097    0.0972043             0.941284       0.9695                    4.3701
2           0.0746888   0.0762293             0.976865       0.9751                    6.98387
3           0.050018    0.0724256             0.983749       0.9775                    9.43813
4           0.0369702   0.0728462             0.987899       0.9796                    11.968
5           0.0285598   0.0773089             0.990782       0.9781                    14.4349
6           0.023211    0.0639054             0.992449       0.9823                    17.0077
7           0.020715    0.0803587             0.993365       0.9781                    19.5726
8           0.0204158   0.0696111             0.993365       0.9827                    22.0429
9           0.0171625   0.0759339             0.994682       0.9843                    24.6557
10          0.0125583   0.139195              0.996199       0.9689                    27.125
11          0.014267    0.0923551             0.995682       0.9802                    29.574
12          0.0147518   0.086596              0.995549       0.9821                    32.0337
13          0.0115162   0.0816954             0.996632       0.9834                    34.4981
14          0.0114312   0.0863646             0.996516       0.983                     37.0515
15          0.0124788   0.0827622             0.996199       0.9838                    39.5018
16          0.00883767  0.109186              0.997066       0.982                     42.0396
17          0.00920252  0.122703              0.997166       0.9818                    44.5946
18          0.0101556   0.0885414             0.996915       0.984                     47.0574
19          0.0112602   0.10041               0.997066       0.9808                    49.5251
20          0.0094111   0.120821              0.997465       0.9798                    51.9911

無事動作を確認できた。