本文主要是介绍Scaling SGD Batch Size to 32K for ImageNet Training,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为了充分利用GPU计算,加快训练速度,通常采取的方法是增大batch size.然而增大batch size的同时,又要保证精度不下降,目前的state of the art 方法是等比例与batch size增加学习率,并采Sqrt Scaling Rule,Linear Scaling Rule,Warmup Schem等策略来更新学来率.
在训练过程中,通过控制学习率,便可以在训练的时候采用大的batch,例如,batch=1024 for AlexNet,batch=8192 for ResNet-50.
那么,如何当有多个gpu的时候,如何利用更大的batch size.本文没有使用更大的学习率,而是提出了一种 Layer-wise Adaptive Rate Scaling (LARS)方法,LARS LR方法是,对不同的层采用不同的LR(学习率),每层的LR的值有该层的weigthts,gradients相关.通过使用LARS LR算法,k可以增大batch size,32768 for ResNet,8192 for AlexNet.
LARS LR算法定义如下:
η=l×γ×||w||2||∇w||2
式中, l 为scaling factor,在AlexNet,ResNet训练中,
更新weights:
w=w−η∇w
这篇关于Scaling SGD Batch Size to 32K for ImageNet Training的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!