RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED

 报错RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED_第1张图片

解决方法

1、每隔一段时间清除一下缓存【慎用】

if hasattr(torch.cuda, "empty_cache"):
           torch.cuda.empty_cache()
           print("释放无关内存")

我的代码是先train接着validation 然后判读validation的损失再保存模型

具体的我在train和validation里面每个1000个iter使用一次,观察显存状况,在train过程中执行上述代码时显卡使率会有一个断崖式的下降,但马上就恢复到之前的使用率而到了validation过程中,使用上述代码时显存利用率也是瞬间下降,但是不会恢复到之前的使用率。validation中使用上述代码之后显存利用率的暴跌开始让我担心对后面保存的模型权重会不会有不好的影响,于是我读取了一下保存之后的模型,果然有问题。

哭辽~~~~~~~ 

所以兄弟们,如果你们也是先train 接在validation,最后保存模型,在validation中千万别用torch.cuda.empty_cache(),因为它会把train保存的模型权重当成无用内存回收掉。

实际作用:对于我来说只能缓解几个epoch,而且会干掉train过程保存的模型权重,最后还是报同样的错。(不好用)

2、参考下列作者的博客[1],根据作者所说可能的原因有

①没有安装CUDNN
②pytorch和cuda版本不对应。具体来说,是pytorch编译时cuda的版本和环境cuda版本不一致。
③显卡和安装的CUDA及CUDNN版本不兼容。比如2080至少需要 cuda9.2及以上才可以较好运行。
④内存不足,dataloder每次处理的数据过大
⑤显存不足,OOM。有时候当程序调用cuDNN时遇到显存不足,此时可能不会报OOM,而会报cuDNN error
根据我自己的情况,我分析是显存不足

于是我直接在报错的位置加上:try except

RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED_第2张图片

加上try except不能从本质上解决显卡不足的问题,于是我果断租了一个配置更高的服务器。

[1]RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 可能原因_wolf_ray的博客-CSDN博客

你可能感兴趣的:(pytorch,神经网络,深度学习)