表題のエラーに数時間苦労しました...
もし同様のエラーでお悩みの方の参考となれば幸いです.
ハマりポイント
VScode上で,GPUとTensorFlowを用いて学習させたところ,モデルのトレーニングを行うセルで,突然以下のエラーが発生するようになりました.
Error: Session cannot generate requests tensorflow
また,一度このエラーが発生すると,以降はどのセルにおいても同様のエラーが発生するようになります.
環境
Ubuntu 18.04
VScode 1.61
Python 3.8
Tensorflow 2.5
解決方法
結論から言うと,無駄なプロセスにGPUメモリが割かれていて,十分なメモリが確保できないことが原因の一つであると考えられます.
そのため,まずは,現在のGPUプロセスを確認してみます.
以下のコマンドから,GPUの状況を確認してください.
~$ nvidia-smi -l 1
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.73.01 Driver Version: 460.73.01 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 RTX A6000 On | 00000000:81:00.0 Off | Off |
| 30% 37C P8 20W / 300W | 48679MiB / 48685MiB | 0% Default |
| | ↑ここの使用量が異常に多い| N/A |
+-------------------------------+----------------------+----------------------+
| 1 Quadro P2200 On | 00000000:C1:00.0 On | N/A |
| 54% 48C P0 28W / 75W | 1568MiB / 5057MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 27642 C ...nv_tf2_*******/bin/python 47407MiB | <=無駄
| 0 N/A N/A 28308 C ...nv_tf2_*******/bin/python 1269MiB | <=無駄
| 1 N/A N/A 2180 G /usr/lib/xorg/Xorg 109MiB |
| 1 N/A N/A 2449 G /usr/bin/gnome-shell 118MiB |
| 1 N/A N/A 3610 G /usr/lib/xorg/Xorg 454MiB |
| 1 N/A N/A 3733 G /usr/bin/gnome-shell 148MiB |
| 1 N/A N/A 4909 G ...AAAAAAAAA= --shared-files 203MiB |
| 1 N/A N/A 12491 G ...AAAAAAAAA= --shared-files 40MiB |
| 1 N/A N/A 27642 C ...nv_tf2_*******/bin/python 183MiB | <=無駄
| 1 N/A N/A 27974 G ...AAAAAAAAA= --shared-files 116MiB |
| 1 N/A N/A 28308 C ...nv_tf2_*******/bin/python 183MiB | <=無駄
+-----------------------------------------------------------------------------+
出力結果を見ると, GPU:0
であるRTX A6000
のMemory-Usage
が異常に多いことがわかります.
さらに,対応する処理を実行していないにも関わらず,無駄なプロセスが残っていることがわかります.
そこで,以下のコマンドを実行することで,無駄なプロセスを強制終了して,メモリの確保を行います.
sudo kill -9 ( プロセス番号 PID)
※ -9:強制終了オプション
これで,対応するプロセス(今回は,27642
,28308
)を強制終了することで,明示的にメモリの確保を行うことができます.
〆
おそらく表題のエラーは,様々な原因に拠って発生するため,本記事の方法で必ず解決できるとは思いませんので,参考程度に活用してください.