目录
1. learning rates for large minibatches:
3 Subtleties and Pitfalls of Distributed SGD
https://blog.youkuaiyun.com/xxiaozr/article/details/80346381
https://www.jianshu.com/p/738ff3628543
总结:
1. learning rates for large minibatches:
large minibatch 在分布式学习中可以利用数据并行性使用多个 work 工作,并且不会减少每个 work 的工作量也不会牺牲模型的精度。作者发现,下面的learning rate scaling rule能够适合于很大范围的batch size。
Linear Scaling Rule:当minibatch size乘以一个数,同样learning rate也乘以这个数
。
所有其他超参数保持不变,这个 rule 在 broad range of minibatch size 里都很有效果,其他的 hyper-parameters(weight decay 等)都保持不变。
我们比较了 k minibatch ,每一个batch size 为 n ,学习率为 η 和 一个 minibatch ,size 为 kn, 学习率为
2. warmup
- Constant warmup:一种热身的策略是使用一个小的定值作为初始的学习率,训练几个回合。这种策略对于物体检测,分割,fine-tune等问题在有些时候效果较好,但是当
较大也就是batch较大的时候,就不是那么有效了,尤其在热身结束的时候会出现error的峰值。
- gradual warmup:为了克服constant warmup的不足,作者使用了gradual warmup,就是一点一点地将学习率从小,增大。并且在增大后,回复到原始的learning rate schedule。
Gradual warmup:逐渐将学习率从小到大增大,可以避免学习率的突然增大,保证训练初期的健康收敛。在 kn 的minibatch size 下,一开始使用 η 学习率,然后在 5 epoch 后逐渐增大至 ,warmup 后,回到正常的 learning rate schedule.
3 Subtleties and Pitfalls of Distributed SGD
在分布式计算中,许多 common implementation errors 会改变超参数的定义,模型虽然可以训练但误差会比较大
- weight decay:
l2 regularization on the weights
如果没有 weight decay , 就会有很多种方法来缩放学习率,例如缩放loss 的梯度项,但是我们发现缩放 loss 和缩放学习率并不等价
- mometum correction:
参数更新方法:
m 是 momentum 的 decay factor , u 是 update tensor.
变种:将学习率加到 update tensor 项中
对于 fixed 的学习率,这两个是等价的,但是我们可以发现,u 和学习率是无关的,v 和学习率是有关的,如果学习率改变了,为了使第二个式子和第一个等价,v 应该变为
我们将 factor 当做 momentum correction,作者发现,当
的时候,它对于稳定训练过程非常重要。
- gradient aggregation
对于 k 个 worker,每一个 worker 的 minibatch size 为 n,梯度更新的时候除以 kn ,而 loss layer 通常会将每一个 worker 的平均梯度加起来
- data shuffling
4. Communication
涉及多个GPU的并行运算,对于每一个参数的梯度,都是通过allreduce操作来进行汇聚的。在进行allreduce之前,每个GPU都会计算自己的梯度,在allreduce*之后,每个GPU得到梯度的和。
5. Main Results and Analysis
- minibath size vs error
- warmup
- Training curves for various minibatch size
Alternative learning rate rules