如何解决如何训练大于 GPU 内存的 TF 模型?
我想使用 TF2 训练大型物体检测模型,最好使用 EfficientDet D7
网络。使用具有 16 GB 内存的 Tesla P100 卡时,我遇到了“内存不足”异常,即无法在显卡上分配足够的内存。
所以我想知道在这种情况下我的选择是什么。如果我有多个 GPU,那么 TF 模型将被拆分以便填充两张卡的内存是否正确?所以在我的情况下,再次使用第二张 16 GB 的 Tesla 卡,我在训练期间总共会有 32 GB?如果是这种情况,那么对于我可以使用多个 GPU 的云提供商来说也是如此吗?
此外,如果我错了,并且在训练期间无法为多个 GPU 拆分模型,那么还有什么其他方法可以训练一个不适合我的 GPU 内存的大型网络?
PS:我知道我可以将 batch_size
减少到 1,但不幸的是,对于非常大的模型,这仍然不能解决我的问题......
解决方法
您至少可以在 GCP(Google 云平台)中使用多个 GPU,对其他云提供商不太确定。是的,一旦你这样做了,你就可以用更大的批量进行训练(确切的数字取决于 GPU、它的内存以及你在 VM 中运行的 GPU)
您可以查看此 link 以获取 GCP 中所有可用 GPU 的列表
如果您使用的是对象检测 API,您可以查看 this 有关使用多个 GPU 进行训练的帖子。
或者,如果您想使用单个 GPU,一个聪明的技巧是使用梯度累积的概念,您可以在不使用过多额外 GPU 内存的情况下虚拟地增加批量大小,这在 {{3 }}帖子
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。