当前位置:   article > 正文

Linux上安装torch-geometric(pyg)1.7.2踩坑记录

Linux上安装torch-geometric(pyg)1.7.2踩坑记录

重点:1.一定要在创建虚拟环境的时候设置好python版本。2.一定要先确定使用1.X还是2.X的pyg库,二者不兼容。3.一定要将cuda、torch、pyg之间的版本对应好。所以,先确定pyg版本,再确定torch和cuda的版本。

结论:如果在ubuntu上安装python=3.7,torch=1.7.0,cuda=11.0,pyg=1.7.2,只用四行代码。

1)创建虚拟环境conda create -n <evn name> python==3.7

2)安装torch、torchvision、torchaudio、cudatoolkit
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0

3)安装scatter、sparse、cluster、spline_conv
pip install torch_scatter-2.0.5-cp37-cp37m-linux_x86_64.whl torch_sparse-0.6.8-cp37-cp37m-linux_x86_64.whl torch_cluster-1.5.8-cp37-cp37m-linux_x86_64.whl torch_spline_conv-1.2.0-cp37-cp37m-linux_x86_64.whl

4)安装pyg,如果要安装2.X版本的可以不加版本号
pip install torch-geometric==1.7.2

-----------------------------手动分割线,下面内容分析了怎么老是安装出错,下次再安装的时候来看看,内容有点乱----------------------------------

安装torch-geometric(pyg)的坑

踩坑一:无需自行安装CUDA,安装torch-gpu时,安装相应的cudatoolkit就可以了。所以nvcc -V找不到cuda版本时没关系。

踩坑二:没有先确定pyg的版本。还有就是pip install torch-geometric的时候没有加上版本号。这两种情况都会报错 RuntimeError: The ‘data’ object was created by an older version of PyG. If this error occurred while loading an already existing dataset, remove the ‘processed/’ directory in the dataset’s root folder and try again.
原因是跑人家的代码中pyg版本与你安装的版本不匹配,看一下别人的代码有没有说明pyg的版本。pip install torch-geometric安装的是2.X版本的。所以要先确定安装1.X还是2.X的torch-geometric。比如,你跑别人的代码别人用的是1.X的pyg,而你自己下载的是2.X版本的pyg,就会报上面的错误。也可以不降低pyg版本,对data进行修改在这里插入图片描述

踩坑三:RuntimeError: CUDA error: no kernel image is available for execution on the device.
原因是显卡和CUDA算力不匹配。第一次配环境的时候随便装了一个版本cudatoolkit=10.2,我的显卡的算力是80,cuda10.2最大算力是75,所以报下面的错误。
点这里查看显卡算力,点这里查看CUDA算力
在这里插入图片描述
报错的意思是当前GPU的算力与当前版本Pytorch依赖的CUDA算力不匹配(A100算力为8.0,而当前版本的pytorch依赖的CUDA算力仅支持3.7,5.0,6.0,7.0, 7.5)

那么怎么确定安装哪个版本的cuda?
nvidia-smi先看一下自己显卡支持的最大cuda版本(安装的cudatoolkit<=右上角的CUDA Version即可,但是这里还有个坑,目前还是不能确定到底用哪个版本的cuda),我的cuda最高版本不能超过11.4,但是如果觉得最高版本也太低的话,可以去下载新的驱动。
在这里插入图片描述
再参考下面这张表,比如我的显卡的算力是80,所以我安装的11.0<= cudatoolkit <=11.4在这里插入图片描述

确定python、pyg、pytorch、cuda版本对应的思路

安装pyg之前要确定好python、pyg、pytorch、cuda的版本。我已经确定了python=3.7,pyg=1.X,11.0<=cuda<=11.4。
然后这四个网址要来回看。
地址1:pytorch历史版本对应
地址2:pytorch的wheel文件下载地址
地址3:pyg依赖包的wheel文件下载地址
地址4:pyg官方文档

  • step1:已经确定了pyg是1.X,去地址4找一下torch和cuda对应的版本。
    这有pyg的各种版本。(地址4点进去之后左下角绿色的地方,可以点开所有1.X版本的都看看)
    在这里插入图片描述

