问题表现
测试torch-gpu是否可用
运行如下代码:
import torch
print(f"Current device: {device}")
print(torch.__version__) # 查看pytorch安装的版本号
print(torch.cuda.is_available()) # 查看cuda是否可用。True为可用,即是gpu版本pytorch
print(torch.cuda.device_count()) # 返回可以用的cuda(GPU)数量,0代表一个
print(torch.version.cuda) # 查看cuda的版本
print(torch.cuda.get_device_name(0)) # 返回GPU型号
得到结果如下图:
发现torch没有找到可用的GPU。
问题检查
检查是否安装Cuda
命令行运行nvcc -V
,安装cuda版本为12.1
这一步如果没结果那么就是cuda没装好
检查安装的torch版本
命令行运行conda list
或者 pip list
,发现安装的是cpu版本:
这一步如果没结果那么就是还没有安装pytorch
问题分析
有的朋友就开始奇怪了,明明我确实是按照官网命令下载的pytorch啊,怎么会下载的是cpu版本?
原因一:使用了conda命令安装
conda命令会检查所以的库依赖,找到能兼容所有库的安装包版本。而很可能你的环境不支持Cuda的版本(比如没装cuda、python版本不兼容)。这时conda不会发出错误,而是使用cpu安装,导致你误以为安装了cuda版本的pytorch。
原因二:python版本不匹配
我在自己的环境下调用官网的pip命令进行安装:
直接发生错误,告诉你没有合适的版本:
所以这个问题的根本原因还是python版本不匹配,conda自动安装了cpu版本的torch。
解决方案
提升python版本到3.9并且使用pip命令安装
conda install python=3.9
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
再次检查版本,这次确实是cuda版本了:
调用测试程序,发现可以正确使用GPU了:
注意,pytorch官网实际已经提示了,pytorch要求python3.9及以上的版本。