【问题标题】:Pytorch CUDA out of Memory if GPU is not “warmed up”?如果 GPU 没有“预热”,Pytorch CUDA 内存不足?
【发布时间】:2019-11-13 17:21:37
【问题描述】:

我有一个简单的脚本如下:

import torch
LOSS_WEIGHTS = [1,2,3]
LOSS_WEIGHTS = torch.Tensor(LOSS_WEIGHTS)
LOSS_WEIGHTS = LOSS_WEIGHTS.to(0)

如果我在计算机空闲时启动脚本,我经常会收到“CUDA 错误:内存不足”但 GPU 完全是空的。

在我多次重新启动脚本后,错误总是以某种方式消失。有谁知道我能做些什么来防止这个错误?我想在启动脚本之前初始化我的 cuda 设备吗?

  • pytorch 1.2.0(尝试了几个版本)
  • cuda 10.1(也尝试过 cuda 9)
  • python 3.7
  • 英伟达驱动 430
  • 硬件:1 x GTX 1070
  • Ubuntu 18.04

【问题讨论】:

  • 听起来 cuda 进行了初始化,并且您的脚本正在尝试在完全初始化之前运行一个进程。也许使用with 来检查可用性? pytorch.org/docs/stable/notes/cuda.html
  • 谢谢!使用缩进代码块添加with torch.cuda.device(0): 似乎可以完全消除错误。这似乎使代码有点复杂,因为我希望代码有时在另一台 PC 上与 CPU 一起运行以进行调试。

标签: python pytorch nvidia


【解决方案1】:

尝试像这样初始化(假设您只有 1 个 GPU)

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

您还可以使用类似的命令检查 gpu 是否可用和在线

nvidia-smi

【讨论】:

  • 在我的示例中添加该行表明 device 是 cuda 但 CUDA 错误的问题:在 GPU 风扇开始旋转之前内存不足仍然存在。
猜你喜欢
  • 2020-12-22
  • 1970-01-01
  • 2020-12-06
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 2020-03-26
  • 2020-04-09
相关资源
最近更新 更多