【问题标题】:How to train a TF model that is larger than GPU memory?如何训练大于 GPU 内存的 TF 模型?
【发布时间】:2021-03-02 16:25:37
【问题描述】:

我想使用 TF2 训练一个大型物体检测模型,最好是 EfficientDet D7 网络。使用具有 16 GB 内存的 Tesla P100 卡时,我遇到了“内存不足”异常,即无法在显卡上分配足够的内存。

所以我想知道在这种情况下我的选择是什么。如果我有多个 GPU,那么将拆分 TF 模型以填充两张卡的内存是否正确?所以在我的情况下,再次使用第二张 16 GB 的 Tesla 卡,我在训练期间总共会有 32 GB?如果是这样的话,对于一个可以使用多个 GPU 的云提供商来说也是如此吗?

此外,如果我错了,在训练期间为多个 GPU 拆分模型不起作用,那么还有什么其他方法可以训练不适合我的 GPU 内存的大型网络?

PS:我知道我可以将 batch_size 减少到 1,但不幸的是,对于真正的大型模型,这仍然不能解决我的问题...

【问题讨论】:

    标签: python tensorflow object-detection object-detection-api


    【解决方案1】:

    您至少可以在 GCP(谷歌云平台)中使用多个 GPU,而不太确定其他云提供商。是的,一旦你这样做了,你就可以使用更大的批量进行训练(具体数量取决于 GPU、内存以及你在 VM 中运行 GPU 的方式)

    您可以查看link 以获取 GCP 中所有可用 GPU 的列表

    如果您使用的是对象检测 API,您可以查看 this 发布的关于使用多个 GPU 进行训练的信息。

    或者,如果您想使用单个 GPU,一个聪明的技巧是使用梯度累积的概念,您可以在不使用过多额外 GPU 内存的情况下虚拟增加批量大小,这在 this 中进行了讨论发帖

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 2020-09-26
      • 2017-06-17
      • 2022-06-23
      • 2021-11-14
      • 2020-08-25
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多