GPU很空闲总是提示GPU out of memeory

nvidia-smi 和watch -n 1 nvidia-smi命令显示GPU占用为0,没有进程使用

GPU很空闲总是提示GPU out of memeory_第1张图片

GPU0上有11G空闲,但是训练模型时报错:

提示:

CUDA out of memory. Tried to allocate 1.12 GiB (GPU 0; 11.17 GiB total capacity; 9.99 GiB already allocated; 877.75 MiB free; 1.25 MiB cached)

需要1.12G内存,但是不够。明明有11.17G啊!

再次命令查看GPU占用,确认没有进程在跑。那为什么分配了9.99G?纳闷!!!

网上找了各种解决GPU内存泄漏,减少变量存储的方法,依然不管用。

关键是这句话:

Tried to allocate 1.12 GiB (GPU 0; 11.17 GiB total capacity; 9.99 GiB already allocated; 877.75 MiB free; 1.25 MiB cached)

我理解错误了!我以为自己程序一共需要1.12G内存,9.99G是被别人占用了(然而并没有其他进程)。

原来是报错里面提到allocated 9.99G的内存其实就是已经分配给我的进程的内存,但是我还需要1.12G内存,剩下的内存不够,所以报错!!!!

最后把图片尺寸调小,batchsize调小,程序可以正常运行!特别是没调图像尺寸前,GPU内存占用真的太大!

你可能感兴趣的:(Pytorch,机器学习)