当前位置: 首页 > news >正文

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成功了
在这里插入图片描述

相关文章:

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

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

线程有几种状态,状态之间的流转是怎样的?

Java中线程的状态分为6种&#xff1a; 1.初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用start()方法。 2.运行(RUNNABLE)&#xff1a;Java线程中将就绪&#xff08;READY&#xff09;和运行中&#xff08;RUNNING&#xff09;两种状态笼统的称为“运行”…...

vs创建asp.net core webapi发布到ISS服务器

打开服务器创建test123文件夹&#xff0c;并设置共享。 ISS配置信息&#xff1a; 邮件网站&#xff0c;添加网站 webapi asp.net core发布到ISS服务器网页无法打开解决方法 点击ISS Express测试&#xff0c;可以成功打开网页。 点击生成&#xff0c;发布到服务器 找到服务器IP…...

【解读】OWASP大语言模型应用程序十大风险

OWASP大型语言模型应用程序前十名项目旨在教育开发人员、设计师、架构师、经理和组织在部署和管理大型语言模型&#xff08;LLM&#xff09;时的潜在安全风险。该项目提供了LLM应用程序中常见的十大最关键漏洞的列表&#xff0c;强调了它们的潜在影响、易利用性和在现实应用程序…...

LLM实施的五个阶段

原文地址&#xff1a;Five Stages Of LLM Implementation 大型语言模型显着提高了对话式人工智能系统的能力&#xff0c;实现了更自然和上下文感知的交互。这导致各个行业越来越多地采用人工智能驱动的聊天机器人和虚拟助手。 2024 年 2 月 20 日 介绍 从LLMs的市场采用情况可以…...

C++学习随笔(1)——初识篇

前面一章我们简单介绍了一下C与C语言之间的关系&#xff0c;本章就让我们来正式入门学习一下C吧&#xff01; 目录 1.第一个C程序 2.头文件 &#xff08;1&#xff09;简介 &#xff08;2&#xff09;常见的头文件&#xff1a; 2. 命名空间 2.1 命名空间定义 2.2 命名空…...

线上应用部署了两台load为1四核服务器

线上应用部署了两台服务器。 项目发布后&#xff0c;我对线上服务器的性能进行了跟踪&#xff0c;发现一台负载为3&#xff0c;另一台负载为1&#xff0c;其中一台四核服务器已经快到瓶颈了&#xff0c;所以我们紧急排查原因。 1、使用TOP命令查看占用CPU较大的负载和进程&…...

GPT实战系列-LangChain如何构建基通义千问的多工具链

GPT实战系列-LangChain如何构建基通义千问的多工具链 LLM大模型&#xff1a; GPT实战系列-探究GPT等大模型的文本生成 GPT实战系列-Baichuan2等大模型的计算精度与量化 GPT实战系列-GPT训练的Pretraining&#xff0c;SFT&#xff0c;Reward Modeling&#xff0c;RLHF GPT实…...

【vue2基础教程】vue指令

文章目录 前言一、内容渲染指令1.1 v-text1.2 v-html1.3 v-show1.4 v-if1.5 v-else 与 v-else-if 二、事件绑定指令三、属性绑定指令总结 前言 Vue.js 是一款流行的 JavaScript 框架&#xff0c;广泛应用于构建交互性强、响应速度快的现代 Web 应用程序。Vue 指令是 Vue.js 中…...

P4551 最长异或路径

最长异或路径 题目描述 给定一棵 n n n 个点的带权树&#xff0c;结点下标从 1 1 1 开始到 n n n。寻找树中找两个结点&#xff0c;求最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 输入格式 第一行一个整数 n n n&#xff0c;表示点数…...

鸿蒙OpenHarmony HDF 驱动开发

目录 序一、概述二、HDF驱动框架三、驱动程序四、驱动配置坚持就有收获 序 最近忙于适配OpenHarmonyOS LiteOS-M 平台&#xff0c;已经成功实践适配平台GD32F407、STM32F407、STM32G474板卡&#xff0c;LiteOS适配已经算是有实际经验了。 但是&#xff0c;鸿蒙代码学习进度慢下…...

深度学习:如何面对隐私和安全方面的挑战

深度学习技术的广泛应用推动了人工智能的快速发展&#xff0c;但同时也引发了关于隐私和安全的深层次担忧。如何在保护用户隐私的同时实现高效的模型训练和推理&#xff0c;是深度学习领域亟待解决的问题。差分隐私、联邦学习等技术的出现&#xff0c;为这一挑战提供了可能的解…...

【操作系统概念】第12章:大容量存储阶段

文章目录 0.前言12.1 概述12.2磁盘结构12.3 磁盘调度12.3.1 FCFS调度12.3.2 SSTF调度12.3.3 SCAN调度12.3.4 C-SCAN调度12.3.5 如何选择磁盘调度 0.前言 文件系统从逻辑上来看包括三部分。第10章讨论了文件系统的用户和程序员的接口。第11章描述了操作系统实现这种接口的内部数…...

UE5.1_使用技巧(常更)

UE5.1_使用技巧&#xff08;常更&#xff09; 1. 清除所有断点 运行时忘记蓝图中的断点可能会出现运行错误的可能&#xff0c;务必运行是排除一切断点&#xff0c;逐个排查也是办法&#xff0c;但是在事件函数多的情况下会很复杂且慢节奏&#xff0c;学会一次性清除所有很有必…...

rust开发100问?

Rust如何管理内存&#xff1f;Rust的所有权是什么&#xff1f;生命周期在Rust中如何工作&#xff1f;什么是借用在Rust中&#xff1f;如何在Rust中创建枚举类型&#xff1f;Rust中的trait是什么&#xff1f;如何定义并实现一个结构体&#xff08;struct&#xff09;的方法&…...

.net6Api后台+uniapp导出Excel

之前的这个是vue3写法&#xff0c;后端是.net6Api.net6Api后台VUE3前端实现上传和下载文件全过程_vue3 下载文件-CSDN博客 在现在看来似乎搞的复杂了&#xff0c;本次记录一下.net6Api后台uniapp导出Excel。 后端和之前的不一样&#xff0c;前端也和之前的不一样&#xff0c;…...

【OD】算法二

开源项目热度榜单 某个开源社区希望将最近热度比较高的开源项目出一个榜单&#xff0c;推荐给社区里面的开发者。对于每个开源项目&#xff0c;开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、…...

《深度学习风暴:掀起智能革命的浪潮》

在当今信息时代,深度学习已经成为科技领域的一股强大力量,其应用领域涵盖了从医疗到金融再到智能交互等方方面面。随着技术的不断进步和应用的不断拓展,深度学习的发展势头愈发迅猛,掀起了一股智能革命的浪潮。本文将从基本原理、应用实例、挑战与未来发展方向、与机器学习…...

Arduin ESP32+epaper(电子墨水屏)时钟相册制作教程

Arduin ESP32 epaper(电子墨水屏)时钟相册制作教程 &#x1f516;epaper(电子墨水屏)采用的是&#xff1a;合宙1.54“ 电子墨水屏&#xff08;e-paper&#xff09;&#x1f4cd;相关篇《Arduino框架下ESP32/ESP8266合宙1.54“ 电子墨水屏&#xff08;e-paper&#xff09;驱动显…...

Django模型层(附带test环境)

Django模型层(附带test环境) 目录 Django模型层(附带test环境)连接数据库Django ORM在models.py中建表允许为空指定默认值数据库迁移命令 开启测试环境建表语句补充(更改默认表名)数据的增加时间数据的时区 多表数据的增加一对多多对多 数据的删除修改数据查询数据查询所有数据…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...