下面是1.7.2版本的pyg官方文档,要求python<3.9(我的python3.7,满足要求)

在这里插入图片描述
CUDA version包括(cpu、cu92、cu101、cu102、cu110、cu111)
1.4.0<= torch <= 1.9.0
所以11.0<= cudatoolkit <=11.1,对于我的显卡,cuda的版本只能选择110或者111,现在就又缩小了cuda的范围。然后确定torch的版本。

  • step2:点地址2查看torch的版本
    在这里插入图片描述
    cuda=110的话,torch只有1.7.0和1.7.1
    cuda=111的话,torch从1.8.0到1.10.1都有(没放图,可以点地址2看一下)
    所以:torch=1.7.0/1.7.1-cu110 或者 1.8.0<=torch<=1.10.1 -cu111

  • step3:安装pyg之前,还要安装pyg的四个依赖包scatter、sparse、cluster、spline_conv,但是对我来说安装wheel文件最好用,比较推荐wheel安装pyg的依赖包。
    点开地址3看一下有没有torch-cu110=1.7.0/1.7.1 或者 1.8.0<=torch-cu111<=1.10.1的组合,这里面都是pyg依赖包的wheel文件。(点进去之后可以看到要安装pyg的依赖包要求torch最低是1.4)有torch-1.7.0/1.7.1-cu110 也有torch-1.8.0<=torch<=1.10.1 -cu111,所以可以安装torch=1.70,cuda=11.0。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

安装pyg只需四行代码

  • 首先新建虚拟环境,加上python版本
    conda create -n <evn name> python==3.7
  • 安装torch-1.7.0+cu110
    方法一:pytorch官网安装
    进入地址1找到cuda=11.0对应的torch、torchvision和torchaudio版本。
    在这里插入图片描述
    不要加-c pytorch,否则有可能是cpu版本的torch,而且安装得会快一点。
    conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0
    方法二:如果conda安装不了这几个包的话,点地址2找到这几个包对应的版本下载其wheel文件。然后在终端进入下载的文件夹内,pip install XXX.whl
    我用的方法一,发现torchaudio不是gpu版本的,然后去地址2也找了一下,确实没有torchaudio-cu110,不过不影响我跑代码,不知道后面会不会有问题。
    在这里插入图片描述

测试torch-gpu是否安装成功,true说明安装成功,cuda可用,cuda的版本是11.0,torch的版本是1.7.0+cu110。(安装了cudatoolkit,所以不用自己安装CUDA。)
在这里插入图片描述在这里插入图片描述

  • 安装pyg的四个依赖包
    地址3进入torch-1.7.0+cu110
    在这里插入图片描述
    进入之后在这个页面里下载cp37-linux(python、OS根据自己情况选择)的scatter、sparse、cluster、spline_conv这四个wheel文件。
    在这里插入图片描述
    终端进入下载好的wheel的文件夹里,pip安装。
    pip install torch_scatter-2.0.5-cp37-cp37m-linux_x86_64.whl torch_sparse-0.6.8-cp37-cp37m-linux_x86_64.whl torch_cluster-1.5.8-cp37-cp37m-linux_x86_64.whl torch_spline_conv-1.2.0-cp37-cp37m-linux_x86_64.whl
  • 安装pyg=1.7.2,一定要加上版本号,否则默认安装2.X,当然也可以安装2.X版本,只不过要和torch、cuda、python版本要对应好。
    pip install torch-geometric==1.7.2(会自动安装依赖scikit-learn pandas networkx)

测试:没报错就说明安装pyg成功了
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/217617
推荐阅读
相关标签
  

闽ICP备14008679号