ubuntu下查看GPU真实使用情况的方式及解决显存不够的一般方法(gpustat)
背景:
我经常使用nvidia-smi查看gpu使用情况,然而最近发现,按照nvidia-smi显示的显存占用,应该还是有很多显存空间的,但是老是报关于out of memery的错误,batchsize不断改小,直到从16改到2感觉事情不对,于是就有了这篇博文。
显存不够,我做了哪些工作
训练的时候
torch.cuda.empty_cache()清空缓冲区,这句加在
pred = model(input)之前
test的时候
with torch.no_grad():
result = model(return_loss=False, rescale=not show, **data)
自动混合浮点精度(参考)
对于我有效的解决方式
可能是由于使用nohup是的一些命令退出的时候没有完全释放内存。
所以
1,查看实际内存
取缔nvidia-smi转而使用gpustat
gpustat比nvidia-smi显示的显存占用更加真实(大),但是一些占用了显存的进程看不到
使用如下命令:
fuser -v /dev/nvidia*
其实我也用了kill命令,可是还是有残留,查到进程后,可以使用如下命令kill用户所有进程
killall -u xiaoming