GPU版のTensorFlowを使うためには,CUDA ToolkitやNVIDIA cuDNNをシステムに導入する必要があるという情報が多くあります.
実際にはCondaを使うことで,これらの手順をスキップできます.以下は,CUDA関連のライブラリをすべてシステムから削除した状態で実行しています.
Minicondaをインストールしている状態で,Anaconda Promptで以下を実行します.
(base) > conda create -y -n ml tensorflow-gpu keras
これだけです.
MNISTの手書き文字学習をおこなってみます.次のリンク先(mnist_cnn.py)を好きな場所に保存します.(Chromeの場合,リンクにカーソルを置いて,右クリック⇒名前をつけてリンク先を保存).Anaconda Promptで保存したディレクトリに移動し,実行してみます.
(base) > activate ml
(ml) > python mnist_cnn.py
~ 中略 ~
GPU (device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1)
60000/60000 [==============================] - 13s 208us/step - loss: 0.2567 - acc: 0.9233 - val_loss: 0.0768 - val_acc: 0.9760
Epoch 2/12
60000/60000 [==============================] - 10s 159us/step - loss: 0.0875 - acc: 0.9740 - val_loss: 0.0398 - val_acc: 0.9873
Epoch 3/12
60000/60000 [==============================] - 10s 159us/step - loss: 0.0669 - acc: 0.9805 - val_loss: 0.0326 - val_acc: 0.9886
Epoch 4/12
60000/60000 [==============================] - 10s 159us/step - loss: 0.0536 - acc: 0.9842 - val_loss: 0.0311 - val_acc: 0.9894
Epoch 5/12
60000/60000 [==============================] - 10s 159us/step - loss: 0.0466 - acc: 0.9856 - val_loss: 0.0321 - val_acc: 0.9891
Epoch 6/12
33536/60000 [===============>..............] - ETA: 4s - loss: 0.0416 - acc: 0.9874
問題なく動作しています.
インストールされたパッケージを確認してみます(一部抜粋).
(ml) > conda list
# packages in environment at C:\Users\daizu\Miniconda3\envs\ml:
#
# Name Version Build Channel
_tflow_1100_select 0.0.1 gpu
cudatoolkit 9.0 1
cudnn 7.1.4 cuda9.0_0
keras 2.2.2 0
keras-applications 1.0.4 py36_1
keras-base 2.2.2 py36_0
keras-preprocessing 1.0.2 py36_1
tensorboard 1.10.0 py36he025d50_0
tensorflow 1.10.0 gpu_py36h3514669_0
tensorflow-base 1.10.0 gpu_py36h6e53903_0
tensorflow-gpu 1.10.0 hf154084_0
cudatoolkit
,cudnn
が確認できます.
Jupyterがml
環境下のカーネルを認識できるようにするには,以下を実行します.
(ml) > conda install ipykernel
(ml) > python -m ipykernel install --user --name ml
(追記)CPU版も試してみました.
(base) > conda create -y -n ml_cpu tensorflow keras
1エポックの実行時間が,10s (GPU) から 約70s (CPU) まで増加しました.