Ubuntu 22.04下如何让NVIDIA GPU仅用于PyTorch脚本,停止Xorg与gnome-remote-desktop-daemon占用GPU
Ubuntu 22.04下如何让NVIDIA GPU仅用于PyTorch脚本,停止Xorg与gnome-remote-desktop-daemon占用GPU
看起来你遇到的是双显卡环境下,桌面相关进程占用了NVIDIA GPU的少量内存,同时PyTorch的内存显示有点让人困惑的问题对吧?别担心,咱们一步步来解决:
一、切换到Intel核显作为桌面默认显卡
你的机器是Intel核显+NVIDIA独显的组合,当前用的是on-demand模式,这会让桌面环境偶尔调用NVIDIA GPU。要让NVIDIA GPU完全留给PyTorch用,咱们可以把Intel核显设为默认显示设备:
- 打开终端,执行命令:
sudo prime-select intel - 输入密码确认后,重启你的系统
重启完成后,桌面环境就会完全用Intel核显运行,Xorg和gnome-remote-desktop-daemon这类进程就不会再占用NVIDIA GPU的内存了。
二、验证切换效果
重启后,咱们来确认一下:
- 执行
prime-select query,输出应该是intel,说明默认显卡切换成功 - 再跑
nvidia-smi,你会发现之前的Xorg和gnome-remote-desktop-daemon进程已经不在GPU进程列表里了,GPU内存占用会降到很低(几乎为0)
三、确保PyTorch正确调用GPU
你提到PyTorch识别到了GPU,但显示内存占用为0,这大概率是因为脚本里没有把模型和数据转移到GPU上。记得在脚本里加上这些步骤:
# 检测是否有可用的CUDA设备 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # 将模型转移到GPU model = model.to(device) # 将输入数据转移到GPU inputs = inputs.to(device)
这样PyTorch才会真正使用NVIDIA GPU的内存,之前的0占用只是因为还没有把计算任务移到GPU上而已。
四、解决CUDA内存不足的额外建议
即使切换了显卡,你还是遇到了OOM错误,可能是因为你的batch size太大,或者模型本身占用内存较高。可以试试这些优化:
- 减小训练的
batch_size参数 - 在训练循环的合适位置调用
torch.cuda.empty_cache(),释放无用的缓存内存 - 检查是否有其他未关闭的CUDA进程占用内存,可以用
nvidia-smi查看所有GPU进程
备注:内容来源于stack exchange,提问作者dextervex
相关产品推荐
相关产品推荐

