在 RTX2070 上加载 ResNet50 - 内存不足

Loading ResNet50 on RTX2070 - Out of Memory

我正在尝试加载 ResNext50,并在其上加载 CenterNet,我可以使用 Google Colab 或 Kaggle 的 GPU 来完成。但是,

  1. 想知道这个网络需要多少 GPU 内存 (VRAM)?

  2. 当使用 RTX 2070 时剩余 5.5GB 显存(超出 8GB),我无法加载它。

批量大小为 1,#of workers 为 1,一切都设置为最小值。 OS:Ubuntu 18.04(使用 PyTorch)

在 TensorFlow 中,我知道我可以限制 VRAM 的数量(这使我能够加载和 运行 网络,尽管我没有足够的 VRAM),但在 PyTorch 中我没有找到这个功能呢。

有什么解决办法吗?

使用第三方依赖

您可以使用第三方库 torchfunc 获得 model 的大小(以字节为单位)(免责声明我是作者)。

import torchfunc

# Assuming model is loaded
print(torchfunc.sizeof(model))

无依赖关系

这个函数很简单,很简单,你照搬就行了,see source code

实际尺寸

这只是您模型的大小,在 forwardbackward 期间有更多的 VRAM 内存使用,并且取决于您的 batch 的大小。您可以尝试 pytorch_modelsize 库来估计这些(但不确定它是否适用于您的网络)。

清除缓存

你应该在 运行 网络之前清除你的缓存(有时重启工作站对我有帮助),因为你肯定有足够的内存。使用 GPU 终止进程也应该有所帮助。

再一次 torchfunc 可以提供帮助,请发出以下命令:

import torchfunc

torchfunc.cuda.reset()