PyG/torch_geometric的一些坑

安装PyG

import os
import torch
os.environ['TORCH'] = torch.__version__
print(torch.__version__)
 
!pip install -q torch-scatter -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html
!pip install -q torch-sparse -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}..html
!pip install -q git+https://github.com/pyg-team/pytorch_geometric.git

Pytorch_geometric需要跟torch-scatter和torch-sparse一起使用。在安装torch-scatter时可能会遇到编译报错的情况

问题1: 编译报错,gcc版本过低。

centos默认gcc是4.8.5,不支持c++ 14,因此需要升级gcc,版本4.9以上就可以了。

问题2:编译报错:fatal error: cusolverDn.h: No such file or directory

  • 报错原因:环境配置原因,编译使用的cuda环境不是系统的cuda环境,当前nvcc指令是conda虚拟环境中的nvcc(目录类似于/home/anaconda3/envs/torch/bin/nvcc),这个cuda环境中不包含cusolverDn.h头文件,系统的cuda实际在/usr/local/cuda/include/目录下。

  • 解决方案:更改环境配置,将PATH中的/usr/local/cuda/include/移到/home/anaconda3/envs/torch/bin之前就好了。

    原来的PATH=/home/anaconda3/envs/torch/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:….
    现在的PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/home/anaconda3/envs/torch/bin:….
    指令:export PATH=/usr/local/cuda/bin:$PATH

  • 解决方案来源:github

问题3:通过pip安装pyg一定要注意版本

通常pyg要跟torch_scatter、torch_sparse、torch_cluster、torch_spline_conv一起安装,这几个包的cuda版本要跟pytorchcuda保持一致
Follow官网的安装方式,一步一步安装,确保各个包能在下面的网页中找到对应的版本,否则就会报一些乱七八糟的错误。

pip install pyg_lib torch_scatter torch_sparse -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html
pip install torch-geometric

使用PyG

问题1:AttributeError: Can’t get attribute ‘DataEdgeAttr’

import torch_geometric.transforms as T
from ogb.nodeproppred import PygNodePropPredDataset
dataset_name = 'ogbn-arxiv'
# Load the dataset and transform it to sparse tensor
dataset = PygNodePropPredDataset(name=dataset_name, transform=T.ToSparseTensor()) #root='data',
print('The {} dataset has {} graph'.format(dataset_name, len(dataset)))
  • 报错原因,服务器(pytorch 1.8.1+cu101, torch_geometric 2.0.3)上下载数据集比较慢,因此在本地(pytorch 1.13.1+cpu, torch_geometric 2.2.0)下载好上传到服务器,一起上传上去的还有processed文件下的pt文件,由于pytorch/torch_geometric版本不一致导致解析失败。
  • 解决方案:删除processed目录后重新执行一遍代码即可。
  • 解决方案来源:github

你可能感兴趣的:(GNN,torch_geometric,PyG,图神经网格,GNN)