论文浏览(30) Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour


0. 前言


1. 要解决什么问题

  • 分布式训练中的一些细节。
    • 这里指的分布式训练是 Distributed synchronous SGD

2. 用了什么方法

  • 总而言之,本文就是观察到了一些现象,然后根据经验进行了一些优化。
  • 在ImageNet上训练时,如果batch size增加会提升训练难度。但如果克服了这些困难,那么模型的泛化能力会提高。
  • 提出了 Linear Scaling Rule
    • 当 minibatch size 的变化倍数为k时,学习率也要变化k倍,其他超参数不需要变化。
    • 为什么需要这条规则?
      • 文中给出了解释,我没细看。
      • 大概意思就是,bacth size为n、执行k次梯度下降与batch size为nk、执行1次梯度下降之间的对比。两者的公式分别是:
        • image_1eeb2vovr1is714451bp3g9q4or9.png-6.4kBimage_1eeb2vvpt1p3p15ai1l0n157l100dm.png-6.4kB
      • 很显然,通过上面两种情况得到的权重肯定不会完全相同。
      • 但在 image_1eeb32j9cpde1ft21g317021n7g13.png-4.2kB 的前提下,上面两个公式的数值就会差不多,且满足了 linear scaling rule。
        • 在满足上面这个条件时,不仅仅准确率啥的基本保持不变,训练时损失函数变化曲线也差不多。
      • 两种情况下不满足该条件:刚开始训练的时候,此时参数变化较大;minibatch size不能无限制增加,超过某个点后准确率会快速降低。
  • 为了解决上面 Linear Scaling Rule 中不满足条件的第一种情况,提出了Warmup策略。
    • 问题:刚开始训练时参数变化较大。
    • 解决:刚开始训练的时候减少学习率。
    • 具体实现:常量warmup,渐变warmup。
    • 终极目标:训练稳定。
  • BN相关的之后再说,会单独写笔记。
  • 对于分布式SGD的几个结论:
    • Scaling the cross-entropy loss is not equivalent to scaling the learning rate.
      • 根据weight decay的计算公式可以看出,weight decay相关的梯度值与batch size没关系,所以整体loss与lr也没有
    • Apply momentum correction after changing learning rate if using
    • Normalize the per-worker loss by total minibatch size kn, not per-worker size n.
    • Use a single random shuffling of the training data (per epoch) that is divided amongst all k workers.

3. 效果如何

  • 通过caffe2实现,使用256GPU以及8192的batch size在一小时内成功在ImageNet上训练了ResNet-50。

4. 还存在什么问题

  • 理论多的东西看不懂。看个新鲜。

  • 如果想了解更多,还要细看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值