安装 torch-2.1.2+cu118 时 torch.cuda.is_available() 返回 True,而安装 torch-2.5.1+cu124 时返回 False(且本地没有装任何的CUDA Toolkit)

如题:安装 torch-2.1.2+cu118 时 torch.cuda.is_available() 返回 True,而安装 torch-2.5.1+cu124 时返回 False(且本地没有装任何的CUDA Toolkit)

问题根源分析

安装 torch-2.1.2+cu118torch.cuda.is_available() 返回 True,而安装 torch-2.5.1+cu124 时返回 False,且本地未安装任何 CUDA Toolkit。这是因为:

  1. PyTorch 的 CUDA 版本依赖机制
    • 旧版本 PyTorch(如 cu118:某些版本的 PyTorch Wheel 包会自带 CUDA 运行时库(如 cudart.dll),因此即使本地未安装 CUDA Toolkit,也能通过内置的库支持 CUDA 功能。
    • 新版本 PyTorch(如 cu124:可能不再内置完整的 CUDA 运行时库,而是依赖本地安装的 CUDA Toolkit 提供动态链接库(DLL)。若本地未安装 CUDA Toolkit,则会因缺失 DLL 导致 CUDA 不可用。
  2. 关键区别
    • cu118 的 PyTorch 包可能自带了必要的 CUDA 库。
    • cu124 的 PyTorch 包需要本地安装 CUDA 12.4 Toolkit 提供支持。

后来查找资料

CUDA Toolkit都是在安装Pytorch时自动安装(必须使用Pytorch官网的安装命令),可以看到,无论是使用conda安装还是pip安装,都会自动将CUDA Toolkit安装到Python环境中去,系统安装CUDA和Pytorch安装的CUDA Toolkit是独立的,两者并不需要相互依赖,仅安装Pytorch和CUDAToolkit即可正常使用GPU

笔者torch-2.1.2+cu118和 torch-2.5.1+cu124 都是手动下载,但是torch-2.1.2+cu118安装自带安装了CUDA Toolkit,但是torch-2.5.1+cu124没有自带安装CUDA Toolkit。后来使用官网命令行

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

确实自带安装CUDA Toolkit.用如下命令检查

验证 PyTorch 是否识别 CUDA:
import torch
print(torch.__version__)          # 查看 PyTorch 版本
print(torch.cuda.is_available())  # 应输出 `True`
print(torch.version.cuda)         # 应显示 CUDA 12.x(如 12.1)

竟然torch.cuda.is_available() 真的true。

总结

虽然手动下载pytorch whl包很快,但是高版本的whl包可能不自带CUDA Toolkit.使用pip官网的地址安装可以安装带CUDA Toolkit(虽然这种方式可能安装一个2G的whl包要花好长时间,因为下载速度好慢)

参考资料

一篇文章理清GPU、CUDA、CUDA Toolkit、cuDNN的关系

posted @ 2025-03-02 09:07  焦涛  阅读(177)  评论(0)    收藏  举报