ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PyTorch报错:Torch not compiled with CUDA enabled 原因及解决方法

PyTorch报错:Torch not compiled with CUDA enabled 原因及解决方法 在使用 PyTorch 训练模型时有时会遇到下面这个报错AssertionError: Torch not compiled with CUDA enabled或者RuntimeError: Torch not compiled with CUDA enabled这个报错的意思是当前安装的 PyTorch 不支持 CUDA也就是安装成了 CPU 版本因此无法使用 NVIDIA GPU。通常出现在执行下面这类代码时model.cuda()或者devicetorch.device(cuda)modelmodel.to(device)下面整理一下常见原因和解决方法。一、先检查 PyTorch 是否支持 CUDA打开 Python执行importtorchprint(torch.__version__)print(torch.version.cuda)print(torch.cuda.is_available())如果输出类似2.5.1 None False其中torch.version.cuda None通常说明当前安装的是 CPU 版本 PyTorch。此时调用model.cuda()就容易出现Torch not compiled with CUDA enabled二、检查电脑是否有 NVIDIA 显卡打开 CMD 或终端执行nvidia-smi如果能够看到类似下面的信息NVIDIA GeForce RTX 4060 Driver Version: xxx CUDA Version: xx.x说明系统已经识别到 NVIDIA 显卡。如果nvidia-smi无法运行则需要先检查是否有 NVIDIA 显卡NVIDIA 驱动是否安装驱动是否正常工作如果电脑本身没有 NVIDIA 显卡就不能使用 CUDA。三、卸载当前 CPU 版 PyTorch如果确认电脑有 NVIDIA GPU但当前 PyTorch 是 CPU 版可以先卸载pip uninstall torch torchvision torchaudio如果提示是否确认Proceed (Y/n)?输入Y即可。卸载后再重新安装支持 CUDA 的 PyTorch。四、重新安装 CUDA 版 PyTorchPyTorch 不同版本对应的安装命令可能不同。建议根据自己的环境选择对应版本。例如安装某个 CUDA 版本时命令通常类似pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121安装完成后再检查importtorchprint(torch.version.cuda)print(torch.cuda.is_available())如果输出类似12.1 True说明 CUDA 已经可以正常使用。五、Conda 环境下注意当前环境很多人明明安装了 GPU 版 PyTorch却仍然报Torch not compiled with CUDA enabled一个很常见的原因是安装 PyTorch 的环境和运行代码的环境不是同一个。可以先查看 Conda 环境condaenvlist然后激活正确环境conda activate pytorch再执行python进入 Python 后测试importtorchprint(torch.cuda.is_available())如果这里返回True说明当前环境可以正常使用 GPU。六、PyCharm或IDEA解释器选错还有一种非常常见的情况终端中执行torch.cuda.is_available()返回True但是在 PyCharm 中运行却报Torch not compiled with CUDA enabled这通常说明PyCharm 当前使用的 Python 解释器不是安装 GPU 版 PyTorch 的那个环境。需要检查项目解释器。例如 Conda 环境可能位于Anaconda3/envs/pytorch/python.exe确认 IDE 中选择的是正确解释器。七、检查当前 PyTorch 安装位置可以执行importtorchprint(torch.__file__)例如D:\Anaconda3\envs\pytorch\Lib\site-packages\torch\__init__.py这样可以确认当前运行的到底是哪一个 PyTorch。同时可以执行where pythonWindows 下查看当前 Python 路径。如果 Python 路径和预期环境不一致就需要切换解释器或重新激活环境。八、正确使用 CUDA确认torch.cuda.is_available()返回 True 后可以这样写importtorch devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)print(device)然后将模型移动到设备modelmodel.to(device)数据也要移动xx.to(device)yy.to(device)这样即使某台电脑没有 GPU代码也不会直接报错而是自动使用 CPU。九、不要直接写死 cuda不推荐devicetorch.device(cuda)更推荐devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)这样代码兼容性更好。完整示例importtorch devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)print(当前设备,device)modelmodel.to(device)十、常见问题总结如果出现Torch not compiled with CUDA enabled可以按照下面顺序排查1. 执行 nvidia-smi确认电脑有 NVIDIA GPU 2. 查看 torch.version.cuda 3. 查看 torch.cuda.is_available() 4. 检查是否安装了 CPU 版 PyTorch 5. 卸载当前 PyTorch 6. 重新安装支持 CUDA 的 PyTorch 7. 检查 Conda 环境 8. 检查 PyCharm 或 IDEA 的 Python 解释器总结Torch not compiled with CUDA enabled的核心原因通常就是当前 PyTorch 不支持 CUDA最关键的检查代码是importtorchprint(torch.__version__)print(torch.version.cuda)print(torch.cuda.is_available())如果结果是None False大概率说明安装的是 CPU 版本 PyTorch。重新安装支持 CUDA 的 PyTorch并确保 Python 环境、IDE 解释器和实际安装环境一致后通常就可以解决。
返回列表