PyTorch模型无法在Nvidia GTX 1650 GPU运行,转而使用Intel核显的解决咨询
嘿,这个问题我碰到过好几次了!明明CUDA显示可用,但GTX1650就是躺平,核显在那瞎忙活,咱们一步步把独显唤醒:
一、强制指定PyTorch使用NVIDIA GPU
系统里有两个GPU时,PyTorch可能默认选了核显(尤其是笔记本,核显负责显示,优先级可能更高),你可以主动指定使用独显:
- 显式指定设备ID:先搞清楚你的GTX1650对应的设备ID,在代码里加这几行:
然后把模型和数据都移到这个device上。import torch print(torch.cuda.device_count()) # 应该输出2 print(torch.cuda.get_device_name(0)) # 看看哪个是GTX1650,假设是0 device = torch.device("cuda:0") # 直接指定用这个卡 - 用环境变量屏蔽核显:在代码最开头加这两行,让PyTorch只能看到NVIDIA显卡:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 这里的0对应GTX1650的设备ID
二、别漏了把数据也移到GPU上!
很多人只记得把model.to(device),但输入数据还留在CPU上,这样模型就算在GPU,也得来回传数据,实际还是核显在干活。训练循环里一定要把输入和标签都移到GPU:
for x, y in train_loader: x = x.to(device) y = y.to(device) # 再做前向传播、计算损失这些操作 outputs = model(x) loss = criterion(outputs, y)
三、检查PyTorch和CUDA版本是否匹配
虽然torch.cuda.is_available()返回True,但如果版本不兼容,独显也没法正常工作。你可以在终端或代码里输这两行看版本:
print(torch.__version__) print(torch.version.cuda)
然后确认你的显卡驱动支持的CUDA版本,要是PyTorch的CUDA版本比驱动支持的高,就得升级驱动或者换对应版本的PyTorch。
四、调整系统显卡默认设置
笔记本经常会默认用核显跑轻量程序,你可以手动改:
- 打开NVIDIA控制面板,找到「3D设置」→「管理3D设置」,在「全局设置」里把「首选图形处理器」改成「NVIDIA GTX 1650」,保存后重启程序试试。
- 也可以右键点击你的Python IDE(比如PyCharm),选「用图形处理器运行」→「高性能NVIDIA处理器」,直接指定用独显跑这个程序。
五、验证GPU是否真的在工作
有时候任务管理器的GPU显示不准(核显负责桌面渲染,所以波动明显),你可以用更准确的方式确认:
- 在训练代码里加两行打印:
如果输出都是print("模型所在设备:", next(model.parameters()).device) print("输入数据所在设备:", x.device)cuda:0(或对应设备),说明已经在GPU上跑了。 - 打开终端,输入
nvidia-smi,实时查看GTX1650的显存占用和使用率,这个比任务管理器靠谱多了。
要是做完这些,GTX1650应该就能正常干活了,epoch耗时肯定会降下来的!
内容的提问来源于stack exchange,提问作者Aayush




