RTX5090配置DGL

**前言:**豆包真是蠢猪啊,当然,用豆包的我......总之,经过层层误导,终于解决问题了。最近想复现一篇24年的文章,环境真是非常古早呀,感觉是在21年的上面改的,每次跑以前项目的代码,环境就要搞半天(哭)。今年实验室换了50系列的显卡,一直遇到项目的dgl与torch与CUDA不兼容的情况!

豆包给我乱说乱说,严格训斥后才给我最终结论:

1.首先,RTX 5090 是sm_120 新架构,如无对应计算内核,会导致no kernel image错误

2.PyTorch 2.4.0+仅支持到sm_90架构,不管是cu121还是124

3.DGL到目前为止是更新到了2.4.0(昨天晚上刚查过官网)

CUDA

CUDA (Compute Unified Device Architecture,计算统一设备架构)是由英伟达(NVIDIA)公司于2006年推出的一个通用并行计算平台和编程模型。是一套技术和工具的集合,允许开发者利用GPU(图形处理器)强大的并行计算能力来加速各种通用计算任务。

GPU 架构与算力

每款 NVIDIA GPU 都有一个 算力(Compute Capability, CC) 值,代表了 GPU 的架构代际和功能集。

较新的 GPU 架构需要较新的 CUDA 版本才能支持。例如,RTX 50 系列 (Blackwell 架构) 强制要求 CUDA 12.4 或更高版本,而老的 GTX 1080 Ti (Pascal 架构) 则无法使用最新的 CUDA。

NVIDIA 显卡驱动

显卡驱动是操作系统与 GPU 硬件通信的桥梁,决定了能安装的最高 CUDA 版本。

在命令行输入nvidia-smi ,右上角显示的 CUDA Version 是驱动所支持的最高 CUDA 版本(非当前安装的版本)。

PyTorch

PyTorch 是一个构建在 C++ 后端和 CUDA 加速层之上的 Python 包。需要确保Pytorch 框架、Python 版本和底层 CUDA 环境三者对齐。

每个 PyTorch 版本都支持一个特定的 Python 版本范围。例如,PyTorch 2.5.x 支持 Python 3.9 到 3.12。

安装Pytorch时,必须使用与 CUDA 版本对应的安装命令。例如,为 CUDA 12.4 安装 PyTorch,需要使用包含 cu124 标识的 pip 命令或 conda 命令。

以下是一个PyTorch测试的Python脚本

复制代码
import torch
print("PyTorch 版本:", torch.__version__)
print("CUDA 是否可用:", torch.cuda.is_available())  # 必须为 True
print("PyTorch 编译所用 CUDA 版本:", torch.version.cuda)
print("GPU 名称:", torch.cuda.get_device_name(0))
print("GPU 算力:", torch.cuda.get_device_capability(0))
x = torch.randn(2, 3).cuda()
print("GPU 张量创建成功:", x.device)

在安装torch相关库时,必须严格匹配版本。如**torchvision (视觉配件包)、torchaudio (音频配件包** )两个库在安装时必须严格匹配torch版本,因为torchvisiontorchaudio 在底层直接调用了 torch 的内部接口和 C++ 扩展。

官方为每个 torch 版本都指定了严格兼容的 torchvisiontorchaudio 版本。

最可靠的方法是一次性安装 ,并使用官方推荐的命令。这样可以确保 pipconda 自动为你拉取版本完全匹配的三个库。

复制代码
# 使用 pip 安装
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu121

切记:不要分开安装

DGL

**DGL 必须严格适配 PyTorch 版本。**因为 DGL 是构建在 PyTorch 之上的图神经网络库,它大量调用了 PyTorch 的底层 C++ API 和 CUDA 算子。

需要适配的三个维度:

  1. PyTorch 版本范围

  2. CUDA 版本对齐

  3. Python 版本对齐

RTX5090配置DGL

总之,我主要遇到的问题,就是torch、DUDA、DGL的兼容问题,最后在千问的指引下,看到了csdn上的一篇文章(在联网搜索技术这块,好像还是千问强一点)

我的NVIDIA GPU 设备状态>nvidia-smi

创建的conda环境是python3.9 ,经查阅 Pytorch2.8.0 是稳定适配版

复制代码
pip install torch==2.8.0 torchvision torchdata --index-url https://download.pytorch.org/whl/cu128

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

已测试上述版本的dgl可以和torch2.8.0一起使用。

校验环境

复制代码
python -c "
import torch
print('torch version:', torch.__version__)
print('cuda available:', torch.cuda.is_available())
print('gpu name:', torch.cuda.get_device_name(0))
print('compute capability:', torch.cuda.get_device_capability(0))
import dgl
print('dgl version:', dgl.__version__)"

备份 conda 完整环境

复制代码
conda env export > my_5090_torch2.8_dgl2.4_py310.yml

transformers、datasets、tokenizers、numpy、tqdm、scipy等属于纯 CPU 业务库, 不自带 GPU 底层代码,不编译 CUDA 内核。只负责:读数据、分词、数值计算、进度条,只需要跟你的 Python版本兼容就行。

天呐!训练真的成功启动了!我真的在训练了!!!

相关推荐
2401_824697661 小时前
如何实现SQL存储过程状态监控_编写实时运行监控仪表盘
jvm·数据库·python
iAm_Ike1 小时前
c++怎么在写入文件流时通过peek预读功能实现复杂的逻辑判断【实战】
jvm·数据库·python
dFObBIMmai1 小时前
mysql如何确保主从数据完全同步_开启半同步复制机制
jvm·数据库·python
才兄说1 小时前
机器人二次开发机器狗巡检?长距离最优路径
python
m0_470857642 小时前
CSS如何实现Bootstrap进度条自定义动画_利用keyframe关键帧
jvm·数据库·python
nashane2 小时前
HarmonyOS 6学习:Navigation Dialog模式与智能Web长截图融合实践
人工智能·pytorch·python
m0_624578592 小时前
SQL高效实现基于JOIN的交叉分析_多表关联实现多维统计
jvm·数据库·python
威联通网络存储2 小时前
QNAP 闪存底座:制造企业 ERP 数据库容灾方案
数据库·python·制造
ZHW_AI课题组2 小时前
基于AnimeGANv2的照片动漫化
图像处理·python