运行时错误:CUDA 内存不足。试图分配...但内存是空的

Posted

技术标签:

【中文标题】运行时错误:CUDA 内存不足。试图分配...但内存是空的【英文标题】:RuntimeError: CUDA out of memory. Tried to allocate... but memory is empty 【发布时间】:2021-04-17 08:20:57 【问题描述】:

我正在尝试从 Unet 使用它们的默认超参数运行训练文件,批量大小 = 1。

我有一个 4GB 的 GTX970,让 Windows 使用集成显卡。

当我运行nvidia-smi 时,它说 GPU 的内存几乎是空闲的(52MiB / 4096MiB),“没有找到正在运行的进程”并且 pytorch 使用的是 GPU 而不是集成显卡

我不明白什么在使用内存:

RuntimeError: CUDA 内存不足。尝试分配 150.00 MiB(GPU 0;4.00 GiB 总容量;2.77 GiB 已分配;72.46 MiB 空闲;PyTorch 总共保留 2.82 GiB)。

【问题讨论】:

您能否检查 GPU 上的内存是否随时间累积?您可以使用nvidia-smi -l 1 使显示每秒循环一次。 对于您当前的超参数,似乎 4GB 还不够。尝试降低图像的输入分辨率。 我试图降低分辨率,但它太小了,不幸的是问题仍然存在 尝试使用“nvidia-smi -l 1”,发现没有其他进程占用内存(只有我运行的那个),但错误仍然存​​在(说 2.7GB 是已分配) 【参考方案1】:

GPU 内存分配不是一次性完成的。随着程序加载数据和模型,GPU 内存使用量逐渐增加,直到训练真正开始。在您的情况下,该程序已分配 2.7GB 并尝试在训练开始之前获得更多内存,但没有足够的空间。 4GB GPU 内存对于 CV 深度学习算法来说通常太小了。

【讨论】:

以上是关于运行时错误:CUDA 内存不足。试图分配...但内存是空的的主要内容,如果未能解决你的问题,请参考以下文章

PHP致命错误:内存不足(分配80740352)(试图分配12352字节)

5.51 GiB 已分配; 417.00 MiB 免费; PyTorch CUDA 总共保留 5.53 GiB 内存不足

Tensorflow GPU错误CUDA_ERROR_OUT_OF_MEMORY:内存不足

致命错误:X:\wamp\www\xxx 内存不足(已分配 1134559232)(试图分配 32768 字节)

WordPress PHP致命错误:内存不足(分配2097152)(试图分配4096字节)

CUDA 错误:内存不足 - Python 进程使用所有 GPU 内存