news 2026/5/28 7:07:47

PyTorch 多卡训练常见坑:设置 CUDA_VISIBLE_DEVICES 后仍 OOM 在 GPU 0 的解决之道

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PyTorch 多卡训练常见坑:设置 CUDA_VISIBLE_DEVICES 后仍 OOM 在 GPU 0 的解决之道

PyTorch 多卡训练常见坑:设置 CUDA_VISIBLE_DEVICES 后仍 OOM 在 GPU 0 的解决之道

问题现象

服务器有两张 GPU(GPU 0 和 GPU 1),GPU 0 正在跑一个大模型任务。

你想在 GPU 1 上单独跑另一个 PyTorch 程序,于是这样启动:

CUDA_VISIBLE_DEVICES=1python train.py --gpu1

程序日志显示:

using GPU : 1 可见 GPU 数量: 1 当前 GPU ID: 0 GPU 名称: NVIDIA GeForce RTX 3090 # 正确是 GPU 1

一切看似正常,但运行几步后报错:

RuntimeError: CUDA out of memory ... (GPU 0; 23.69 GiB total capacity; ...)

明明只看到一张卡,为什么还在物理 GPU 0 上爆显存?

根本原因

这是 PyTorch(尤其是 1.x 版本)的历史遗留 bug:

即使通过CUDA_VISIBLE_DEVICES正确限制了可见 GPU,PyTorch 在首次初始化 CUDA 上下文时,仍会在原始的物理 GPU 0 上分配少量内存(用于内部通信、缓存等)。

后续模型运行虽然在指定的 GPU 上,但只要触发某些操作(如大 tensor 分配、某些模块 forward),就会唤醒 GPU 0 的旧上下文,导致显存被占用,最终 OOM。

解决方案

在所有模型创建和数据移动之前,强制设置当前设备

importtorch# 在创建 net、前,紧跟 import torch 之后torch.cuda.set_device(0)# 这里的 0 是逻辑 ID,即你通过 CUDA_VISIBLE_DEVICES 指定的那张卡

加上这行后,PyTorch 会彻底绑定到新上下文,旧的 GPU 0 上下文不再被触碰,问题瞬间解决。

最佳实践代码结构

importargparseimportosimporttorch# 先 import torchparser=argparse.ArgumentParser()parser.add_argument("--gpu",type=str,default='1')args=parser.parse_known_args()[0]os.environ['CUDA_VISIBLE_DEVICES']=args.gpu# 关键:强制设置设备torch.cuda.set_device(0)torch.cuda.empty_cache()# 可选,保险起见再清一次# 现在才导入模型等fromnetimportNet# ...

额外建议

  • 单卡训练时不要使用torch.nn.DataParallel,它会引入额外开销并可能触发旧 bug。
  • 先用小 batchSize(如 2~4)验证跑通,再逐步增大。
  • 监控命令:watch -n 1 nvidia-smi

总结

一句torch.cuda.set_device(0)就能彻底解决这个让人抓狂的“ GPU 0 占用”问题。记住:限制可见 GPU 后,必须再强制设置当前设备,才能完全隔离。

希望这个坑能帮到更多遇到同样问题的朋友!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 23:24:39

如何选择合适的飞行影院设备厂家提升7D互动影院体验?

在选择合适的飞行影院设备厂家时,了解其技术实力与市场口碑是基础。厂家需要具备丰富的技术背景,以确保设备在使用中的稳定性和高效性。同时,优质的产品质量会直接影响观众在7D互动影院中的体验。此外,值得关注的是厂家的售后服务…

作者头像 李华
网站建设 2026/5/25 8:29:46

打造专属观影空间:MPV播放器窗口个性化布局指南

打造专属观影空间:MPV播放器窗口个性化布局指南 【免费下载链接】mpv 🎥 Command line video player 项目地址: https://gitcode.com/GitHub_Trending/mp/mpv 当视频窗口总是出现在意想不到的位置,或者大小总是不尽如人意时&#xff0…

作者头像 李华
网站建设 2026/5/27 9:59:39

RecyclerView图片加载性能优化:告别卡顿与闪烁的实战指南

你是不是也遇到过这样的场景:用户快速滑动图片列表时,界面突然卡顿,图片闪烁甚至显示错误内容?作为一名Android开发者,RecyclerView与图片加载库的配合问题,常常成为影响应用流畅度的性能瓶颈。今天&#x…

作者头像 李华
网站建设 2026/5/26 6:01:29

腾讯混元图像模型GGUF实践手册:从零搭建高效ComfyUI工作流

腾讯混元图像模型GGUF实践手册:从零搭建高效ComfyUI工作流 【免费下载链接】hunyuanimage-gguf 项目地址: https://ai.gitcode.com/hf_mirrors/calcuis/hunyuanimage-gguf 你是否曾为大型AI图像模型的高硬件要求而苦恼?或者在使用ComfyUI时被复杂…

作者头像 李华
网站建设 2026/5/27 22:39:55

5大AI工程核心实践:从概念验证到生产部署的完整指南

5大AI工程核心实践:从概念验证到生产部署的完整指南 【免费下载链接】aie-book [WIP] Resources for AI engineers. Also contains supporting materials for the book AI Engineering (Chip Huyen, 2025) 项目地址: https://gitcode.com/GitHub_Trending/ai/aie-…

作者头像 李华