显存充足,pytorch却报错CUDA out of memory?(已解决)

问题描述

明明显存充足,我们服务器有两张卡,nvidia-smi 查看时两张卡空闲:
在这里插入图片描述

但是train的时候总是提示“CUDA out of memory”:
在这里插入图片描述

注意!这里的allocated是你自己程序所占用的,我之前理解错了,以为是被别人占用的(然而并没有其他进程)。


原因分析:

原因是cuda内存不够,查了一下试过以下方法(都没解决):

1、改小batchsize,后面调到1了都不行;
2、改小num_worker,设置为0了都不行;
3、用torch.cuda.empty_cache() 清理空闲内存,没啥用(可能我没用对);
4、还有博主建议说改小图像尺寸,我的图像已经是256x256了,不大,所以我没试。


解决方案:

我先是在程序里面查看了一下GPU占用情况:

    # 查看GPU使用情况
    print(torch.cuda.memory_allocated())
    print(torch.cuda.memory_reserved())

然后我发现,在某些代码片段内部,内存占用率就很高了,会不会是某些计算占用内存太多?于是我恍然大悟:由于我是要对比不同编码器的特征提取效果,训练的时候每一个编码器都会运行一遍,占用了大量内存!于是我先注释掉不用的编码器,只留下本次实验想要运行的编码器,问题解决!
所以大家在上述方法都不work的时候,可以看看是不是自己模型太大,或者计算量太大,试试适量减少一些冗余计算。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值