问题
在进行深度学习的模型训练时,经常会遇到显存溢出的报错:
RuntimeError: CUDA out of memory.
输出如下图所示:
分析
打开一个终端,输入以下命令查看GPU使用情况:
nvidia-smi
输出如下图所示:
使用nvidia-htop可以进一步查看更为详细的内容。
nvidia-htop:A tool for enriching the output of nvidia-smi.
可以通过下列代码进行安装:
pip3 install nvidia-htop
打开一个终端,运行如下代码:
nvidia-htop.py
# nvidia-htop.py --color # 可以附带颜色,更加炫酷
输出如下图所示:
从图中可以看出编号为0,1,2,3的GPU利用率均为0,但四张显卡均有进程占用了GPU的显存,从而导致显存不足的问题。
解决
解决上述问题,只需将占用显存的进程杀死即可:
- 正常杀死进程:
kill -15 pid号
- 强制杀死进程:
kill -9 pid号
其他报错原因
若kill后仍报错RuntimeError: CUDA out of memory.,尝试以下方法:
1、降低batch size大小,或采用梯度累积的方法从而提高实际batch size的大小;
2、把网络模型改小;
3、把中间变量的大小(尺寸)改小;
4、换用显存更大的显卡。
5、在报错处、代码关键节点(一个epoch跑完…)插入以下代码(目的是定时清内存):文章来源:https://www.toymoban.com/news/detail-650379.html
import torch, gc
gc.collect()
torch.cuda.empty_cache()
参考文献
pytorch: 四种方法解决RuntimeError: CUDA out of memory. Tried to allocate … MiB
深度学习中GPU和显存分析
浅谈深度学习:如何计算模型以及中间变量的显存占用大小文章来源地址https://www.toymoban.com/news/detail-650379.html
到了这里,关于报错解决:RuntimeError: CUDA out of memory.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!