Pytorch-cuDNN version mismatch: PyTorch was compiled against 7005 but linked against 7103

本文详细介绍了如何解决从PyTorch 3.0.0升级到3.0.1版本后,因CuDNN版本不匹配导致的运行时错误。通过查找并替换CuDNN版本,正确配置环境变量,最终成功更新并验证CuDNN版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事情是这样的,从pytorch=3.0.0换了个版本到pytorch=3.0.1的时候,conda update完就报这个运行时错误了。
原因是PyTorch用cudnn=7.0.5编译的,但是在这个环境中只找到了版本为7.1.3cudnn,版本错误改了好久,大部分是说把7.1.3的环境从$PATH变量中删除就好了,可服务器上好几个环境怎么都没找到7.0.5的,不知道删了之后该链接到哪儿。问题截图如下:
在这里插入图片描述

解决方案:

安装cudnn=7.0.5,并将libcudnn.so链接到7.0.5版本上。

1. 查看cuda版本:

cat /usr/local/cuda/version.txt , 这里我的cuda是9.0.176。

2. 下载对应的cudnn

路径:https://developer.nvidia.com/rdp/cudnn-archive ,这里我在服务器上配置的,所以下载的Linux版本的。
在这里插入图片描述
下载完是后缀为solitairetheme8的文件~
在这里插入图片描述

3. 解压

cp cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.0.5.tgz
tar -zxvf cudnn-9.0-linux-x64-v7.0.5.tgz

4. 复制到工作目录下

这里建议查一下当前版本7103在什么位置,看到网上好多是放在/usr/local/cuda/lib64下,刚开始我也放在这个底下了,可还是没有用。后来通过find ./ -name *cudnn*在当前用户根目录下查了下包含cudnn的都有哪些,才发现在anaconda3/envs/sanra123/lib下包含了cudnn=7.1.3的版本(这里sanra123是自己的conda下的环境名哦),实际工作时会在这个目录下去找。所以下一步把cudnn=7.0.5的版本复制到这个目录下,配置一下环境变量。

sudo cp cuda/include/cudnn.h /home/root/anaconda3/envs/sanra123/include 
sudo cp cuda/lib64/libcudnn* /home/root/anaconda3/envs/sanra123/lib
sudo chmod a+r /home/root/anaconda3/envs/sanra123/include/cudnn.h /home/root/anaconda3/envs/sanra123/lib/libcudnn*

5. 配置环境变量

设置环境变量有两个位置,/etc/profile和自己用户名下的~/.bashrc。服务器上就在自己的用户名下进行了配置。这段我其实忘了有没有用了(大概率是没用的),因为之前其实在/etc/profile下已经找到这个环境变量了,也是指到lib64下。后面是自己改了下.bashrc设错了,就又设了下。不过,记一下备忘吧,其实是不需要这步了的。

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export PATH=/home/root/anaconda3/bin:$PATH

6. 设置软链接

进入/home/root/anaconda3/envs/sanra123/lib目录(即刚刚找到的工作目录),查看有关cudnn的文件,可以看到,虽然将7.0.5移动到了这里,但实际链接到的还是7.1.3,所以这里需要改一下软链接指向啦。
在这里插入图片描述

sudo ln -sf libcudnn.so.7.0.5 libcudnn.so
sudo ln -sf libcudnn.so.7.0.5 libcudnn.so.7

7.测试输出

改好了,到python中测一下。输出为7005的cudnn版本证明我们终于改好这个问题啦!真棒,夸夸~

import torch
print(torch.backends.cudnn.version())

参考:
cudnn官方(5-6页)
cudnn安装步骤看的这里啦,不过配置那步感觉要改一下的
谢谢这里的链接提示

