PytorchのGPUメモリの枯渇を解消する
開発中のAIチャットのユーザーをPythonで30人作り、チャットを繰り返すと徐々に重くなり処理しきれない状態になることが分かり、調べると、
Pytorchでは、計算履歴を保存しGPUメモリを枯渇してしまうとのこと。
(Pytorchは、ディープラーニング用フレームワークのひとつ)
AIが計算する度にGPUメモリを解放し空き容量を回復させる必要がある。
2つの対策で回避する作戦。
1 計算履歴を保存しない設定で計算。
→ with torch.no_grad(): の中で実行。
2 使われていないメモリを解放する
→ torch.cuda.empty_cache でDelする
念には念を入れて、上記2つをAIチャットがメッセージを生成するClassに充て、
GPU使用率をモニタリングします。
nvidia-smi \
--query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free,memory.used\
--format=csv \
-l 1
timestamp, name, utilization.gpu [%], utilization.memory [%], memory.used [MiB], memory.free [MiB], memory.used [MiB]
2021/12/14 00:15:03.070, Tesla V100-PCIE-16GB, 51 %, 20 %, 6951 MiB, 9209 MiB, 6951 MiB
2021/12/14 00:15:04.070, Tesla V100-PCIE-16GB, 0 %, 0 %, 6951 MiB, 9209 MiB, 6951 MiB
2021/12/14 00:15:05.071, Tesla V100-PCIE-16GB, 55 %, 22 %, 7567 MiB, 8593 MiB, 7567 MiB
2021/12/14 00:15:06.071, Tesla V100-PCIE-16GB, 0 %, 0 %, 6951 MiB, 9209 MiB, 6951 MiB
2021/12/14 00:15:07.072, Tesla V100-PCIE-16GB, 60 %, 24 %, 8221 MiB, 7939 MiB, 8221 MiB
2021/12/14 00:15:08.073, Tesla V100-PCIE-16GB, 54 %, 22 %, 7699 MiB, 8461 MiB, 7699 MiB
2021/12/14 00:15:09.073, Tesla V100-PCIE-16GB, 0 %, 0 %, 6951 MiB, 9209 MiB, 6951 MiB
2021/12/14 00:15:10.074, Tesla V100-PCIE-16GB, 56 %, 22 %, 7637 MiB, 8523 MiB, 7637 MiB
2021/12/14 00:15:11.074, Tesla V100-PCIE-16GB, 59 %, 24 %, 7591 MiB, 8569 MiB, 7591 MiB
memory.free が、元の9209MiBに戻っていることが分かります。
utilization.gpu(GPU使用率)も、60%ほどなのでハードのスペックも丁度良さそうです。