備忘録ですが、いつもやっている気がする。。。何度やっても何か躓く。。
ただし、少しずつ進化しているかも。。世の中
今回は参考①を中心に参考にしています。
【参考】
⓪【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪~Chainer環境構築
①Keras-TensorFlow-GPU-Windows-Installation (Updated: 12th Apr, 2019)
②pip で OpenCV のインストール
###やったこと
(0)不必要なものを減らして空き容量を15GB程度まで増やす
(1)Anacondaをダウンロードしてインストール
(2)Update Anaconda
((3)Visual Studio 2015 Community Editionをインストール)
(4)Cudaをダウンロードしてインストール
(5)Cudnnをダウンロードしてインストール
(6)AnacondaのPythonを3.6環境に変更する
(7)conda activate keras-gpu
(8)mnist_mlp.pyを動かす
(9)pip install matplotlib, pip install sklearn, pip install
opencv-pythonなどをインストール
(10)chainer-gpuインストール
###(0)不必要なものを減らして空き容量を15GB程度まで増やす
これ途中で止まると結局最初からやり直しになるから、十分確保して始めることをお勧めします。
なお、環境が錯綜するといろいろ弊害がある可能性があるので、前回インストールしたものは、サクッとアンインストールすることをお勧めします。
###(1)Anacondaをダウンロードしてインストール
Anaconda Distribution
18/5/2019現在は、Anaconda 2019.03 for Windows Installerで、Python3.7です。
なお、最新バージョンをダウンロードして後でpython3.6に変更します。
###(2)Update Anaconda
AnacondaPromptから以下を入力して最新化します。
>conda update conda
>conda update --all
驚くほど、いろいろ変わります。
###((3)Visual Studio 2015 Community Editionをインストール)
この工程がありません。
今回は入れていませんが、前回の環境が有効になっているようなので、必要ないのかどうかは不明ですが、参考①にはありません。
###(4)Cudaをダウンロードしてインストール
ここは以前と変わりません。
Cudaバージョンは、CUDA Toolkit 10.1 Update 1 Downloadです。
windows-x86_64-10-exe_localをダウンロードします。
インストール時間は1時間程度(目安)かかります。
###(5)Cudnnをダウンロードしてインストール
登録が面倒ですが、登録すればダウンロードするだけです。
バージョンは以下のとおりです。
Download cuDNN v7.5.1 (April 22, 2019), for CUDA 10.1
そしてある意味、ここ変わりました。
D:\cudnn-10.1-windows10-x64-v7.5.1.10
などのDirに解凍します。そして、この配下のcuda-binを環境変数を編集を実行してPATHに追加します。
そして、変更したら
echo %PATH%
※CUDAへの上書きは必要ないようです
###(6)AnacondaのPythonを3.6環境に変更する
conda create -n keras-gpu python=3.6 numpy scipy keras-gpu
これも結構変わりますが、時間は短いです。
###(7)conda activate keras-gpu
コマンドはconda Promptから実行します。
(base) C:\Users\user>conda activate keras-gpu
これを実行するとconda Promptが以下のように変わります。
(base) C:\Users\user>
(keras-gpu) C:\Users\user>
###(8)mnist_mlp.pyを動かす
KerasもTensorflow-gpuも明示的にはインストールしていませんが、これで以下のアプリが動きます。簡単とは言え、40sで終わり、精度もなかなかです。
keras/examples/mnist_mlp.py
###(9)pip install matplotlib, pip install sklearn, pip install opencv-pythonなどをインストール
グラフやちょっと機械学習、そして何よりOpenCVは必須なので入れます。
簡単に以下のコマンドですんなり入ります。
(keras-gpu) C:\Users\user\ObjectiveNuro>pip install matplotlib
(keras-gpu) C:\Users\user\ObjectiveNuro>pip install sklearn
(keras-gpu) C:\Users\user\ObjectiveNuro>pip install opencv-python
###(10)chainerインストール
また、将棋AIをやりたいので、Chainerも入れます。
以下のとおり、Chainerは最新版のchainer-6.0.0が入りました。
しかし、Cupyは入っていません。。。
Successfully installed chainer-6.0.0 filelock-3.0.10 typing-3.6.6 typing-extensions-3.7.2
(keras-gpu) C:\Users\user\ObjectiveNuro>python
Python 3.6.8 |Anaconda, Inc.| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cupy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cupy'
>>> import chainer
>>>
ということで、Cupyをインストールしました。
以下のようにたくさん怒られましたが、インストールできました。
WARNING: Subprocess output does not appear to be encoded as cp874
/ WARNING: Subprocess output does not appear to be encoded as cp874
done
Stored in directory: C:\Users\user\AppData\Local\pip\Cache\wheels\27\5a\67\bfaf1d3ad99e17b134c31cf0b2ac352b7491d64d36134b4379
Building wheel for fastrlock (setup.py) ... | WARNING: Subprocess output does not appear to be encoded as cp874
WARNING: Subprocess output does not appear to be encoded as cp874
/ WARNING: Subprocess output does not appear to be encoded as cp874
done
Stored in directory: C:\Users\user\AppData\Local\pip\Cache\wheels\73\2b\fe\8bdf21b8ebdc58dfafa3a0935767d2ae9c8f68e49d04c5a190
Successfully built cupy fastrlock
Installing collected packages: fastrlock, cupy
Successfully installed cupy-6.0.0 fastrlock-0.4
そして、無事にchainer版train_mnist.pyがGPU上で動きました。
ただし、以下のとおりなので、cuDNNは失敗しているみたいです。
⇒ということで、通常環境でCuPyとChainerを入れなおした結果、おまけの最後のように無事にエラーは消えました。
Please reinstall CuPy after you install cudnn
(see https://docs-cupy.chainer.org/en/stable/install.html#install-cudnn).
'cuDNN is not enabled.\n'
###おまけ
>python mnist_mlp.py
Using TensorFlow backend.
60000 train samples
10000 test samples
WARNING:tensorflow:From C:\Users\user\Anaconda3\envs\keras-gpu\lib\site-packages\tensorflow\python\framework\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From C:\Users\user\Anaconda3\envs\keras-gpu\lib\site-packages\keras\backend\tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 512) 401920
_________________________________________________________________
dropout_1 (Dropout) (None, 512) 0
_________________________________________________________________
dense_2 (Dense) (None, 512) 262656
_________________________________________________________________
dropout_2 (Dropout) (None, 512) 0
_________________________________________________________________
dense_3 (Dense) (None, 10) 5130
=================================================================
Total params: 669,706
Trainable params: 669,706
Non-trainable params: 0
_________________________________________________________________
WARNING:tensorflow:From C:\Users\user\Anaconda3\envs\keras-gpu\lib\site-packages\tensorflow\python\ops\math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Train on 60000 samples, validate on 10000 samples
Epoch 1/20
2019-05-18 19:40:29.684671: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2019-05-18 19:40:29.871613: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties:
name: GeForce GTX 1060 3GB major: 6 minor: 1 memoryClockRate(GHz): 1.7335
pciBusID: 0000:01:00.0
totalMemory: 3.00GiB freeMemory: 2.43GiB
2019-05-18 19:40:29.878198: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0
2019-05-18 19:40:30.405281: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-05-18 19:40:30.409132: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0
2019-05-18 19:40:30.410497: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0: N
2019-05-18 19:40:30.411980: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 2116 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060 3GB, pci bus id: 0000:01:00.0, compute capability: 6.1)
2019-05-18 19:40:30.971229: I tensorflow/stream_executor/dso_loader.cc:152] successfully opened CUDA library cublas64_100.dll locally
60000/60000 [==============================] - 3s 53us/step - loss: 0.2452 - acc: 0.9249 - val_loss: 0.1012 - val_acc: 0.9707
Epoch 2/20
60000/60000 [==============================] - 2s 27us/step - loss: 0.1037 - acc: 0.9684 - val_loss: 0.0931 - val_acc: 0.9733
Epoch 3/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0743 - acc: 0.9771 - val_loss: 0.0802 - val_acc: 0.9785
Epoch 4/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0601 - acc: 0.9814 - val_loss: 0.0737 - val_acc: 0.9801
Epoch 5/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0507 - acc: 0.9847 - val_loss: 0.0821 - val_acc: 0.9785
Epoch 6/20
60000/60000 [==============================] - 2s 28us/step - loss: 0.0445 - acc: 0.9868 - val_loss: 0.0865 - val_acc: 0.9789
Epoch 7/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0370 - acc: 0.9891 - val_loss: 0.1013 - val_acc: 0.9758
Epoch 8/20
60000/60000 [==============================] - 2s 25us/step - loss: 0.0331 - acc: 0.9902 - val_loss: 0.0960 - val_acc: 0.9801
Epoch 9/20
60000/60000 [==============================] - 2s 25us/step - loss: 0.0312 - acc: 0.9908 - val_loss: 0.0964 - val_acc: 0.9817
Epoch 10/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0294 - acc: 0.9916 - val_loss: 0.0891 - val_acc: 0.9802
Epoch 11/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0257 - acc: 0.9930 - val_loss: 0.0942 - val_acc: 0.9822
Epoch 12/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0264 - acc: 0.9928 - val_loss: 0.0946 - val_acc: 0.9820
Epoch 13/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0233 - acc: 0.9934 - val_loss: 0.1079 - val_acc: 0.9811
Epoch 14/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0219 - acc: 0.9938 - val_loss: 0.0978 - val_acc: 0.9831
Epoch 15/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0199 - acc: 0.9944 - val_loss: 0.1021 - val_acc: 0.9828
Epoch 16/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0210 - acc: 0.9940 - val_loss: 0.1109 - val_acc: 0.9813
Epoch 17/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0192 - acc: 0.9947 - val_loss: 0.0997 - val_acc: 0.9831
Epoch 18/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0186 - acc: 0.9953 - val_loss: 0.1085 - val_acc: 0.9830
Epoch 19/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0187 - acc: 0.9951 - val_loss: 0.1135 - val_acc: 0.9819
Epoch 20/20
60000/60000 [==============================] - 2s 26us/step - loss: 0.0200 - acc: 0.9950 - val_loss: 0.1159 - val_acc: 0.9838
Test loss: 0.11590634980594598
Test accuracy: 0.9838
>python train_mnist.py -g 0
C:\Users\user\Anaconda3\envs\keras-gpu\lib\site-packages\chainer\backends\cuda.py:143: UserWarning: cuDNN is not enabled.
Please reinstall CuPy after you install cudnn
(see https://docs-cupy.chainer.org/en/stable/install.html#install-cudnn).
'cuDNN is not enabled.\n'
Device: @cupy:0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.191225 0.11152 0.941917 0.9644 9.78808
2 0.0748072 0.0944838 0.976016 0.9714 12.9273
3 0.0492318 0.0654779 0.984065 0.9796 16.0494
4 0.0343065 0.0732255 0.989165 0.9793 19.1852
5 0.0295044 0.0734612 0.990148 0.9793 22.3522
6 0.0247848 0.0943174 0.991898 0.9777 25.5636
7 0.0231668 0.0842453 0.992265 0.9798 28.7199
8 0.0156254 0.110529 0.994799 0.9732 31.8454
9 0.0176786 0.114648 0.993748 0.9758 34.9805
10 0.0152345 0.079431 0.994615 0.9836 38.1459
11 0.011109 0.0769602 0.996415 0.9825 41.2668
12 0.0152396 0.121492 0.995532 0.9789 44.3852
13 0.0110979 0.100953 0.996216 0.9813 47.4914
14 0.0107481 0.0838874 0.996532 0.9828 50.6697
15 0.00976045 0.111761 0.996999 0.9792 53.8031
16 0.0112281 0.0990215 0.996566 0.9807 57.014
17 0.0120273 0.0895522 0.996849 0.9814 60.2077
18 0.00841965 0.0982618 0.997599 0.9809 63.3512
19 0.00829624 0.106039 0.997515 0.9805 66.5261
20 0.00973309 0.089214 0.997083 0.9828 69.6759
Chainer-gpu環境
通常の環境でcupyとChainerをインストールすると、cuDNNのエラーが消え、10%程度速くなりました。
>python train_mnist.py -g 0
Device: @cupy:0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.187907 0.0998692 0.9427 0.9685 9.84457
2 0.072782 0.0879277 0.97665 0.972 12.8331
3 0.0481786 0.0700986 0.984382 0.9797 15.6598
4 0.0339355 0.0739472 0.988765 0.9791 18.4719
5 0.0294084 0.0685768 0.990415 0.9812 21.2692
6 0.0242083 0.0775707 0.992032 0.9795 24.0988
7 0.0184116 0.115758 0.993832 0.9712 26.9162
8 0.0195167 0.0967818 0.993532 0.9787 29.7348
9 0.0143791 0.0879228 0.995632 0.9802 32.6102
10 0.0165612 0.0826924 0.994549 0.9823 35.4114
11 0.0131159 0.0921784 0.996115 0.9807 38.2368
12 0.0102195 0.0954736 0.997099 0.9812 41.0551
13 0.0142131 0.112369 0.995582 0.9784 43.8236
14 0.0128743 0.108042 0.996665 0.9816 46.6102
15 0.00885911 0.0942717 0.997232 0.9827 49.4152
16 0.0105739 0.109479 0.996965 0.982 52.2094
17 0.0124391 0.0934018 0.996299 0.9845 55.0255
18 0.00904854 0.083856 0.997532 0.985 57.8454
19 0.00706091 0.126763 0.997849 0.9786 60.6811
20 0.0109141 0.0873466 0.996699 0.9843 63.4866