torch.cuda.is_available() 返回 False 的常见原因及解决方法
在使用 PyTorch 训练模型时,很多人会先通过下面这行代码检查 GPU 是否可用:
importtorchprint(torch.cuda.is_available())如果输出:
False说明当前 PyTorch 没有正常使用 CUDA。
这个问题比较常见,通常和 PyTorch 版本、CUDA 环境、显卡驱动或者安装方式有关。
一、先检查电脑是否有 NVIDIA 显卡
打开 CMD,执行:
nvidia-smi如果可以正常显示显卡型号、驱动版本、显存占用等信息,说明 NVIDIA 驱动基本正常。
如果提示:
'nvidia-smi' 不是内部或外部命令或者无法识别显卡,那么优先检查 NVIDIA 驱动是否安装正确。
二、检查 PyTorch 是否安装了 CUDA 版本
运行:
importtorchprint(torch.__version__)print(torch.version.cuda)print(torch.cuda.is_available())例如:
2.5.1+cu121 12.1 True表示安装的是支持 CUDA 12.1 的 PyTorch。
如果:
print(torch.version.cuda)输出:
None那么大概率安装的是 CPU 版本 PyTorch。
此时即使电脑有 NVIDIA 显卡:
torch.cuda.is_available()依然会返回:
False三、检查是否误装了 CPU 版本 PyTorch
可以使用:
pip show torch查看当前 PyTorch 信息。
如果之前直接执行:
pipinstalltorch某些环境下可能安装到不符合预期的版本。
可以先卸载:
pip uninstall torch torchvision torchaudio然后根据自己的环境重新安装 CUDA 对应版本。
安装完成后再次测试:
importtorchprint(torch.cuda.is_available())四、检查 NVIDIA 驱动
执行:
nvidia-smi通常可以看到:
Driver Version CUDA Version需要注意:
nvidia-smi中显示的 CUDA Version 并不代表你一定安装了对应版本的 CUDA Toolkit。
它主要表示当前显卡驱动最高支持的 CUDA 版本。
PyTorch 是否能够使用 GPU,最终还是要看:
torch.version.cuda以及:
torch.cuda.is_available()五、检查当前 Python 环境
如果电脑中安装了多个 Python 或 Conda 环境,很容易出现:
PyTorch 明明安装了 CUDA 版本,但是当前运行代码的环境并不是那个环境。
可以执行:
where pythonWindows 下可以查看当前 Python 路径。
如果使用 Conda:
condaenvlist检查当前激活的环境。
例如:
conda activate pytorch然后再运行:
python进入 Python:
importtorchprint(torch.cuda.is_available())六、IDEA 或 PyCharm 使用了错误解释器
有时候终端中执行:
torch.cuda.is_available()返回:
True但是在 PyCharm 或 IDEA 中运行却返回:
False这通常不是 CUDA 问题,而是 IDE 使用了另外一个 Python 环境。
需要检查项目解释器是否和终端中的环境一致。
例如 Conda 环境路径可能类似:
Anaconda3/envs/pytorch/python.exe确保 IDE 使用的是安装了 GPU 版 PyTorch 的解释器。
七、检查 CUDA 设备数量
可以运行:
importtorchprint(torch.cuda.device_count())如果输出:
0说明 PyTorch 当前没有检测到可用 CUDA 设备。
如果输出:
1说明检测到了 1 张 GPU。
还可以查看显卡名称:
print(torch.cuda.get_device_name(0))例如:
NVIDIA GeForce RTX 4060 Laptop GPU八、完整检测代码
可以直接运行下面这段代码:
importtorchprint("PyTorch版本:",torch.__version__)print("CUDA版本:",torch.version.cuda)print("CUDA是否可用:",torch.cuda.is_available())print("GPU数量:",torch.cuda.device_count())iftorch.cuda.is_available():print("当前GPU:",torch.cuda.get_device_name(0))正常情况下可能输出:
PyTorch版本: 2.5.1+cu121 CUDA版本: 12.1 CUDA是否可用: True GPU数量: 1 当前GPU: NVIDIA GeForce RTX 4060 Laptop GPU九、代码中正确使用 GPU
即使:
torch.cuda.is_available()返回 True,也需要把模型和数据移动到 GPU。
一般写法:
device=torch.device("cuda"iftorch.cuda.is_available()else"cpu")然后:
model=model.to(device)数据同样需要移动:
x=x.to(device)y=y.to(device)否则模型依然可能运行在 CPU 上。
十、常见问题总结
1.torch.version.cuda是 None
说明当前 PyTorch 很可能是 CPU 版本。
解决:
重新安装支持 CUDA 的 PyTorch。
2.nvidia-smi无法运行
一般先检查:
- NVIDIA 显卡驱动
- 驱动是否正确安装
- 系统是否识别显卡
3. CMD 中是 True,PyCharm 中是 False
大概率是:
Python解释器不一致检查 PyCharm 当前解释器。
4. GPU 能识别但程序还是跑 CPU
检查是否执行:
model.to(device)以及:
data.to(device)总结
如果:
torch.cuda.is_available()返回:
False可以按照下面顺序排查:
1. nvidia-smi 检查显卡和驱动 2. torch.version.cuda 检查 PyTorch CUDA 版本 3. 检查是否安装了 CPU 版 PyTorch 4. 检查 Python / Conda 环境 5. 检查 PyCharm 或 IDEA 解释器 6. 重新安装匹配的 PyTorch CUDA 版本大多数情况下,问题都出在:
PyTorch版本不对或者:
当前使用的Python环境不对确认环境一致之后,通常就可以正常使用 GPU。