Pytorch运行错误:CUDA out of memory处理过程

1.初始报错

CUDA out of memory. Tried to allocate 244.00 MiB (GPU 0; 2.00 GiB total capacity; 1.12 GiB already allocated; 25.96 MiB free; 1.33 GiB reserved in total by PyTorch)

需要分配244MiB,但只剩25.96MiB空闲。,1.33GiB分配给了PyTorch,不知道能不能重新非给CUDA。

(1)分配出错的代码

result, result_bb = run_meta_tracker(seq, img_list, init_bbox, gt=gt, savefig_dir='', display=args.display)
bbreg_feats = forward_samples(init_net, image1, bbreg_examples, out_layer='features')
feat = net(regions, out_layer=out_layer)
result = self.forward(*input, **kwargs)
x = self.features(x)
result = self.forward(*input, **kwargs)
input = module(input)
result = self.forward(*input, **kwargs)
x_sq = (x**2).unsqueeze(dim=1)

(2)尝试网友给出的方法

Pytorch运行错误:CUDA out of memory处理过程_第1张图片

链接:https://blog.csdn.net/pursuit_zhangyu/article/details/88717635

说明:no_grad这个上下文管理器,在作用域内只做计算,不记录计算图

修改后:CUDA out of memory. Tried to allocate 256.00 MiB (GPU 0; 2.00 GiB total capacity; 1.31 GiB already allocated; 7.96 MiB free; 1.34 GiB reserved in total by PyTorch)

未(mei)能(you)解(ruan)决(yong)

(3)尝试减少输入图片的数量

换用了数据量更少的数据集,但仍然内存不足,我估计是模型本身就很大,原贴用的GTX 1070,我是960M,降维打击啊。

(4)使用CUDA_VISIBLE_DEVICES限制一下使用的GPU

Pytorch运行错误:CUDA out of memory处理过程_第2张图片

链接:https://www.cnblogs.com/jisongxie/p/10276742.html

未(mei)能(you)解(ruan)决(yong)

(6)代码优化

(代码不是自己写的啊,这个可难办了)

(7)缩小图片尺寸

可以确定,跟数据集大小关系不大,就是模型太大的问题。

(8)降低计算的精度,比如float32 变为float16

这个方法肯定会有用,但我还没找到便捷的方法

(9)使用torch.cuda.empty_cache(),释放不需要的显存

有用,但节约的空间还是不够

CUDA out of memory. Tried to allocate 244.00 MiB (GPU 0; 2.00 GiB total capacity; 1.12 GiB already allocated; 191.96 MiB free; 1.16 GiB reserved in total by PyTorch)

 

最后!!!!

问题解决办法是换个好点的显卡,代码优化纯属杂技。

你可能感兴趣的:(Pytorch运行错误:CUDA out of memory处理过程)