【Keras/TensorFlow】GPUを使うまでの手順と注意点などを解説します




Keras/TensorFlowでディープラーニングを行う際、計算時間を短縮するためにGPUを使いたいと思いました。しかし、なかなか設定がうまくいかなかったので調べてみると、原因はTensorFlowやCudaなどのヴァージョンがうまく噛み合っていなかったからだとわかりました。

そこで、今回はTensorFlowをバックエンドとしてKerasを動かすという前提でGPUを使用するまでの手順について解説していきます。

目次

今回使った環境

  • OS:WIndows10(ビルトは2019-Marchの最新版18362.207)
  • GPU:NVIDIA GeForce RTX 2080 Ti
  • メモリー:16GB
  • Anacondaを利用

必要なもの

  • NVIDIA製のGPU
  • TensorFlow(GPU版)
  • Keras
  • (Windows)の場合:Microsoft Visual Studio C++(MSVC)
  • NVIDIA Driver
  • Cuda
  • cuDNN

確認必須:各ツールのバージョン

上記に挙げたtensorflow、MSVC、Cuda、cuDNNの各バージョンをすべて合わせる必要があります。基本的に、tensorflowのバーションを最初に決めた後(特に理由がなければ最新版で)、その他のバージョンを決めていきます。

対応表はこちらです。(Windowsの場合)(Mac、Linuxの場合

これを必ず確認してから以下の手順を進めてください。

導入手順

NVIDIA製のGPU

2019年6月30日現在、TensorFlowに公式対応しているのはNVIDIA製のGPUだけです。「(TensorFlow公式)GPU support」ただし、NVIDIA製以外のGPUでも使う方法はあるようなので、下の方に補足を書いておきます。

NVIDIA以外のGPU対応について

TensorFlow(GPU版)

TensorFlowは通常のCPU版と、GPU用の2つが用意されています。同時に二つを同じ環境にインストールしているとCPU版が自動で使われてしまうことがあるようです。もしすでにCPU版をインストールしているようであれば、一度すべてのTensorFlowをアンインストールするのが良いでしょう。

Anaconda Navigaterを起動し、インストール済みパッケージにtensorflowが含まれていれば削除します。一度環境からtensorflow関係をすべて取り除いた上で、tensorflow-gpuをインストールします。

※Macなどpipで行う場合はこちら

現在インストールされているTensorFlowの確認

pip list

tensorflowが入っていたら、アンインストールする

pip uninstall tensorflow

TensorFlowのGPU版をインストール

pip install tensorflow-gpu

再度pip listを行って、tensorflow-gpuが入っていればインストール成功です。

Keras

こちらもAnaconda Navigater>Envirommentsからkerasパッケージをインストールします。

※Macなどpipで行う場合はこちら

pip install keras

(Windows)の場合:Windows Visual Studio C++

後述のCudaをインストールして使うために、WindowsVisualStudioC++が必要になります。こちらからインストールしてください。2019以降の古いバージョンはこちらです。必ず使いたいtensorflowのバージョンに対応したものをインストールしてください。

インストール時に「C++ ワークロードを使用したデスクトップ開発」を必ず選択してください。

NVIDIA  Driver

こちらのページからドライバーをインストールします。

cuDNN

こちらのページからCuDNNをダウンロードしてください。無料登録が必要になります。ダウンロードが終わったらフォルダを解凍してください。

次に、フォルダで「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v.○○」を開いてください。○○は、使おうとしているヴァージョンの数字が入ります。例えば、v.10.0などとなっています。

解凍したフォルダの中にbin,include,libと3つのフォルダがあります。binの中のファイルはbinのフォルダの中に、includeの中のファイルはincludeフォルダの中に、libの中のファイルはlibフォルダの中に上書き保存してください。

管理者権限を求められることがあります。インストールは終了です。

GPUの動作確認

TensorFlowがインストールされているか確認

upyter notebookを開いて、以下のコマンドを打ち込みます。

#tensorflowをインポート
import tensorflow

正常にインストールされていれば、エラーが返ってくることなく何も起こりません。

TensorFlowがGPUを認識しているかを確認

次にGPUの動作確認です。まず、

#TensorFlowがGPUを認識しているか確認
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

を実行します。正常にGPUが認識されていれば、device_type: “GPU”という一文が結果の中に書かれています。

GPUが動作するかを確認

Windowsの場合、タスクマネージャーを開いてGPUの稼働状況を見ることも出来ますが、細かい情報が見れません。ELSA社が無償公開しているELSA System Graphというソフトウェアのインストールをおすすめします。

早速、MNISTを使ってTensorFlowを動かしてみます。

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

こちらのソースコードをまるっとコピーしてjupyter notebookで実行してください。実行中にGPUの使用率が上がればGPUはうまく使われています。お疲れ様でした!