問題
在進(jìn)行深度學(xué)習(xí)的模型訓(xùn)練時(shí),經(jīng)常會遇到顯存溢出的報(bào)錯:
RuntimeError: CUDA out of memory.
輸出如下圖所示:
分析
打開一個終端,輸入以下命令查看GPU使用情況:
nvidia-smi
輸出如下圖所示:
使用nvidia-htop可以進(jìn)一步查看更為詳細(xì)的內(nèi)容。
nvidia-htop:A tool for enriching the output of nvidia-smi.
可以通過下列代碼進(jìn)行安裝:
pip3 install nvidia-htop
打開一個終端,運(yùn)行如下代碼:
nvidia-htop.py
# nvidia-htop.py --color # 可以附帶顏色,更加炫酷
輸出如下圖所示:
從圖中可以看出編號為0,1,2,3的GPU利用率均為0,但四張顯卡均有進(jìn)程占用了GPU的顯存,從而導(dǎo)致顯存不足的問題。
解決
解決上述問題,只需將占用顯存的進(jìn)程殺死即可:
- 正常殺死進(jìn)程:
kill -15 pid號
- 強(qiáng)制殺死進(jìn)程:
kill -9 pid號
其他報(bào)錯原因
若kill后仍報(bào)錯RuntimeError: CUDA out of memory.,嘗試以下方法:
1、降低batch size大小,或采用梯度累積的方法從而提高實(shí)際batch size的大小;
2、把網(wǎng)絡(luò)模型改?。?br> 3、把中間變量的大小(尺寸)改??;
4、換用顯存更大的顯卡。
5、在報(bào)錯處、代碼關(guān)鍵節(jié)點(diǎn)(一個epoch跑完…)插入以下代碼(目的是定時(shí)清內(nèi)存):文章來源:http://www.zghlxwxcb.cn/news/detail-650379.html
import torch, gc
gc.collect()
torch.cuda.empty_cache()
參考文獻(xiàn)
pytorch: 四種方法解決RuntimeError: CUDA out of memory. Tried to allocate … MiB
深度學(xué)習(xí)中GPU和顯存分析
淺談深度學(xué)習(xí):如何計(jì)算模型以及中間變量的顯存占用大小文章來源地址http://www.zghlxwxcb.cn/news/detail-650379.html
到了這里,關(guān)于報(bào)錯解決:RuntimeError: CUDA out of memory.的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!