Google ColabのGPUメモリについて
最近、機械学習のジョブを回すのにGoogle Colabを利用しているのですが、日によってGPUメモリ周りの挙動が異なるので調べて見ました。
Google ColabではGPUが無料で割り当ててもらえます。ただ、日によってGPUメモリの割り当てが異なるような挙動をします。
例えば、作ったモデルで学習をして、テストデータを流してみようとすると、昨日は動いたのに、今日はresourceexhaustederrorを吐かれて止まるとか...。
ジョブ開始時点でメモリを確認すると良さそう
調べると、ちょくちょく気にしている人がおり、stackoverflowを中心に報告が上がっていました。
ja.stackoverflow.com
以下のコードのように、ジョブの実行前にメモリの割当量を確認しておくと良さそうでした。
#上記URLから引用 !ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi !pip install gputil !pip install psutil !pip install humanize import psutil import humanize import os import GPUtil as GPU GPUs = GPU.getGPUs() # XXX: only one GPU on Colab and isn’t guaranteed gpu = GPUs[0] def printm(): process = psutil.Process(os.getpid()) print("Gen RAM Free: " + humanize.naturalsize( psutil.virtual_memory().available ), " | Proc size: " + humanize.naturalsize( process.memory_info().rss)) print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal)) printm()
今日は以下のような結果でした。
Gen RAM Free: 12.8 GB | Proc size: 155.9 MB GPU RAM Free: 11441MB | Used: 0MB | Util 0% | Total 11441MB