Windows笔记本训练GPT2时报No CUDA GPUs are available错如何解决
问题根因梳理
- 执行
nvcc --version报NameError是因为你在Python交互环境中运行了系统命令,该命令需要在Windows的CMD/PowerShell终端执行,不属于Python语法。 - 通过conda安装的
cudatoolkit=10.2仅为PyTorch运行所需的CUDA runtime依赖,不包含完整CUDA工具链,也不会自动配置系统环境变量,所以终端找不到nvcc属于正常情况。 - 「测试时cuda可用、运行训练时报错」的最常见原因是执行测试和执行训练的Python环境不是同一个。
具体修复步骤
- 校验环境一致性
打开你运行训练代码的终端,执行以下命令获取当前环境路径,和你之前测试cuda可用的Python环境路径比对:
import sys print(sys.executable)
如果两者路径不一致,切换到训练代码对应的环境,重新执行torch.cuda.is_available()确认可用性,若返回False,在对应环境重新安装匹配你GPU驱动的PyTorch版本即可。
- 补装完整CUDA工具链(仅训练代码需要编译自定义CUDA算子时需要)
如果训练逻辑涉及自定义CUDA算子编译,需要单独安装完整版CUDA Toolkit:
- 首先在Windows CMD/PowerShell终端执行
nvidia-smi,查看驱动支持的最高CUDA版本,安装的CUDA版本不能高于该数值 - 下载对应版本的CUDA Toolkit安装包,安装时勾选「添加CUDA到系统环境变量」选项
- 安装完成后重启终端,执行
nvcc --version确认返回正常版本信息
- 修正训练代码的设备指定逻辑
避免硬编码设备索引引发错误,改用兼容写法:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = model.to(device)
同时检查是否设置了错误的GPU可见性环境变量:
import os print(os.environ.get("CUDA_VISIBLE_DEVICES", "未设置"))
如果返回值为空或者你设备不存在的索引,在运行训练代码前先在终端执行set CUDA_VISIBLE_DEVICES=0(CMD)或者$env:CUDA_VISIBLE_DEVICES=0(PowerShell)即可。
- 双显卡笔记本适配
如果你的笔记本搭载核显+NVIDIA独显双显卡,需要手动指定Python解释器调用独显:
打开NVIDIA控制面板→3D设置→管理3D设置→程序设置,添加你训练用的Python解释器(步骤1中获取的exe文件),指定该程序使用「高性能NVIDIA处理器」,保存设置后重新运行训练代码。
内容的提问来源于stack exchange,提问作者AFB
相关产品推荐
相关产品推荐

