如何在训练过程中检查 CUDA 内存不足问题的根本原因?

How to check the root cause of CUDA out of memory issue in the middle of training?

我是 运行 抱脸的罗伯塔 language_modeling.py。执行 400 步后,我突然遇到 CUDA 内存不足问题。不知道怎么处理。你能帮忙吗?谢谢

这可能有多种原因。如果你只是在几次迭代后才得到它,那可能是你没有释放计算图。您使用 loss.backward(retain_graph=True) 或类似的东西吗?

还有,当你运行推理的时候,一定要使用

with torch.no_grad():
    model.forward(...)

否则,计算图也会保存在那里,并且可能永远不会释放,因为您从未对它们调用 backward()

我的问题是我没有检查我的 GPU 内存大小与样本大小的比较。我有很多非常小的样本,经过多次迭代后得到了一个大样本。我的错。 谢谢你,如果你碰巧记得检查这些东西。