**前言:**豆包真是蠢猪啊,当然,用豆包的我......总之,经过层层误导,终于解决问题了。最近想复现一篇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版本,因为torchvision 和 torchaudio 在底层直接调用了 torch 的内部接口和 C++ 扩展。
官方为每个 torch 版本都指定了严格兼容的 torchvision 和 torchaudio 版本。
最可靠的方法是一次性安装 ,并使用官方推荐的命令。这样可以确保 pip 或 conda 自动为你拉取版本完全匹配的三个库。
# 使用 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 算子。
需要适配的三个维度:
-
PyTorch 版本范围
-
CUDA 版本对齐
-
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版本兼容就行。
天呐!训练真的成功启动了!我真的在训练了!!!