torch.cuda.is_available() 返回 False 的常见原因及解决方法
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.1cu121 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 路径。如果使用 Condacondaenvlist检查当前激活的环境。例如conda activate pytorch然后再运行python进入 Pythonimporttorchprint(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.1cu121 CUDA版本 12.1 CUDA是否可用 True GPU数量 1 当前GPU NVIDIA GeForce RTX 4060 Laptop GPU九、代码中正确使用 GPU即使torch.cuda.is_available()返回 True也需要把模型和数据移动到 GPU。一般写法devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)然后modelmodel.to(device)数据同样需要移动xx.to(device)yy.to(device)否则模型依然可能运行在 CPU 上。十、常见问题总结1.torch.version.cuda是 None说明当前 PyTorch 很可能是 CPU 版本。解决重新安装支持 CUDA 的 PyTorch。2.nvidia-smi无法运行一般先检查NVIDIA 显卡驱动驱动是否正确安装系统是否识别显卡3. CMD 中是 TruePyCharm 中是 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。