赞
踩
明明显存充足,我们服务器有两张卡,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的时候,可以看看是不是自己模型太大,或者计算量太大,试试适量减少一些冗余计算。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。