50系显卡配置dgl环境踩坑
(2)其次是dgl与torch的版本兼容问题,按照dgl官网目前的说法,它最高支持到PyTorch 2.4.0的版本,只pip install dgl还会自动下载配套的torch2.4.0,这又会变回torch、cuda与GPU算力匹配问题的报错,但是可以通过**–no-deps限制**,禁止其下载配套torch。到这里,我是真歇逼了,目前已经是dgl最高能适配的torch版本和cuda版本了,t
背景描述
实验室新添了50系的显卡,具体到NVIDIA GeForce RTX 5090 with 32GB memory,我需要将项目及其conda虚拟环境从4080显卡上迁移到5090显卡上,由于本人项目所用环境非常的古老(ps:我也不道为啥对标文章的代码用到的库是如此古老的版本,并且存在很严重的dgl与torch不兼容的情况,在原先环境中也是岌岌可危,凑合着跑),于是就遇到了以下问题:
首先,原4080显卡下项目虚拟环境中包是以下配置:python 3.8||dgl 0.9.1.post1||torch 1.x+cu113
大家感兴趣的可以查一下,dgl老版本(dgl0.x版本下载链接,需要手动将site-package下的两个包挪到项目虚拟环境中,似乎只能静态安装,pip、conda不管用)只能支持到torch1.x的版本,而dgl2.x版本对应的是torch2.x的版本,同时对cuda版本(也可以是cpu环境)也有要求,最低是11.8,以下网址可查:dgl使用指南
于是乎,我照着以前的环境配置在5090显卡上配置了一个一模一样的虚拟环境,然后出现了各种缺少以.so为后缀的链接库的报错,如:OSError: libcusparse.so.11: cannot open shared object file: No such file or directory
网上的说法众说纷纭,解决方法大概就是手动添加这些.so.11库,但是我发现每解决一个就会多一个少库的问题,我猜测归根到底大概率还是torch和torch-pyg(我也不道为毛一个项目里边即用到dgl还用到了pyg)的版本兼容问题,也就是两个框架版本没对上号。
尝试过程
我不断尝试提高torch、pyg和dgl的版本(torch从1.x提高到2.4,dgl最高支持的就是2.4.x版本的torch和12.4的cuda),发现少库的问题终于解决了,但是运行代码时回报以下错误:RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOC
用人话讲就是安装的cuda,pytorch和当前的GPU型号并不匹配,一下子从图相关的库与torch版本适配转移到了GPU型号适配(准确地来说,应该是计算能力适配的问题)。
AI告诉我可以通过以下代码判断当前问题是否解决:
import torch
print(f"PyTorch 版本: {torch.__version__}")
print(f"CUDA 是否可用: {torch.cuda.is_available()}")
print(f"CUDA 版本: {torch.version.cuda}")
print(f"GPU 设备: {torch.cuda.get_device_name(0)}")
即使我将环境配置为:python 3.10||dgl 2.4.0||torch 2.4.0+cu124
上述代码依然会提示:
PyTorch 版本: 2.4.0+cu124
CUDA 是否可用: True
CUDA 版本: 12.4
/home/user/anaconda3/envs/AnomalyGFM/lib/python3.9/site-packages/torch/cuda/__init__.py:215: UserWarning:
NVIDIA GeForce RTX 5090 with CUDA capability sm_120 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_50 sm_60 sm_70 sm_75 sm_80 sm_86 sm_90.
If you want to use the NVIDIA GeForce RTX 5090 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/
warnings.warn(
GPU 设备: NVIDIA GeForce RTX 5090
这段输出的意思就是5090显卡的计算能力是12.0,但是你的torch版本2.4.0最高只支持到9.0的GPU算力。到这里,我是真歇逼了,目前已经是dgl最高能适配的torch版本和cuda版本了,torch版本和cuda版本再高一些就没有对应的dgl了。尽管这只是提示信息不是报错信息,但是一运行具体代码就会报错:
RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOC
这个报错翻译过来的意思和之前提示信息的本质是一样的,都是GPU计算能力与torch版本不适配。
解决思路
在我的不断搜索下,终于找了有类似问题的博客,也是靠着这篇博客及其评论区解决了问题,没报错之后差点激动的哭出来,以下是博客老哥的原文:
50系显卡下载torch-下载dgl-下载matgl
简单来说,解决步骤分以下几步:
(1)首先是torch、cuda与GPU算力匹配的问题,5090Ti的计算能力大概最起码需要torch2.8.0+cuda128(2.7没试过,博客老哥说也可以,该组合经试验有效)的支持,目前PyTorch官网最高已推出torch2.8.0+cuda129(Stable和Nightly版本都有)的支持,不过大家要注意该配置下Python最低也得是3.9。该匹配问题可以通过以下命令解决:pip3 install torch torchvision
(2)其次是dgl与torch的版本兼容问题,按照dgl官网目前的说法,它最高支持到PyTorch 2.4.0的版本,只pip install dgl还会自动下载配套的torch2.4.0,这又会变回torch、cuda与GPU算力匹配问题的报错,但是可以通过**–no-deps限制**,禁止其下载配套torch。该兼容问题可以通过以下命令解决:pip install dgl -f https://data.dgl.ai/wheels/torch-2.4/cu124/repo.html --no-deps
这样的话,项目中的torch版本还是2.8.0,cuda版本还是12.4,只不过dgl是2.4.0+cu124的。
(3)最后需要注意pyg的版本适配是和项目中实际用到的torch版本对应的,而不是dgl的版本,也就是下载torch-cluster、torch-scatter、torch-sparse、torch-spline-conv的版本还是要照着项目的torch版本和cuda版本,我一般下载pyg的库使用静态方式下载的,即:pip install xxx.whl
下载链接如下:
torch-pyg下载链接
遵循这三个步骤即可完美解决问题!欢迎指正任何问题!
更多推荐
所有评论(0)