Pytorch RuntimeError:CUDA 内存不足且有大量可用内存

Dmi*_*hin 33 python machine-learning computer-vision pytorch

在训练模型时,我遇到了以下问题:

RuntimeError: CUDA out of memory. Tried to allocate 304.00 MiB (GPU 0; 8.00 GiB total capacity; 142.76 MiB already allocated; 6.32 GiB free; 158.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

正如我们所看到的,当尝试分配 304 MiB 内存时发生错误,而 6.32 GiB 是空闲的!问题是什么?正如我所看到的,建议的选项是设置 max_split_size_mb 以避免碎片。它会有帮助吗?如何正确地做到这一点?

这是我的 PyTorch 版本:

火炬==1.10.2+cu113

火炬视觉==0.11.3+cu113

火炬音频===0.10.2+cu113

daz*_*act 11

我浪费了几个小时,直到我发现减小batch size输入图像 ( image size) 的宽度并调整其宽度是必要的步骤。

  • 我有 6Gb 的 GPU 内存,但尚未分配。我如何分配这个? (2认同)

小智 3

您的问题可能是由于 GPU 内存碎片造成的。您可能想清空缓存分配器使用的缓存内存。

import torch
torch.cuda.empty_cache()
Run Code Online (Sandbox Code Playgroud)

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (5认同)
  • 我在训练模型之前调用了这个方法,并得到了同样的错误。 (5认同)