<think>好的,我现在要解决用户遇到的RuntimeError,错误信息是cuDNN版本不兼容:PyTorch编译时使用的是8.3.2,但运行时链接的是8.2.4。首先,我需要理解这个错误的根本原因。 用户可能是在安装或更新PyTorch后遇到这个问题。cuDNN是NVIDIA的深度神经网络库,PyTorch依赖它来加速计算。版本不匹配意味着编译时和运行时使用的cuDNN版本不一致,导致兼容性问题。 接下来,我需要考虑可能的解决方案。首先,最常见的方法是确保PyTorchcuDNN版本兼容。用户可能需要升级或降级其中一个。例如,升级PyTorch到与现有cuDNN兼容的版本,或者重新安装cuDNN以匹配PyTorch所需的版本。 另外,用户可能没有正确安装cuDNN。需要检查环境变量,比如LD_LIBRARY_PATH是否指向正确的cuDNN库路径。有时候,系统中存在多个cuDNN版本,导致链接错误。 还有可能需要检查conda或pip安装的cuDNN是否与PyTorch匹配。比如,使用conda安装PyTorch时,conda可能会自动处理cuDNN依赖,但如果有手动安装的cuDNN,可能会冲突。 我应该分步骤建议用户:首先确认当前安装的cuDNN版本,然后查看PyTorch所需的版本,接着通过升级、降级或重新安装来对齐版本。同时,提醒用户检查环境变量和安装路径,确保没有冲突。 用户可能不太清楚如何检查cuDNN版本,所以需要给出具体命令,比如在Python中运行torch.backends.cudnn.version()。另外,安装cuDNN的正确步骤可能也需要指导,比如从NVIDIA官网下载对应版本,替换库文件,或者使用包管理器安装。 还要注意用户的环境,比如是否使用虚拟环境,是否有多个Python环境导致版本混淆。建议用户在虚拟环境中操作,避免系统全局的影响。 最后,如果以上方法无效,可能需要完全卸载PyTorchcuDNN,然后重新安装指定版本,确保版本一致性。同时,提醒用户备份环境,防止操作失误。</think>这个错误提示说明你当前使用的PyTorch版本与系统安装的cuDNN库版本存在不兼容。以下是分步解决方案: $$ \text{RuntimeError: cuDNN版本冲突} = \begin{cases} \text{编译版本} & 8.3.2 \\ \text{运行版本} & 8.2.4 \end{cases} $$ ### 第一步:验证版本信息 1. 查看PyTorchcuDNN编译版本: ```python import torch print(torch.backends.cudnn.version()) # 输出编译时版本 ``` 2. 查看系统实际链接的cuDNN版本: ```bash whereis cudnn # 查找库文件位置 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 ``` ### 第二步:解决方案选择 $$ \text{解决方案} \in \begin{cases} \text{方案A:升级cuDNN} \\ \text{方案B:降级PyTorch} \\ \text{方案C:重建环境} \end{cases} $$ #### 方案A:升级cuDNN到v8.3.2(推荐) 1. 从NVIDIA官网下载对应版本: ```bash wget https://developer.download.nvidia.com/compute/cudnn/secure/8.3.2/local_installers/11.5/cudnn-linux-x86_64-8.3.2.40_cuda11.5-archive.tar.xz ``` 2. 安装并替换旧版本: ```bash sudo tar -xvf cudnn-linux-x86_64-8.3.2.40_cuda11.5-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include/ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64/ ``` #### 方案B:降级PyTorch到匹配版本 ```bash # 查找支持cuDNN 8.2.4的PyTorch版本 pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html ``` #### 方案C:使用conda重建环境(自动匹配依赖) ```bash conda create -n pytorch_env python=3.9 conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch ``` ### 第三步:验证修复 ```python import torch assert torch.backends.cudnn.version() == 8302 # 8.3.2对应8302 print("✅ 版本匹配成功") ``` ### 常见问题排查表 | 现象 | 解决方法 | |-------|----------| | 多版本CUDA共存 | 在~/.bashrc设置`export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64:$LD_LIBRARY_PATH` | | 权限问题 | 执行`sudo ldconfig`刷新库链接 | | 残留旧版本 | 删除`/usr/local/cuda/lib64/libcudnn.so.8.2.4`等旧文件 | 建议优先采用方案A进行cuDNN升级,这是最彻底的解决方法。如果遇到驱动兼容性问题,可参考NVIDIA官方文档调整CUDA Toolkit版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值