百科问答小站 logo
百科问答小站 font logo



机器之心提问:如何评价Facebook Training ImageNet in 1 Hour这篇论文? 第1页

  

user avatar   lian-xiang-ru-75 网友的相关建议: 
      

首先, Facebook 这篇文章不错. 因为它简单易懂直截了当地告诉了大家在 neural network 优化中的一些技巧, 而且也大规模地实验出来给大家信心. (补充。。这篇 paper 有争议原因是因为 paper 里的技巧都是之前已知的。能做到这个 scale 告诉大家最大 batch size 能到多少以及把结论总结出来是不错,实验做的也很专业,然而之前工作得 cite。。话说 google 起标题都起到 one model to learn them all 了。。


然后是私货时间 :) 看了这篇 paper 我觉得我有一种不能再继续小号潜水的使命感 XD 一些读者可能会觉得有些惊讶, 这些 trick 实际上在之前的理论已经给出, 而且有很好的解释 (所以说不仅要看这些好的实验 paper, 关注理论发展也是有用的, 而且会提供 insight XD)

下面开始 not only tell you how but also tell you why (笑)

先说步长. 在我们的[1506.08272] Asynchronous Parallel Stochastic Gradient for Nonconvex Optimization, In NIPS 2015. 一文中, 指出 SGD 的步长 (learning rate) 选择应该为 量级才能保证 量级的收敛速度 (也就是有并行加速), 其中 M 为 batch size, K 为 iteration 数, 为 stochastic gradient 的方差上界. 因为 MK 就是一共使用的 sample 个数, 故在 training 同样多 epoch 的情况下, MK 为定值, 所以步长应该不变. (咦不是说线性增长么? 马上解释!)

之所以不变, 是因为在我们 paper 里使用的 update rule 是

而 Facebook paper 中是

也就是他们的 stochastic gradient 是被 average 过得, 如果要保证新的步长跟原来等价 就要 所以 就要随 batch size M 线性增长了. 实际上这种步长取法早在我们 paper 之前就已经知道了 (在同步更新 SGD 里, 比如 Efficient mini-batch training for stochastic optimization, In Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 661-670). ACM.), 我们这篇 paper 是证明了即使 stochastic gradient 异步更新, 在 nonconvex objective (比如神经网络) 上也可以有线性加速.



下面要讲 facebook 这篇文章没有的 insight. 从

的步长线性增长我们实际上可以看出这种做法是让每个 stochastic gradient 系数不变, 也就是跟 batch size 小的时候发挥一样大小的作用, 那为什么 batch size 加太大会失败呢. 因为把这些 stochastic gradient 的平均当成一个 gradient, 那对于这个平均过后的 gradient 的步长为 . 在 batch size 很大时候, 这个平均是相当接近 true gradient 的, 总所周知如果用 gradient descent, 步长应该为 其中 L 为 objective 的 gradient Lipshitz constant, 也就是 gradient descent 步长是常数, 既然 batch size 很大的时候 stochastic gradient descent 趋近于 gradient descent, 那么步长怎么能任意线性增大呢? 答案是当然不能. 之前我们说的 实际上是在 K 远大于 M 时候的结论. 在一般情况下步长应该取为 在 M 很大时这个步长变成 , 退化为 gradient descent 步长. 所以说步长随 batch size 线性增长也是不准确的, 确切地说是逐渐增长到定值 (继续私货, 这个在我们的 [1606.00498] A Comprehensive Linear Speedup Analysis for Asynchronous Stochastic Parallel Optimization from Zeroth-Order to First-Order, In NIPS 2016. 有, 当然我们这个还是在搞 Async 算法, sync 的只是 async 的一种特殊情况).


然后是 warmup, 这个其实 dependent on dataset. 前面我们都是把 stochastic gradient 的 variance 当作常数, 但是实际中一开始离解的距离比较远的时候, stochastic gradient 的大小和方差可能很大 (取决于 model 和 dataset), 而逐渐接近解的时候 方差逐渐减小 (again, 取决于 model 和 dataset). 于是就会出现一开始取小一些步长的做法.


有人看的话我再慢慢填坑.. 其实这里面还有很多东西可以讨论 包括如何解决 bandwidth 和 latency 问题

吐槽 GPU 多的, 以及说什么几千 GPU 就更快啥的, 我想说这个事情不是那么简单有 10 倍 GPU 速度就能快 10 倍的..

最后的最后, 知乎编辑器能不能测试好了再上线

================================================================

继续填坑. 之前 @张昊 说了 bandwidth 和 latency 的问题. 首先我们来看这些问题怎么来的. 在用 parameter server 并行的时候, 系统的 topology 如图

