tensorflowがGPUを認識するにはcuDNNが必要

基本的なことばかりだけれど、別のPCでBERTの事前学習を試そうとしたらGPU側にデータがロードされず、CPUの使用率とメモリがガッ、と増加。

 

import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
 

 

を実行しても、

 

Num GPUs Available:  0

 

と出てくる。つまりGPUが認識されていない。あれ?、tensorflowは2.X系では自動的にGPUを使う仕様ではなかったのか、と思ってコンソールの出力を見るとcuDNNのDLLが見つからない、とのこと。ということでダウンロード、解凍し、PATHを通すとちゃんと認識され、事前学習のスクリプトを走らせるとGPUメモリにデータがロードされるようになった。ただし、メモリ容量が小さいためか途中で

 

RESOURCE_EXHAUSTED: failed to allocate memory

 

というメッセージを出して終了してしまう。かなりbatch_sizeは小さくしたのだけれどダメであった。max_seq_lengthを小さくするか。ただし、どうやら事前学習用のデータも合わせないと行けないようなので、またデータの再作成が必要。

 

というわけで、PytorchではcuDNNが必要とされなかったけれど、tensorflowでは必要。色々なのだった。