pytorch CUDA当有足够的可用内存时内存不足

iyfjxgzm  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(265)

我在使用Pytorch和CUDA时遇到了问题。有时它工作正常,有时它告诉我RuntimeError: CUDA out of memory.然而,我很困惑,因为检查nvidia-smi显示我的卡的已使用内存是563MiB / 6144 MiB,理论上应该有5GiB可用。x1c 0d1x
然而,在运行我的程序时,我收到了这样的消息:RuntimeError: CUDA out of memory. Tried to allocate 578.00 MiB (GPU 0; 5.81 GiB total capacity; 670.69 MiB already allocated; 624.31 MiB free; 898.00 MiB reserved in total by PyTorch)
看起来Pytorch保留了1GiB,知道分配了~ 700 MiB,并试图分配~ 600 MiB给程序-但声称GPU内存不足。这是怎么回事?根据这些数字,应该有足够的GPU内存。

kmpatx3s

kmpatx3s1#

你需要在一些方法之后(在错误之前)清空torch缓存

torch.cuda.empty_cache()
jobtbby3

jobtbby32#

可能的答案:我在运行同时使用Tensorflow和PyTorch的程序时经常收到这个错误(我已经停止这样做了)。看起来PyTorch OOM错误消息将优先于Tensorflow。
如果出于某种原因,你想同时使用这两个,我通过限制TensorFlow内存来修复我的问题,如下所示:
tf.config.experimental.set_virtual_device_configuration(gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=TF_MEM_LIM)])
其中TF_MEM_LIM是所需限制的整数值(以兆字节为单位)。

相关问题