赞
踩
服务器的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)
内存不够的解决办法:
在test过程中,在dataloader循环前加入,
with torch.no_grad():
即不使用梯度回传,节省计算。
针对拥有多卡的方法,可以使用该函数将内存较为平均的放到每张卡上,而不是只用一张卡来计算。
语句为:
device = 'cuda' if torch.cuda.is_available() else 'cpu'
net = net.to(device)
if device == 'cuda':
net = torch.nn.DataParallel(net)
cudnn.benchmark = True
有时一个batch的size过大,会导致一个batch的训练过于冗余,减少batch_size的大小能省很多内存。
parser.add_argument('--batch_size', default=256, type=int, help='Number of images in each mini-batch')
如以上,从1024减小到256,训练模型效果没有降低太多,但保证在当前gpu环境下可以很好运行。
在报错的行前后都加上:
if hasattr(torch.cuda, 'empty_cache'):
torch.cuda.empty_cache()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。