背景: 我有一个模型,我正在尝试将其移植到TF 2.0,以获得一些渴望的执行力,但是我似乎无法弄清楚如何进行分布式训练(4个GPU)并同时执行梯度累积。
问题:
我需要能够使用带有梯度带的自定义训练循环,因为我有一个复杂的多模型问题(几个输入模型和输出模型一起训练),我不需要二阶梯度
使用我的模型大小(中等,像中等大小的变压器),我无法获得大于约32的批处理大小,其中有4个GPU,这是我可以获得的最大实例,可悲的是,这些确实是旧的11GB K80,因为Azure似乎认为Google甚至不再免费提供的GPU已经足够好了...........
我有一个需要非常大批处理的数据集,因为我必须解决非常大的不平衡(我也使用了c的权重和焦点损失),因此我需要执行4-8步的梯度累加平滑渐变。
我已经阅读了分布式培训循环指南,并设法实现了它: https://www.tensorflow.org/beta/tutorials/distribute/training_loops
我还针对自定义训练循环和tf.keras在TF 2.0中实现了梯度累积: https://colab.research.google.com/drive/1yaeRMAwhGkm1voaPp7EtFpSLF33EKhTc
答案 0 :(得分:-1)
如果您仍有任何问题,请阅读https://www.tensorflow.org/tutorials/distribute/custom_training并更新您的问题。