内存可用时的 GPU 运行时错误

时间:2021-07-31 16:59:59

标签: python pytorch gpu ram

我目前正在训练一些神经网络模型,我发现由于某种原因,尽管有可用内存,但由于运行时错误,模型有时会在大约 200 次迭代之前失败。错误是:

RuntimeError: CUDA out of memory. Tried to allocate 2.00 MiB (GPU 0; 10.76 GiB total capacity; 1.79 GiB already allocated; 3.44 MiB free; 9.76 GiB reserved in total by PyTorch)

这显示了当应该有 9.76GB 可用内存时,只使用了大约 1.8GB 的​​内存。

我发现当我找到一个好的种子时(只是通过随机搜索),并且模型通过了前几百次迭代,之后它通常会运行良好。似乎模型在训练的早期没有那么多可用的内存,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

值得注意的是您的错误 9.76 GiB reserved in total by PyTorch 的这一部分意味着此内存不一定可用。我以前遇到过类似的问题,我会尝试使用 torch.cuda.empty_cache() 清空缓存。可能您也可以尝试 torch.cuda.clear_memory_allocated() 来清除分配的内存。然后使用 nvidia-smi CLI 对此进行测试。最大化内存的一个常见问题是批量大小。我倾向于使用这种方法来计算合理的批量大小 Gradle Plugin Release Notes

还有一些方法可以使用 PyTorch 库来调查内存使用情况,如下答案:https://stackoverflow.com/a/59923608/10148950