每个 iteration 所有黑色节点从 parameter server 拿到模型 weights, 然后计算 gradient, 再把 gradient push 回 parameter server. parameter server 将 这些 gradient 加起来 update 到 parameter server 保存的 weights 上去. 这样就完成了一个 iteration. 这样相当于把一个大 batch 分成很多份让很多黑色节点一起算. 但是问题是如果有很多节点的时候, 每个节点都要和 parameter server 通讯, 对 parameter server 带宽压力很大.

异步并行的 SGD 缓解了这个问题 (比如我之前说的两个 paper), 因为异步 SGD 每个节点可以无脑从 parameter server 取 weights 以及 无脑 push gradient, 不需要同步, 这样各个节点跟 parameter server 的通讯可以错开. 在异步的情况下, 可以证明在 节点数 bound 住的情况下, 可以有跟同步 SGD 一样的收敛速度. (还是见我前面说的俩 paper).

但如果节点数继续增多, parameter server 还是会有很大压力. 这时候我们可以用 AllReduce 方法去掉中心的 parameter server 做同步并行 SGD. AllReduce 具体过程描述起来比较麻烦, 但大体意思是每个节点只跟它相邻的节点通讯 (比如把所有节点连成一个环). 这样通讯就不再集中于某个 parameter server, 而是被所有节点分担了. 但 AllReduce 有一个问题, 如果网络有 n 个节点, 则 AllReduce 要将每份 gradient 切成 n 份再一份一份传, 这样会导致网络 latency 比较大的时候, 延迟对整体收敛速度的影响会非常大.

下面来谈怎么解决

我们最新的 paper: [1705.09056] Can Decentralized Algorithms Outperform Centralized Algorithms? A Case Study for Decentralized Parallel Stochastic Gradient Descent 讲了在分布式 SGD 中, 比如 topology 可以是

没有中心的 parameter server. 每个节点 local keep 一份 weights 的复制. 每个节点只需要从它的相邻节点把他们 local 的 weights 拿来, 跟自己的 average, 然后将自己local 算出的gradient update 到average 过的新 weights 上. 这篇文章证明了在这种情况下整个网络的 local weights 的平均依然收敛, 而且收敛速度与同步并行 SGD 一样. 也就是说有加速. 而且在这种情况下, 每个 iteration 每个节点只需要跟近邻通讯一次, 而不是 AllReduce 中的 n 次. 这样大幅减少了 communication 上的问题, 可以最大幅度地 scale.

目前实验做到了 112 GPU, 接下来准备做更大的并进一步改进算法. 我个人认为这个工作是我至今最好的一个, 因为它提供了很有可能大幅增加 scale 的方式, 而且很经济, 而且有很好的理论保证 wwww 欢迎交流 (感觉回答越跑越远了


user avatar   jiayangqing 网友的相关建议: 
      

之前回答过相关问题(如何评价摩拜单车获得超六亿美元的e轮融资,共享单车未来在谁手中,是否胜负已定? - 知乎),针对摩拜完成E轮融资做了如下猜测,其中OFO马上完成新一轮以及国际化等地域拓展的部分,和OFO今天放出的信息基本一致。不过,竞争还很残酷,发言中提到的盈利部分可信度堪忧。这个阶段,那么多投资人完成了各类共享单车的投资项目,不要考虑盈利,还会先考虑如何整合上规模吧。


…更多文章请到数据冰山 - 知乎专栏

…更多回答请看何明科


user avatar   zhisbug 网友的相关建议: 
      

之前回答过相关问题(如何评价摩拜单车获得超六亿美元的e轮融资,共享单车未来在谁手中,是否胜负已定? - 知乎),针对摩拜完成E轮融资做了如下猜测,其中OFO马上完成新一轮以及国际化等地域拓展的部分,和OFO今天放出的信息基本一致。不过,竞争还很残酷,发言中提到的盈利部分可信度堪忧。这个阶段,那么多投资人完成了各类共享单车的投资项目,不要考虑盈利,还会先考虑如何整合上规模吧。


…更多文章请到数据冰山 - 知乎专栏

…更多回答请看何明科




  

相关话题

  为什么强大的 MXNet 一直火不起来? 
  一个完整的Pytorch深度学习项目代码,项目结构是怎样的? 
  阿里的TDM树深度模型为什么很少有人用,是有哪些问题吗? 
  如何评价何恺明等 arxiv 新作 Rethinking ImageNet Pre-training? 
  如何评价何恺明等 arxiv 新作 Rethinking ImageNet Pre-training? 
  搞机器学习的生环化材是天坑吗? 
  对神经网络某一层做了小改进,效果却提升显著,可以发论文吗? 
  为什么 larger batch size 对对比学习的影响比对监督学习的影响要大? 
  如何看待周志华等人的新书《机器学习理论导引》? 
  为什么说大模型训练很难? 

前一个讨论
用颜料涂鸦衣服,为什么一洗全掉了?
下一个讨论
螃蟹出生后,为啥不离开母体?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利