以前总是嫌装环境太麻烦,碰到些需要用到GPU的项目都不想去复现了。。。这次因为论文需要,下定决心要把pytorch的安装问题搞定,但是期间遇到了很多问题,最烦人的莫过于这个’ AssertionError: Torch not compiled with CUDA enabled’

这时候首先应该做的就是确认pytorch、cuda、cuddn、torch和torchvision是否安装成功,以及版本是否正确!

  1. 如何查看pytorch、cuda、cuddn、torch和torchvision的版本并且进行下载安装?

1)查看版本

查看pytroch版本

>>> import torch>>> print(torch.__version__)

cudacudnn版本

import torchtorch.cuda.is_available() # 检查cuda是否可用torch.version.cuda# 查看cuda版本
torch.backends.cudnn.is_available()# 检查cudnn是否可用torch.backends.cudnn.version() # 查看cudnn版本

torchtorchvision版本

import torchtorch.__version__
import torchvisiontorchvision.__version__

2)确认对应版本,下载与安装

  • 下载pytorch

pytorch官网链接如下Start Locally | PyTorch

可以根据自己的显卡选择能承载的pytorch版本,参考链接:

(31条消息) PyTorch、CUDA Toolkit 及显卡驱动版本对应关系_浪迹天涯@wxy的博客-CSDN博客_pytorch cuda版本对应关系

过往pytorch链接点击官网图中的红字部分“install previous versions of PyTorch.”即可

  • torch、torchvision、cuda的对应版本和下载

根据pytorch版本不同,所适用的torch和torchvision皆可通过pytorch官网直接查找,以下为官网链接 Previous PyTorch Versions | PyTorch

如何使用?以pytorch 1.12.0版本为例

上图为官网中1.12.0版本的部分,可以看到我们有condawheel两种方式进行torch和torchvision的下载,从两种方式中选一种即可。OSX、LinuxWindows表示你所使用的系统。代码中出现的cuda版本都是该pytorch版本所适用的。

  • 用官网的源下载torch和torchvision速度过慢的解决方法,可以参考博主:

(31条消息) Torch和torchvision的安装_Sweet_Ya的博客-CSDN博客_torchvision安装

其中的方法总结下来就是自己手动下载然后pip install该文件,下载地址为:

https://download.pytorch.org/whl/torch_stable.html

需要注意不要下载错误文件!!文件名称的含义参考该博主:

(31条消息) 安装pytorch时,文件名称的识别_Leon_BUAA的博客-CSDN博客

  • cuda和cudnn的对应版本和下载

cudnn官网中贴心的给每个cuda版本都给出了适用的cudnn版本,找对应的下载即可,以下为官网链接

cuDNN Archive | NVIDIA Developer

更详细安装过程可以参考博主 (31条消息) Cuda和cuDNN安装教程(超级详细)_jhsignal的博客-CSDN博客_cudnn下载

  1. 判断AttributeError的错误原因并解决问题

首先输入下列代码

import torchprint(torch.__version__)print(torch.cuda.is_available())

1)输出为False

解决方案可参考博客:(31条消息) Pytorch错误:Torch not compiled with CUDA enabled_噢啦啦耶的博客-CSDN博客_cuda lazy loading is not enabled. enabling it can

以及:(31条消息) 解决 AssertionError Torch not compiled with CUDA enabled_华幽子丶的博客-CSDN博客

2)输出为True

参考博主:(31条消息) Torch not compiled with CUDA enabled报错的解决办法!!!_nenuyear的博客-CSDN博客_cuda enabled

总之就是需要创建新环境,我也不清楚原因。。。