以前总是嫌装环境太麻烦,碰到些需要用到GPU的项目都不想去复现了。。。这次因为论文需要,下定决心要把pytorch的安装问题搞定,但是期间遇到了很多问题,最烦人的莫过于这个’ AssertionError: Torch not compiled with CUDA enabled
’
查看pytroch版本
>>> import torch
>>> print(torch.__version__)
cuda和cudnn版本
import torch
torch.cuda.is_available() # 检查cuda是否可用
torch.version.cuda # 查看cuda版本
torch.backends.cudnn.is_available() # 检查cudnn是否可用
torch.backends.cudnn.version() # 查看cudnn版本
torch和torchvision版本
import torch
torch.__version__
import torchvision
torchvision.__version__
pytorch官网链接如下Start Locally | PyTorch
可以根据自己的显卡选择能承载的pytorch版本,参考链接:
二. PyTorch、CUDA Toolkit 及显卡驱动版本对应关系
过往pytorch链接点击官网图中的红字部分“install previous versions of PyTorch.”即可
根据pytorch版本不同,所适用的torch和torchvision皆可通过pytorch官网直接查找,以下为官网链接 Previous PyTorch Versions | PyTorch
如何使用?以pytorch 1.12.0版本为例
上图为官网中1.12.0版本的部分,可以看到我们有conda和wheel两种方式进行torch和torchvision的下载,从两种方式中选一种即可。OSX、Linux和Windows表示你所使用的系统。代码中出现的cuda版本都是该pytorch版本所适用的。
三. Torch和torchvision的安装
其中的方法总结下来就是自己手动下载然后pip install该文件,下载地址为:
https://download.pytorch.org/whl/torch_stable.html】
需要注意不要下载错误文件!!文件名称的含义参考该博主:
四. 安装pytorch时,文件名称的识别
import torch
print(torch.__version__)
print(torch.cuda.is_available())
解决方案可参考博客:
五. Pytorch错误:Torch not compiled with CUDA enabled
以及:
九. 解决 AssertionError Torch not compiled with CUDA enabled
参考博主:
十. Torch not compiled with CUDA enabled报错的解决办法!!!
总之就是需要创建新环境,我也不清楚原因。。。
什么我的dos窗口可以查出cuda版本,用代码查不出呢。
注:驱动是向下兼容的,其决定了可安装的CUDA Toolkit的最高版本。
CUDA Toolkit版本及可用PyTorch对应关系
注:虽有的卡驱动更新至较新版本,且CUDA Toolkit及PyTorch也可对应更新至新版本。但可能用不了,建议用稳定版
查询驱动版本
nvidia-smi
根据表一查询到可安装的CUDA Toolkit版本,470.141对应最高的CUDA Toolkit版本为11.4。上述表格没有,你可以装11.3的驱动,向下兼容向上不行
运行conda install pytorch cudatoolkit=11.3 -c pytorch
即可。
此方法指定CUDA Toolkit版本后,conda会自动匹配到合适版本的PyTorch。
根据表一查询到可安装的CUDA Toolkit版本,再根据表二查询到合适版本的PyTorch。465对应最高的CUDA Toolkit版本为11.3,11.3可安装PyTorch1.11.0版本(向下兼容)。
运行conda install pytorch=1.11.0 -c pytorch
即可。
此方法指定PyTorch版本后,conda会自动匹配到合适版本的CUDA Toolkit。
根据表一查询到可安装的CUDA Toolkit版本,根据表二查询到合适版本的PyTorch。
运行conda install pytorch=1.11.0 cudatoolkit=11.3 -c pytorch
即可。
(1)需要安装torchaudio以及torchvision时将其放在pytorch之后即可,如:conda install pytorch torchaudio torchvision cudatoolkit=11.4 -c pytorch
(个人建议这样装)
(2)-c pytorch为采用官网源下载,如果去掉,则在清华镜像源配置后可采用清华镜像源下载,配置清华镜像源可参考:
PyTorch官网
官网下载比较慢
添加清华镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
查看添加镜像源:
conda config --set show_channel_urls yes | cat ~/.condarc
显示,则添加成功
在PyTorch官网查看适合版本安装命令
onda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
注意:不要复制 -c pytorch即可采用清华镜像源下载,否则采用官网源下载。等待安装成功即可。以上可能会出错,则将https改为http,重新添加源即可
# 删除已添加的源
conda config --remove-key channels
叮~ 快收藏torch和torchvision的详细安装步骤~~~~~
要安装torch和torchvision,首先要确定你电脑安装的python的版本,而且还要知道torch和torchvision的版本对应
即:torch - torchvision - python版本的对应关系(网上一搜一大把)
(torch和torchvision下载网址:https://download.pytorch.org/whl/torch_stable.html)
还是在命令提示符上进行安装,安装前要知道下载的torch和torchvision的位置,首先进入到该目录下,在进行命令安装,还是以我3.9的python版本为例,
安装torch:
pip install torch-1.9.1+cpu-cp39-cp39-win_amd64.whl
安装torchvision:
pip torchvision-0.10.0%2Bcpu-cp39-cp39-win_amd64.whl
C:\Users\HP>pip install torchvision-0.10.0+cpu-cp39-cp39-win_amd64 (1).whl
Defaulting to user installation because normal site-packages is not writeable
ERROR: Invalid requirement: 'torchvision-0.10.0+cpu-cp39-cp39-win_amd64'
可以的 但是要装cpu版本的 torchvision
好的好的,谢谢!
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\pip\_vendor\urllib3\response.py", line 438, in _error_catcher
yield
File "D:\Anaconda\lib\site-packages\pip\_vendor\urllib3\response.py", line 519, in read
data = self._fp.read(amt) if not fp_closed else b""
File "D:\Anaconda\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 62, in read
data = self.__fp.read(amt)
File "D:\Anaconda\lib\http\client.py", line 462, in read
n = self.readinto(b)
File "D:\Anaconda\lib\http\client.py", line 506, in readinto
n = self.fp.readinto(b)
File "D:\Anaconda\lib\socket.py", line 704, in readinto
return self._sock.recv_into(b)
File "D:\Anaconda\lib\ssl.py", line 1241, in recv_into
return self.read(nbytes, buffer)
File "D:\Anaconda\lib\ssl.py", line 1099, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out。
这是什么原因呢?
这里记录一下在安装pytorch时,下载whl文件时,选择版本的问题。
有显卡的话,是需要先安装cuda的,cuda的安装是需要根据你自己电脑的显卡型号来安装,具体可百度。然后根据cuda型号和自己电脑的系统和python版本来下载安装pytorch。
没有显卡的话,就只能安装cpu版本的pytorch。这就只需要根据自己电脑的系统和python的版本来下载安装pytorch。
首先到官网https://pytorch.org/,往下面拉,可以看到让你选择配置。
你可以在选择配置后,根据Run this Command
里自动生成的代码,在命令行里进行下来。但是一般情况下,都非常慢或者出现很多问题,即使是换了国内的源。
所以建议直接下载whl文件进行安装。
网址:https://download.pytorch.org/whl/torch_stable.html
在这个网站下载所需要版本的torch和torchvision,然后再命令行里pip install 进行安装就行了。
下面说明这些文件名称的含义。
最前面的cpu就是cpu版本的意思,如果要gpu版本的,前面就是cu开头,cu后面的数字就是cuda的版本号,你自己用的什么版本的cuda就下载哪个版本的。
查询cuda版本,在命令行输入nvcc -V
这里的cuda版本是10.0,那么我就应该选择cu100开头的文件。
再后面的torch或者torchvision就表示是哪个文件了,后面跟的就是这个文件的版本,建议下载最新版本。
再后面cp+数字就是对映python的版本,如果你的python是3.7的,就下载cp37的文件。
再后面,就是操作系统,win或者mac或者linux。
代码本身可以确定是没有问题的,因为只是在往日已经跑过的代码上加入了小改动。最后发现问题出现在Pytorch和CUDA版本不兼容的问题上。问题的发现可以在终端中输入’python’命令,运行python后,输入
import torch
print(torch.__version__)
print(torch.cuda.is_available())
如果输出的结果是False,那么说明当前的Pytorch版本无法使用显卡。
解决办法:
1)如果有显卡资源并需要使用显卡资源,先检查一下当前的CUDA版本
(详情见六. Ubuntu下查看cuda版本的两种方法
),在终端中输入
cat /usr/local/cuda/version.txt
然后根据自己的CUDA版本在Pytorch官网查看并安装可用的版本,参考链接如下:
CUDA 10.2
https://download.pytorch.org/whl/cu102/torch_stable.html
CUDA 10.1
https://download.pytorch.org/whl/cu101/torch_stable.html
CUDA 10.0
https://download.pytorch.org/whl/cu100/torch_stable.html
CUDA 9.0
https://download.pytorch.org/whl/cu90/torch_stable.html
CPU及所有CUDA版本
https://download.pytorch.org/whl/torch_stable.html
2)如果没有可用的显卡资源,则检查代码,把调用显卡资源的部分全部去掉即可
显示cat: /usr/local/cuda/version.txt: 没有那个文件或目录
这是没有cuda?
.cuda()或者.to(device)
能具体一点吗
不太会
哪一步?
类似,不同cuda版本下的pytorch有相应的win,linux,mac版本
got it!
flat_config.device = int(torch.cuda.device_count()) - 1
nvidia-smi
也可以用这个看cuda的版本
具体咋操作呢,在哪输入nvidia-smi呢
命令行里
显示true的话,就说明当前版本的pytorch和cuda是匹配的
显示ture还报AssertionError: Torch not compiled with CUDA enabled呢?
我也是这样的,请问你解决这个问题了吗
参考资料:七. ubuntu16.04查看CUDA和cuDNN版本
在安装Pytorch等深度学习框架的时候,我们往往需要检查是否和cuda版本匹配。在Ubuntu系统下查看cuda版本的方法,我发现有两个。
比较常用的一个方法是使用如下命令:
cat /usr/local/cuda/version.txt
使用该命令的效果如下图所示:
方法一使用效果
方法一主要是依据cuda安装时保存的关于版本的txt文件。但是这个txt文件有可能被清空或者是误删,再用方法一查询的结果就为空。这个时候可以用第二种方法,使用如下命令:
nvidia-smi
这个命令原本是用来查看显存占用情况的,但是也会附带显示cuda的版本信息,显示的效果如下图所示:
附:对于有些网友反馈说,两个方法显示结果不一致的情况,一开始我以为是cuda后续有更新导致的,不过有一篇博文(八. ubuntu 之 查看 cuda,cudnn版本
)解释了这个情况,据说是有驱动(driver)API版本和运行(runtime)API的区别,这位作者建议参考方法一的结果安装tensorflow和pytorch等程序,大家可以参考一下这篇博文(八. ubuntu 之 查看 cuda,cudnn版本
)。
我图示的结果是在两台机器上操作的,现在更改成同一台机器的结果了
我的也是两种方法显示的结果不一样。。
八. ubuntu 之 查看 cuda,cudnn版本
)里说的[/code]
yyl@yyl-Z370-HD3:~/桌面/毕业设计/Attention_in_Graph-master$ cat /usr/local/cuda/version.txt
CUDA Version 10.0.130
yyl@yyl-Z370-HD3:~/桌面/毕业设计/Attention_in_Graph-master$ nvidia-smi
Mon Dec 14 18:14:39 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.34 Driver Version: 430.34 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2060 Off | 00000000:07:00.0 On | N/A |
| 0% 54C P8 19W / 190W | 350MiB / 5933MiB | 10% Default |
+-------------------------------+----------------------
八. ubuntu 之 查看 cuda,cudnn版本
)里说的cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
nvcc -V
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
新版本变化:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
①:
nvidia-smi
②:
nvcc -V
③:
cat /usr/local/cuda/version.txt
细心地同学会发现,有时①查看的cuda版本和②、③查出来的会不同,这是什么原因呢。原来cuda的API分为两种类型,一种是驱动(driver)API,另一种是运行(runtime)API。而我们通过nvidia-smi查看的cuda版本正是驱动API版本。通过nvcc -V 和 cat /usr/local/cuda/version.txt查看的一般是运行API,因此两者存在出入是正常的。
但是我们运行程序时所使用的是运行API,我们时常讲的cuda,cudnn,tensorflow-gpu版本之间的对应,也是针对运行API来讲的,也就是后两者查看的版本。
附:对应关系:
可以通过该网址查看:从源代码构建 | TensorFlow
下面添加一条比较老的版本的配置:
tensorflow_gpu-1.0.0 2.7、3.3-3.6 --- --- 5.0 8
cudnn 和 cuda 版本对应关系:
cuDNN Archive | NVIDIA Developer
我也是,你最后解决了没
解决了
是的,按需装,在满足按需的前提下,版本最好低于nvidia-smi显示的
谢谢
你是用conda安装的cuda版本的torch吗?torch这个好像没有那么严格的依赖cuda,tensorflow要求的比较苛刻
pip安装没有用anaconda,
最近在矩池云的的Tesla K80机子上跑MMYOLO,跟着MMYOLO官方文档《自定义数据集 标注+训练+测试+部署 全流程 》操作到 “2.1.1 软件或者算法辅助”时,利用预训练模型+官方脚本去辅助标注时,一按下回车就报错:
AssertionError Torch not compiled with CUDA enabled
说的是torch编译的时候CUDA不可用
但是服务器已经预装有pytorch和cuda了,我分别用
nvidia-smi
和
nvcc -V
都可以查到CUDA的版本
本机配置如下:
torch.cuda.is_available()
返回结果是false,
所用环境中所装的pytorch版本与CUDA版本不匹配
或者pytorch完全就是GPU版的(而我们需要GPU版本的)
然后我对比了conda list和pip list中torch的版本,发现两个list中的torch版本居然不一样,conda list中的torch是1.12.1+cu113是合适的,但是pip lIst中的torch是1.13x不是cuda版本的。
确定了pytorch的版本不对之后,就可以到Pytorch官网找对应版本进行安装
https://pytorch.org/get-started/previous-versions/
一定要选+cuxxx的版本来安装
安装完之后可以在ipython中用
torch.cuda.is_available()
验证一下,如果是True,就说明问题解决了
pip list与conda list的区别:pip list显示的只是当前环境中的包,而conda list显示的是当前环境与关联环境中的包,所以看当前环境具体有什么包还是得通过pip list 更准确。
说在前面 我解决这个错误花了一天多不到两天的时间 感谢各位大佬的帮助 我太菜了 在这期间 我经历了看了百度里面的几乎所有的博客 但是依然不好使…
下面是建立在成功安装cuda之后,网上有很多教程安装cuda以及cudnn,在这里就不详细说了。
(ps:我会传到资源上面去稍后。)
!!!注意:我这里面python是3.8.8,所以cp后面是38;cu110是因为我之前装的cuda的版本是11.0版本;win就不用说了,我是windows的;torch和torchvision的版本必须匹配!
在安装之后如何检查是否匹配,查看torch版本:
如果是True的话就代表匹配。
但是我的依然是True。见上面那个图。网上面有很多博客上面说是因为torch和torchvision不匹配,可是我的是完全匹配的。
附:网上面有很多博客是这样安装的,我就是这样安装的用的是pip安装的,但是报错:
(1)打开anaconda prompt
(2)创建一个环境:
这里面的torch是一个新建的环境的名字。不要看最左边的torch,因为你一定不是,我已经创建完了。
(5)安装torchvision:
over!!!
检查一下是否安装成功:
pip uninstall torch
如何查看python的版本:
python --version
写在最后:虽然这样是不报错了,可是我还是不明白为什么不能用我的另一个python解释器,用pip直接安装,不用conda这样是错误的。用conda整个虚拟环境重新装一下,在换下解释器就对了。。。。。。
lizhyuxi_1105
Torch not compiled with CUDA enabled 报错的归纳总结
浪迹天涯@wxy
PyTorch、CUDA Toolkit 及显卡驱动版本对应关系
Sweet_Ya
Torch和torchvision的安装
Leon_BUAA
安装pytorch时,文件名称的识别
噢啦啦耶
Pytorch错误:Torch not compiled with CUDA enabled
Ubuntu下查看cuda版本的两种方法
z止于至善
ubuntu16.04查看CUDA和cuDNN版本
NuerNuer
ubuntu 之 查看 cuda,cudnn版本
华幽子丶
解决 AssertionError Torch not compiled with CUDA enabled
nenuyear
Torch not compiled with CUDA enabled报错的解决办法!!!