torch报错AssertionError: Torch not compiled with CUDA enabled解决方法 torch适配CUDA降版本、选择gpu版本最终方案


风晓
风晓 2024-01-08 15:08:08 66671 赞同 0 反对 0
分类: 资源
torch报错AssertionError: Torch not compiled with CUDA enabled解决方法 torch适配CUDA降版本、选择gpu版本最终方案

报错情况
报错一
在任意python文件下运行这几行命令

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
print("GPU索引号:", torch.cuda.current_device())    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(1))    # 根据索引号得到GPU名称
输出、报错如下:

是否可用: True
...
RuntimeError: The NVIDIA driver on your system is too old (found version 10020).
然后在尝试降版本后出现第二个报错:

报错二
同样的命令

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
print("GPU索引号:", torch.cuda.current_device())    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(1))    # 根据索引号得到GPU名称
输出结果:

是否可用: False
...
AssertionError: Torch not compiled with CUDA enabled
解决办法
首先命令行输入nvidia-smi,查看CUDA版本:

nvidia-smi
查看得到结果:


得到服务器的CUDA版本为10.2.

然后去torch官网中查看老版本CUDA适配的torch版本:

https://pytorch.org/get-started/previous-versions/


下面就要在镜像源中找到这样的torch版本:1.12.1以及适配gpu

比如我们在北外的torch镜像源中找:

https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

我们是linux版本,就选linux:


看到了如下的:


这就是我们要找的。右键点击蓝字,'右键'-'复制链接地址',得到下载链接,直接用这个包安装pytorch:

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.12.1-py3.8_cuda10.2_cudnn7.6.5_0.tar.bz2
然后用以下命令,自动安装适配的依赖包:

conda install pytorch
这样就安装成功了,再次调用以上python命令测试CUDA:

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
print("GPU索引号:", torch.cuda.current_device())    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(1))    # 根据索引号得到GPU名称
得到结果:

True
2
10.2
0
Tesla T4
torchvision也是同理:

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/torchvision-0.13.1-py38_cu102.tar.bz2
conda install torchvision
然后具体介绍一下这几个报错,这样也把我一路摸着石头过河的经历给复述一下。

报错RuntimeError: The NVIDIA driver on your system is too old (found version 10020).的原因
你安装的torch和你的CUDA版本不匹配。

比如我的环境中就是10.2的CUDA和1.13.0(或者1.13.1,反正是1.13版本)的pytorch冲突了。

NVIDIA too old解决办法
降低pytorch版本。

升级CUDA。

解决办法很多,可以参考网上其他文章。本文重点在第二个报错Torch和CUDA的编译(compile)问题,因为我自己是使用学校的机房,没权限升级CUDA,所以介绍一下我尝试过的第一个办法,降低pytorch版本:

你在看这一段时,会发现前面和我最终的解决方法是一样的,但后面不同的方法让我走了弯路。

首先确定你的CUDA版本,在Linux命令行终端中输入nvidia-smi:

nvidia-smi
查看得到结果:


得到服务器的CUDA版本为10.2.

然后去torch官网中查看老版本CUDA适配的torch版本:

https://pytorch.org/get-started/previous-versions/


好了,到这一步,你可能就会按照它上面的操作,安装这几个版本的库了。

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch
不过你可能会碰到的问题有:

某个包版本不匹配当前python版本

某个包版本和其他包冲突

某个包安装的版本和CUDA版本不匹配

可能你改进了第一、二个问题,终于把整套pytorch、torchvision下下来了,但你还是要面对第三个问题,就是继而报错AssertionError: Torch not compiled with CUDA enabled,不过我一步步介绍我的经历,先看看如何面对第一和第二个问题的:

自己调试去安装,我试过,最后还是选择了使用如下命令:

conda install --override-channels -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ pytorch torchvision cudatoolkit=10.2
这条命令是说,指定使用镜像源https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/,指定cudatoolkit版本适配10.2的CUDA,然后根据这个适配,下载pytorch包和torchvision包。

下载好了,尝试代码,你会得到:

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
print("GPU索引号:", torch.cuda.current_device())    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(1))    # 根据索引号得到GPU名称
 
(输出结果:)
是否可用: False
...
AssertionError: Torch not compiled with CUDA enabled
这就是第二个报错了。

报错AssertionError: Torch not compiled with CUDA enabled的原因
而第二个报错则是因为你安装的torch是cpu版本的。比如你可以在你的conda环境下查找torch版本:

conda list | grep torch
结果如下:

(base) weinz@dlp01:~$ conda list | grep torch
(正常使用命令无法看到下面注释的一行,为了直观显示,我粘贴过来了)
# Name                    Version                   Build  Channel
pytorch                   1.12.1          cpu_py38he8d8e81_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
torchvision               0.13.1          cpu_py38h164cc8f_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
其中包版本号Version后面的Build列,就能看到torch适配的是cpu版本。

发现问题后,改成gpu版本的就可以了。

具体方法就接上我最终的解决方案了:

具体解决方法
首先回顾一下我们需要的torch版本:


在镜像源中找到1.12.1以及适配gpu的pytorch、torchvision

进入镜像源https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/


这就是我们要找的。右键-复制链接地址,直接用这个包安装pytorch:

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.12.1-py3.8_cuda10.2_cudnn7.6.5_0.tar.bz2
可以查看一下,这样下载的是否是gpu版本的。输入查找命令:

conda list | grep torch
得到结果:


可以看到,显示的是cuda,这个就是gpu版本的了。

然后用以下命令,自动安装适配的依赖包:

conda install pytorch
这样就安装成功了,再次调用以上python命令测试CUDA:

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
print("GPU索引号:", torch.cuda.current_device())    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(1))    # 根据索引号得到GPU名称
得到结果:

True
2
10.2
0
Tesla T4
torchvision也是同理:

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/torchvision-0.13.1-py38_cu102.tar.bz2
conda install torchvision
总结
看着网上的文章,还有问chatGPT,一步步解决了这个问题,还是值得的。

有的方法在选择gpu版本的时候,选择这样:

conda install -c 镜像源 后面调试版本
conda install -c 'http...' pytorch=1.12.1 torchvision=0.13.0 cudatoolkit=10.2
conda install -c 'http...' pytorch=1.9.1 torchvision=0.8.0 cudatoolkit=10.2
...
一步步调版本,我在调的时候发现太搞了,而且试出来下好配套的了,可能下的也是cpu版本的。

具体可参考这篇文章:

https://blog.csdn.net/u013468614/article/details/125910538

可能更了解镜像源内部选择的方式,会有更好的解决方法。不过在此之前,这种直接下载你需要的版本然后让镜像源给你补依赖包才是最高效的方法。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
国产操作系统环境搭建(内含镜像资源链接和提取码)  92
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  90
分享几个在日常办公中可以用到的shell脚本  81
以openkylin为例编译安装内核  79
常见系统问题及其解决方法  79
bat脚本生成查看电脑配置\硬件信息  78
分享解决宏碁电脑关机时自动重启的方法  75
统信uosboot区分未挂载导致更新备份失败  70
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  69
统信uos安装mysql的实例参考  64
最近下载排行榜
国产操作系统环境搭建(内含镜像资源链接和提取码) 0
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
分享几个在日常办公中可以用到的shell脚本 0
以openkylin为例编译安装内核 0
常见系统问题及其解决方法 0
bat脚本生成查看电脑配置\硬件信息 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
统信uos安装mysql的实例参考 0
作者收入月榜
1

prtyaa 收益401.13元

2

zlj141319 收益237.91元

3

哆啦漫漫喵 收益231.75元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!