ディープラーニングの計算量は比較的大量になることが多く,GPUを使用しないと非常に時間がかかることになるので,Keras を使用するにはGPU(NVDIA のグラフィクスカード GTX シリーズ)を利用することが効果的です.
以前の投稿で作成した mykras 環境と同様に mykeras-gpu 環境を作成して,Jupyter Notebook のインストールを行う例を以下に示します.
まずは,Anaconda Promptで,mykerasをアクティベートします.
続いてKeras をインストールする際のパッケージ名は "keras-gpu" なので,"conda install keras-gpu"を実行します.
(base) C:\Users\xxx>activate mykeras
(mykeras) C:\Users\xxx>conda install keras-gpu
すると,以下のように実行が始まります.
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.5.11
latest version: 4.5.12
Please update conda by running
$ conda update -n base -c defaults conda
## Package Plan ##
environment location: C:\Users\Hidehiko MURAO\AppData\Local\conda\conda\envs\mykeras
added / updated specs:
- keras-gpu
The following packages will be downloaded:
package | build
---------------------------|-----------------
keras-gpu-2.2.4 | 0 5 KB
cudnn-7.1.4 | cuda9.0_0 192.3 MB
tensorflow-base-1.12.0 |gpu_py36h6e53903_0 180.8 MB
_tflow_select-2.1.0 | gpu 3 KB
tensorflow-gpu-1.12.0 | h0d30ee6_0 3 KB
cudatoolkit-9.0 | 1 339.8 MB
tensorflow-1.12.0 |gpu_py36ha5f9131_0 4 KB
------------------------------------------------------------
Total: 712.9 MB
The following NEW packages will be INSTALLED:
cudatoolkit: 9.0-1
cudnn: 7.1.4-cuda9.0_0
keras-gpu: 2.2.4-0
tensorflow-gpu: 1.12.0-h0d30ee6_0
The following packages will be UPDATED:
tensorflow: 1.12.0-eigen_py36h67ac661_0 --> 1.12.0-gpu_py36ha5f9131_0
tensorflow-base: 1.12.0-eigen_py36h45df0d8_0 --> 1.12.0-gpu_py36h6e53903_0
The following packages will be DOWNGRADED:
_tflow_select: 2.2.0-eigen --> 2.1.0-gpu
Proceed ([y]/n)? y
Downloading and Extracting Packages
keras-gpu-2.2.4 | 5 KB | ######################## | 100%
cudnn-7.1.4 | 192.3 MB | ####################### | 100%
tensorflow-base-1.12 | 180.8 MB | ############################################ | 100%
_tflow_select-2.1.0 | 3 KB | ############################################ | 100%
tensorflow-gpu-1.12. | 3 KB | ############################################ | 100%
cudatoolkit-9.0 | 339.8 MB | ############################################ | 100%
tensorflow-1.12.0 | 4 KB | ############################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
続いて,WindowsのPATH環境にcuda関連のDLLが格納されている
C:\Users\xxx\AppData\Local\conda\conda\envs\mykeras\DLLs
を登録します.
Windows のコマンドプロンプトで
control
と入力してコントロールパネルを起動します.
その後,
システムとセキュリティ > システム
と選択して,
システムの詳細設定
をクリックします.
さらに別ウィンドウが開くので,「詳細設定」タブの 「環境変数」をクリックします。
ユーザー環境変数に Path が既にあれば「編集」を押して
%USERPROFILE%AppData\Local\conda\conda\envs\mykeras\DLLs
を追加します.
ユーザー変数に Path が無い場合は「新規」で作成します.システム変数の PATH に mykeras-gpu の DLL のパスが追加されるように記述します.
ここでGPUが動作するかをテストしてみます.テストはJupyter Notebookを使って行います.
テストには,以前にも用いた,keras 作者 Fchollet さんが用意してくれている exapmle で MNIST データセットを学習する mnist_cnn.py で試します.
実行結果は以下のようになります.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
60000/60000 [==============================] - 6s 102us/step - loss: 0.2660 - acc: 0.9188 - val_loss: 0.0667 - val_acc: 0.9799
Epoch 2/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0934 - acc: 0.9724 - val_loss: 0.0413 - val_acc: 0.9876
Epoch 3/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0678 - acc: 0.9799 - val_loss: 0.0375 - val_acc: 0.9870
Epoch 4/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0569 - acc: 0.9835 - val_loss: 0.0314 - val_acc: 0.9894
Epoch 5/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0478 - acc: 0.9860 - val_loss: 0.0315 - val_acc: 0.9890
Epoch 6/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0426 - acc: 0.9872 - val_loss: 0.0291 - val_acc: 0.9905
Epoch 7/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0384 - acc: 0.9886 - val_loss: 0.0331 - val_acc: 0.9892
Epoch 8/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0342 - acc: 0.9896 - val_loss: 0.0270 - val_acc: 0.9907
Epoch 9/12
60000/60000 [==============================] - 4s 71us/step - loss: 0.0325 - acc: 0.9902 - val_loss: 0.0311 - val_acc: 0.9903
Epoch 10/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0292 - acc: 0.9907 - val_loss: 0.0279 - val_acc: 0.9911
Epoch 11/12
60000/60000 [==============================] - 4s 70us/step - loss: 0.0276 - acc: 0.9913 - val_loss: 0.0247 - val_acc: 0.9916
Epoch 12/12
60000/60000 [==============================] - 4s 71us/step - loss: 0.0254 - acc: 0.9921 - val_loss: 0.0265 - val_acc: 0.9919
Test loss: 0.026480694237979514
Test accuracy: 0.9919
以前のテストでは,Epoch 1/12, 2/12(以前の例では 1/2, 2/2)では 64s かかっていたものが,今回はEpoch1で 6s で終了しており,Epoch2で 4s に短縮されていることがわかります.
2019年1月3日木曜日
登録:
コメントの投稿
(
Atom
)
0 件のコメント :
コメントを投稿