Error: Session cannot generate requests tensorflow の解決方法

表題のエラーに数時間苦労しました．．．
もし同様のエラーでお悩みの方の参考となれば幸いです．

# ハマりポイント
VScode上で，GPUとTensorFlowを用いて学習させたところ，モデルのトレーニングを行うセルで，突然以下のエラーが発生するようになりました．

```
Error: Session cannot generate requests tensorflow
```
また，一度このエラーが発生すると，以降はどのセルにおいても同様のエラーが発生するようになります．

# 環境

```
Ubuntu 18.04
VScode 1.61
Python 3.8
Tensorflow 2.5
```

# 解決方法
結論から言うと，無駄なプロセスにGPUメモリが割かれていて，十分なメモリが確保できないことが原因の一つであると考えられます．
そのため，まずは，現在のGPUプロセスを確認してみます．

以下のコマンドから，GPUの状況を確認してください．

```terminal
~$ 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`が異常に多いことがわかります．
さらに，対応する処理を実行していないにも関わらず，無駄なプロセスが残っていることがわかります．
そこで，以下のコマンドを実行することで，無駄なプロセスを強制終了して，メモリの確保を行います．

```terminal
sudo kill -9 （　プロセス番号 PID）
　　　　※ -9：強制終了オプション
```

これで，対応するプロセス（今回は，`27642`,`28308`）を強制終了することで，明示的にメモリの確保を行うことができます．

# 〆
おそらく表題のエラーは，様々な原因に拠って発生するため，本記事の方法で必ず解決できるとは思いませんので，参考程度に活用してください．