赞
踩
在进行深度学习的模型训练时,经常会遇到显存溢出的报错:
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跑完…)插入以下代码(目的是定时清内存):
import torch, gc
gc.collect()
torch.cuda.empty_cache()
pytorch: 四种方法解决RuntimeError: CUDA out of memory. Tried to allocate … MiB
深度学习中GPU和显存分析
浅谈深度学习:如何计算模型以及中间变量的显存占用大小
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。