汗かきAI開発

NVIDIA V100を4万円代で借りた話など。

PytorchのGPUメモリの枯渇を解消する

開発中のAIチャットのユーザーをPythonで30人作り、チャットを繰り返すと徐々に重くなり処理しきれない状態になることが分かり、調べると、

Pytorchでは、計算履歴を保存しGPUメモリを枯渇してしまうとのこと。

(Pytorchは、ディープラーニングフレームワークのひとつ)

 

AIが計算する度にGPUメモリを解放し空き容量を回復させる必要がある。

 

2つの対策で回避する作戦。

 

1 計算履歴を保存しない設定で計算。

→ with torch.no_grad(): の中で実行。

 

pytorch.org

 

2 使われていないメモリを解放する

→ torch.cuda.empty_cache でDelする

 

pytorch.org

 

 

念には念を入れて、上記2つをAIチャットがメッセージを生成するClassに充て、

GPU使用率をモニタリングします。

 

GPU使用率を1秒毎にCSV形式で出力


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%ほどなのでハードのスペックも丁度良さそうです。