ドハマりしました。
何とか解決できたので同じ悩みの方のお役に立てるよう解決策をメモします。
#環境
- Anaconnda
- GPU : NVIDIA Geforce RTX 2060 with Max-Q
- tensorflow-gpu : 2.1.0
- cudatoolkit : 10.1
- cudnn : 7.6.5
#症状
対応表を見てGPUに合ったTensorflow, CUDA, cuDNNをインストール、GPUが認識され自作CNNでGPUが使えていることまでは確認しました。
しかし、量の多いデータを処理する時にImagegenerator を使ったところ、モデル学習のところで下記エラーが発生。
Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
調べてもGPUがそもそも認識していない場合の対処方法が多くあまり参考になりませんでした。
#解決法
下記の記事を参考にして解決。
https://note.com/axg28923/n/na41c975d212c
まずAnaconda promptでエラーが吐かれた場所を確認。
Successfully opened dynamic library cudnn64_7.dll
がありcudnn64_7.dllファイルをtennsorflowが読みに行けている。
問題は、
Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILE
とあるのでGPUは動く気はある。問題はメモリ。
環境変数を設定して対応。
windowsの検索窓から「システム環境変数の編集」を選択。
詳細設定から環境変数を選択。
システム環境変数を新規登録。
変数名は「TF_FORCE_GPU_ALLOW_GROWTH」
変数値は「true」と記入。
再起動すれば完了。
晴れてcudnnが使えるようになりました。