pytorch中cuda out of memory问题
作者:互联网
在组会前一天遇到这个问题,试了各种解决办法都不可以,简直要疯辽,还等着实验结果做汇报呢……
RuntimeError: CUDA out of memory. Tried to allocate 486.00 MiB (GPU 0; 10.73 GiB total capacity; 8.78 GiB already allocated; 23.62 MiB free; 1.07 GiB cached)
就是这个问题,很奇怪,不知道那1.07GiB到底是什么占了,一样的超参数设置,之前从来没有遇到过这种问题……
言归正传,遇到这个问题,看了很多博客。
-
第一种解决方法
改小batch_size,在一定情况下是有用的。(但是我的已经改成1了,已经不能再小了) -
第二种解决方法
在报错的地方加上这一句torch.cuda.empty_cache()
,这一句本来在我代码的epoch循环里就有了,为了避免错过潜在的解决方案,我还是试了一下,当然,没用…… -
第三种解决方法
加上这一条语句with torch.no_grad():
,很遗憾的是,在验证操作里或许是可以的,但是我的是训练操作出了问题…… -
第四种解决方法
同样,也是在验证操作或者测试操作里加上这么一句model.eval()
,同样,我本来的代码里就有了,而且在验证操作里,同样解决不了我的问题 -
第五种解决方法
loss和评价指标强制转换为float()类型的,或者在每个epoch的最后,都将loss删掉。同样,也尝试了一番,然而,这错误还是倔强地不肯走……
我是真的没法子了,如有大佬有解决方法,烦请指教,感激不尽!!!
标签:loss,问题,pytorch,GiB,memory,解决,操作,方法,cuda 来源: https://blog.csdn.net/Acmer_future_victor/article/details/110695324