电脑基础 · 2023年4月19日

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

前言

不得不说环境是一个非常玄学的东西,距离上次成功在 FB15k-237 数据集上跑 convE 模型没多久

ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)_Starprog_UESTC_Ax的博客-CSDN博客_conve 知识图谱ConvE(KGE模型)—论文复现(Ubuntu 20.04)(2022.03.07)玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装https://angxiao.blog.csdn.net/article/details/123315377今天又在更换自己的数据集重跑 convE 模型,很神奇的报错:

RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED

在跑两次模型之间这段时间,我并没有动我的 GPU 环境,包括内核都用的之前的:

内核版本:5.13.0-35-generic

uname -a

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

另外,用这个环境跑 OpenKE【这 个工具包不含convE 】 也都没问题


网上搜了这个错误,有的说是指定显卡号,大多说是 cuda 和 cuDNN 版本不匹配的问题,让安装对应版本的 cuDNN。由于我之前装的时候,cuda 和 cuDNN 版本是匹配的【是否匹配,在 cuDNN 官网 可查】,所以我将 cuDNN 卸载重装,最终成功,把今天排错解决过程放在下边,大家有需要可以参考


一、检查是否有可用的显卡

输入 python 进入环境,运行命令:

import torch
print(torch.cuda.device_count()) #可用GPU数量

如果 没有可用显卡 或 GPU 环境配置有误,就会输出 0,在模型运行中,就会报以下错误:

cuda runtime error (38) : no CUDA-capable device is detected

我的莫名其妙重启解决了这个错误【也可以通过开机的高级选项,换个内核版本看看】,输出 0 这种情况每台机器不一样,详细原因可以百度对应解决,多说无益...

如果输出大于等于 2,前言部分所提错误可能是由于没有指定显卡号造成的,可以在模型代码前加入一行:

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

由于我的输出为 1,错误应该不在这一节 


二、检查 cuda 版本 和 cuDNN 版本

① 检查 cuda 版本

查询当前驱动支持的最高版本:

nvidia-smi

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

查询目前安装的 cuda 版本:

nvcc -V

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

也可以通过如下命令,看到更为详细的信息,包括与之 communicate 的驱动:

cat /usr/local/cuda/cuda.json

②  检查 cuDNN 版本

有 cudnn.h 文件但无输出,版本未知,理论上,我之前安装的 v 8.3.0,不会去傻乎乎动这个库的

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

三、卸载并重新安装 cuDNN 

① 卸载 cuDNN v 8.3.0

查找出现位置:

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

注意按照下图顺序卸载【含 2004 的那项那个不卸】:

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装


② 安装 cuDNN v 8.3.0

重复内容,不再赘述,参考以下博文:

(15条消息) Ubuntu 20.04 系统(双系统环境下)中深度学习环境配置(Pytorch + GPU)_Starprog_UESTC_Ax的博客-CSDN博客_ubuntu子系统玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装https://angxiao.blog.csdn.net/article/details/123196056不过在验证是否安装成功阶段,报了个小错:

AttributeError: module 'torch.jit' has no attribute 'unused'

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

原因:torch 和 torchvision 版本不匹配

解决:

安装 torch 1.4.0 版本:

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

安装 torchvision 0.5.0 版本

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装

再次验证,成功:

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装


四、重跑模型 convE

python wrangle_KG.py BA
CUDA_VISIBLE_DEVICES=0 python main.py --model conve --data BA \
                                      --input-drop 0.2 --hidden-drop 0.3 --feat-drop 0.2 \
                                      --lr 0.003 --preprocess

 成功执行:

玄学错误:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解决方案——cuDNN 卸载并重装


附录

换源加速安装

如果下载速度很慢,在原来安装语句上添加 -i 和 如下任一镜像地址即可切换国内服务器:

阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/