当前位置:   article > 正文

RuntimeError: CUDA out of memory 解决办法_runtimeerror: cuda out of memory. tried to allocat

runtimeerror: cuda out of memory. tried to allocate 2.37 gib (gpu 0; 15.71 g

服务器的gpu内存不够,导致程序运行失败。
问题如下:

RuntimeError: CUDA out of memory. Tried to allocate 38.15 GiB (GPU 0; 31.75 GiB total capacity; 1.07 GiB already allocated; 26.18 GiB free; 3.45 GiB cached)
  • 1

内存不够的解决办法:

1.不使用梯度方法

在test过程中,在dataloader循环前加入,

with torch.no_grad():
  • 1

即不使用梯度回传,节省计算。

2.torch.nn.DataParallel()

针对拥有多卡的方法,可以使用该函数将内存较为平均的放到每张卡上,而不是只用一张卡来计算。
语句为:

device = 'cuda' if torch.cuda.is_available() else 'cpu'
net = net.to(device)
if device == 'cuda':
    net = torch.nn.DataParallel(net)
    cudnn.benchmark = True
  • 1
  • 2
  • 3
  • 4
  • 5

3.减少batch_size

有时一个batch的size过大,会导致一个batch的训练过于冗余,减少batch_size的大小能省很多内存。

parser.add_argument('--batch_size', default=256, type=int, help='Number of images in each mini-batch')
  • 1

如以上,从1024减小到256,训练模型效果没有降低太多,但保证在当前gpu环境下可以很好运行。

4.释放无关内存

在报错的行前后都加上:

if hasattr(torch.cuda, 'empty_cache'):
	torch.cuda.empty_cache()
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/220624
推荐阅读
相关标签
  

闽ICP备14008679号