TensorFlowをインストールしたのはいいけれど、ちゃんとGPUが使われているのかどうか、気になって確認してみました。
私の環境
OS:Windows 10
CPU: core i7
GPU: GeForce GTX 1660 SUPER
Tensorflowのインストール
まずはTensorflowのインストールです。
pip install tensorflow==2.2
でバージョン2.2.0をインストールしました。
なぜか、最新バージョンはエラーが出てうまくインストールできなかったので、一つバージョンを落としてインストールしました。
CUDAドライバのインストール
NVIDIAのホームページからCUDAドライバをインストールします。
TensorFlow 2.1以上では、CUDAドライバのバージョン10.1が指定されているので、それをダウンロードしてインストールする。
Windows10用のファイルをダウンロードしました。お使いのOSに合わせて選択してください。
cuDNNのインストール
続いてcuDNNをインストールします。TensorFlow2.1以上ではバージョン7.6が指定されているので、それをダウンロードします。
ダウンロードしたzipファイルを解凍し、CUDA ツールキットをインストールしたディレクトリ、 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1にzipファイルの中身をコピーします。
環境変数の設定
システム環境変数に下記の二つを追加します。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
パスの確認のため、下記のコマンドを実行します。
where cudnn64_7.dll
GPUが使われているかどうかの確認
最後にTensorFlowでGPUが使われているかどうか確認します。
コマンドプロンプトを起動、pythonと入力してpythonを起動します。
次の2行を実行します。
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
リストの中に、”device_type:GPU”があればGPUが認識されています。
XLA_CPU, XLA_GPUは?
GPUが使われているかどうか確認した際に、XLA_CPU, XLA_GPUという名前が出てきます。これは何なのでしょうか。
XLAはAccelerated Linear Algebraの略で、線形代数の演算に特化したコンパイラです。TensorFlowのホームページによれば、XLAを使うことでTensorFlowの演算を最適化し、メモリ使用量、性能、サーバやモバイル環境での移植性の面での改善が期待できるとのことです。
ちなみに、XLA_GPUと出ていていても、device_type:GPUがなければ、GPUは認識されていませんので、ご注意を。
CUDA, cuDNNのバージョン確認
すでにCUDA, cuDNNをインストール済みで、どのバージョンが入っているのか確認したいときは次のように確認できます。
CUDA
コマンドプロンプトを起動し、”nvcc -V”と入力するだけで、バージョンを確認することができます。
cuDNN
CUDA ツールキットをインストールしたディレクトリ、 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDAに保存されているcudnn.hもしくはcudnn_version.hを開いて、確認します。
例えば、バージョン7.6.5の場合、
CUDNN_MAJOR = 7, CUDNN_MINOR = 6, CUDNN_PATCHLEVEL = 5と定義されています。
参考記事
CUDA、cuDNNのインストール
https://www.kkaneko.jp/tools/win/cudnn.html
CUDA、cuDNNのバージョン確認
http://tecsingularity.com/cuda/version_conf/
GPUが認識されているかどうかの確認
XLAについて
https://www.tensorflow.org/xla/architecture
XLA_GPUだけ表示されていてもだめっぽい
https://github.com/tensorflow/tensorflow/issues/30748