我在使用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内存。
2条答案
按热度按时间kmpatx3s1#
你需要在一些方法之后(在错误之前)清空torch缓存
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
是所需限制的整数值(以兆字节为单位)。