我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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名称

得到结果:

True210.20Tesla T4

torchvision也是同理:

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/torchvision-0.13.1-py38_cu102.tar.bz2conda 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解决办法

  1. 降低pytorch版本

  1. 升级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

不过你可能会碰到的问题有:

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

  1. 某个包版本和其他包冲突

  1. 某个包安装的版本和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  Channelpytorch                   1.12.1          cpu_py38he8d8e81_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/maintorchvision               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名称

得到结果:

True210.20Tesla T4

torchvision也是同理:

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/torchvision-0.13.1-py38_cu102.tar.bz2conda install torchvision

总结

看着网上的文章,还有问chatGPT,一步步解决了这个问题,还是值得的。

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

conda install -c 镜像源 后面调试版本conda install -c 'http...' pytorch=1.12.1 torchvision=0.13.0 cudatoolkit=10.2conda install -c 'http...' pytorch=1.9.1 torchvision=0.8.0 cudatoolkit=10.2...

一步步调版本,我在调的时候发现太搞了,而且试出来下好配套的了,可能下的也是cpu版本的。

具体可参考这篇文章:

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

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

来源地址:https://blog.csdn.net/m0_46948660/article/details/129205116

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录