运行时错误: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 字节)