说明
本文记录本人解决 CUDNN_STATUS_EXECUTION_FAILED 报错的过程,纯流水式记账,可供参考。
问题描述
本人在使用 Pytorch Lightning 训练模型时,GPU 训练模型一直跑不起来。每次跑都会报不一样的错误,但每次最后一行的内容都是下面的报错信息:
RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED
运行环境为:
Python: 3.7
pytorch: 1.8.0+cu111
cuda: 11.1
网上的解决方案非常的多,总结起来主要就是:(1)检查 python pytorch cuda 之间版本的兼容性;(2)代码有bug;等等。发现最多的还是版本兼容性问题。
解决方案
本文先是排查了代码可能存在的bug,发现能够在 cpu 环境下训练起来,所以就断定代码逻辑上没有问题。看网上的各种解决方案,猜测可能是自己的版本也不兼容,但是照着网上的教程一顿操作之后,发现自己版本应该是匹配的。顿时就失去了方向。此时也刚好到了饭点,就去吃了个饭,吃饭的时候就一直在想。cpu 能跑起来,说明代码没问题,使用 pytorch lightning 跑 gpu 训练就跑不起来,说明可能 pytorch lightning 有问题。于是就想着先用 pytorch 自己处理训练部分代码,但是用 pytorch 自己处理训练的方法之前是能跑起来的,只不过在另一个 conda 环境下跑的。此时就想着会不会是 cuda 环境被变了,于是试着跑自己之前的代码,发现也能跑起来。说明服务器是没问题,那就是自己新装的这个 conda 环境有问题,于是和之前的 conda 环境作比较,发现之前的 pytorch 版本是 1.9.0,于是就想着在试一次,把 pytorch 版本换成 1.9.0。结果竟然神奇的解决了这个报错。现在还不知道是为什么,大概率也是版本不匹配。