CPUだと遅すぎ
画像解析系のモデルはCPUでも動作しますが、処理にかなり時間がかかります。
以下TensoFlowでGPUを使えるようにするまでの手順です。
環境
Windows10での動作確認です。他のOSは下のリンクから
使えるGPU
主要なメーカとしてNvdiaとAMDがありますが、今のところNvdia(Tesla/Geforce/Quadro/etc...)だけのようです。
AMDとかSoCとかはダメみたいですね。使えたという記事を見たことないです。
自作のコンパイラでSocのグラフィックボードを使えるようにする猛者はいるらしいです。
このリンクからCudaが使えるGPUの一覧が見れます。
Compute Capability
Compute Capabilityという性能を表す指標があります。
自分のはGeForceGTX 750Tiで5.0でした。2014頃のハイエンドですがもうミドルに落ちてますね。
Tensorflowのインストール
昔のバージョン(<=1.15)ではTensoflow-gpuというGPU用の別パッケージがありました。最近のコードではあまりみないですね
pip install tensorflow==2.6.0
依存関係インストール
GPUを差しただけではダメで、NVdiaのGPUドライバーとCuda、CuDNNをインストールする必要があります
NVdiaのGPUドライバー
Cuda Toolkit
インストーラーになっているので指示に従って進めるだけです。自分は推奨インストールにしました。
関連の依存があるようでVisualStdio C++がなければインストールするよう警告がでることがあります
cuDNN
こっちは畳み込みネットワークとかMaxPoolingとかDNNを使うために必要らしいです。面倒ですがDLするためにデベロッパー登録する必要があります。
ダウンロードしたzipを展開して適当な場所に配置してください
cuDNNのパスは手動で
パスはインストーラーが勝手に登録してくれるという情報がありましたが、自動で設定してくれるのはCUDA_PATH
とCUDA_PATH_V[バージョン]
だけです。
CuDNNは↓のどちらか
-
CUDNN_PATH
を手動で設定 -
CUDA_PATH
と同じフォルダにbin,lib,includeの中身をすべてコピー(これがベストかもしれません。)
検証
import tensorflow as tf
tf.config.list_physical_devices('GPU')
>>> [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
エラーと対処
ImportError: Could not find the DLL(s) 'msvcp140.dll or msvcp140_1.dll'. TensorFlow requires that these DLLs be installed in a directory that is named in your %PATH% environment variable. You may install these DLLs by downloading "Microsoft C++ Redistributable for Visual Studio 2015, 2017 and 2019" for your platform from this URL: https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads
ここからDLLをインストール
W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
Cuda ToolKitを入れる
W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudnn64_8.dll'; dlerror: cudnn64_8.dll not found
CuDNNを入れる
学習済みモデルで試してみました