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版本兼容就行。

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

相关推荐
步行cgn15 分钟前
Spring 注入 Properties 详解
java·python·spring
shirsl25 分钟前
算法 Day3-队列 / deque + 链表
数据结构·python·算法·链表
名字还没想好☜33 分钟前
Python 的 __call__ 实战:让实例像函数一样被调用,做带状态计数器、缓存器与可配置策略
开发语言·后端·python·缓存·编程语言
cpolar技术支持41 分钟前
AI Agent 跑半小时就忘目标?用检查点与任务账本做可恢复长任务,cpolar 分享只读时间线
python·sqlite·cpolar·ai agent·任务恢复
张小姐的猫1 小时前
【AI大模型接入SDK】 —— SQLite上手
linux·开发语言·c++·人工智能·python·log4j
529宝宝起名网1 小时前
用 Python 实现基于字源特征的名字文化评分算法:从六书部首到文化寓意的多维度评分模型
python
努力学习的代码小白1 小时前
mem0源码学习03
python
zzj_2626101 小时前
Python数组定义及操作
python
溪语流沙1 小时前
【Python项目实战】部署上线:把博客发布到云服务器
服务器·开发语言·python