Facebook「1小时训练ImageNet」论文与MXNet团队发生争议,相关研究介绍

近日,Facebook 公布了一篇研究论文《Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour》,介绍了他们一项最新的研究成果——一种将批量大小提高的分布式同步 SGD 训练方法,希望能有助于解决越来越长的训练时间。但就文章的创新度、引用内容上,这篇论文的几位作者与曾致力于同一领域的 MXNet 的几位成员之间出现了争议,他们在贾扬清的一篇 Facebook 帖子下各抒己见,表达了各自的立场和看法。这一事件引起了业内人士不小的关注。

为了让读者更加了解这一事件的始末,机器之心将在这篇文章中将以尽可能中立的态度对 MXNet 之前做过的类似工作进行介绍——据称这也是所述 Facebook 论文的引用中忽视的研究。另外,本文还将引述一些双方争论的观点,以提供更加全面的视角。首先需要强调一下:目前争议双方已经在此事上达成了和解。

MXNet 的可扩展性

MXNet 是一个全功能,灵活可编程和高扩展性的深度学习框架,支持深度学习模型中的最先进技术,包括卷积神经网络(CNN)和长期短期记忆网络(LSTM)。MXNet 由学术界发起,包括数个顶尖大学的研究人员的贡献,这些机构包括华盛顿大学和卡内基梅隆大学。

深度学习框架在多核心处理器中的运行效率是其性能的重要指标。更高效的扩展(Scaling)可以让训练新模型的速度显著提高,或在相同的训练时间内大幅提高模型的复杂性。

去年 11 月 23 日,亚马逊宣布将 MXNet 作为其深度学习主要框架,此时的 MXNet 团队已经表示他们正在使用越来越多的 GPU 训练图像分析算法 Inception v3(在 MXNet 中实现并在 P2 实例上运行)。MXNet 团队当时表示,该框架不仅具有所有已知库中最快的吞吐量(每秒训练的图像数量),而且吞吐量提高几乎与用于训练的 GPU 数量成正比(比例为 85 %)。

2016 年 12 月 19 日,MXNet 在 Github 上公开了 ResNet 分布式训练的收敛结果,其主要思想是在增加 batch size 同时增大 learning rate。


相关 GithHub 页面链接:https://github.com/dmlc/mxnet/commit/e62fbe1bd0bc0564ce1b97a33a9032c8dbd749ec

知情人士指出,亚马逊曾在去年 12 月底的 AWS Reinvent 上展示过这一成果,而 MXNet 的可扩展性能力则更是早已在相关博客上展示。

在 MXNet 的主要开发者李沐 2017 年 2 月正式发表的论文《Scaling Distributed Machine Learning with System and Algorithm Co-design》中,也有一段有关 MXNet 可扩展性的介绍:

在实验中,我们使用 ImageNet 训练了 ResNet-152。作为基准,我们使用了一台 8 块 GPU 的机器,每块 GPU 处理 32 批尺寸,合计共 256。


一次 SGD 迭代的通信成本和总成本。实验在多台机器上执行,但这些机器的 GPU 总数量均为 8 块。

我们调整了学习速度:我们以学习速度 0.1 开始训练过程;随后分别在时间点 30、60 和 90 上将速度除以 10;我们进一步在时间点 100 时停止了数据扩张。如下图所示,与基线相比,我们在时间点 110 处得到了 77.8% 的最高准确率,与此前 77% 的准确率结果相匹配。在把 GPU 数量从 8 个增加到 80 个之后,批尺寸也从 256 增加到了 2560。我们改变了原始学习速度(从 0.1 改为 0.5)。在 160 个 GPU 上,我们将批尺寸增加到了 5120,而学习速度也进一步增加到了 1,学习速度减少的时间点也从 30 推后到了 50。这些探索让训练过程有了更多延展性。

在下图中,我们画出了准确率随着 SGD 时间点的变化曲线。在仔细调整学习速度的情况下,批尺寸没有显著影响算法的收敛。在 2560 批尺寸时,曲线与基线的收敛程度非常接近;而在 5120 个批尺寸时,尽管在一开始曲线不甚稳定,但在随后的训练过程中它逐渐与基线趋近。


在 ImageNet 数据集上 ResNet 的精度与时间节点的对比图。其中每个 GPU 使用的批尺寸为 32,使用了同步 SGD。

可扩展性一直是各家深度学习框架力图优化的方向。在今年 4 月 18 日,Facebook 推出 Caffe2 时,TechCrunch 曾采访了 Facebook AI 平台首席工程师贾扬清(他也是 Caffe 系列的主要开发者),在被问及对于 MXNet 可扩展性的看法时,贾扬清表达了对于基准测试数据的谨慎态度。基准测试得出的数据可以有意义,但也相当程度受到机器模型实现方式的影响。

「所有框架目前都有或多或少类似的可扩展能力,」贾扬清表示。「而我们确信 Caffe2 要比其他框架稍微领先一些。」

与 Facebook 论文间的争论


Facebook 的论文引起的最大争议之处在于忽视了上述 MXNet 的相关研究成果。在贾扬清 Facebook 时间线的留言中,《Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour》论文的第二作者 Ross Girshick 表示,「我们并不知道你的论文,我们将会在我们论文的更新版本中加入引用。非常抱歉这个遗漏。但这里要指出(我们的研究)存在两个重要的不同之处:1. 我们展示的是一种基本规则,它的目的是避免对每一个 minibatch size 进行超参调节。上方的曲线图是学习速率分别为 0.1,0.5 和 1(对应的 minibatch size 为 256,2560 和 5120)时的结果,同时在 minibatch 为 5k 的情况下改变了相应的衰减设定(decay schedule)。这看上去像是对每一个 minibatch size 进行超参搜索的结果,但是至少我没有发现 4.5.3 那样的一般方法。可能我漏掉了它?2. 8192 大于 5120,打破已有的限制一直很重要。」

最后,论文的另一作者何凯明也发表了自己的一些看法。

「我们曾经产生过一个内部的争论,是关于是否应该发表一篇论文来描述我们如何实现这些结果的。我承认这篇论文没有太多的新内容,因为这是我和我的同事在多年以前就完成的,包括我们怎样改进 ResNets 和 Faster R-CNN。在和很多人讨论后,这些人包括现在的和以前的一些来自微软、Facebook、谷歌、百度和一些高校的科学家和工程人员,我们意识到并不是所有的细节都被从业者、工程师或科研人员所熟知。因此最终我确信我们应该撰写这篇论文:我们希望它可以成为一个有用的手册,特别是对那些可能在他们的系统里遗漏掉一些东西的人。」

「从我的经验而言,『linear scaling lr』之所以出奇的有效是因为在过去几年中,它大大地帮助了我们去建立和改进计算机视觉算法,包括 ResNets, Faster R-CNN 和 Mask R-CNN,要知道过去当我们要调整基准的时候,当时并没有足够的 8-GPU 甚或是 4-GPU 机器供我们使用。由于它的『奇效』,我们并不需要重新选择任何超参数——hyper-parameters(和通常那样选择特定的学习速率和相关设定形成对比)。这个线性比例学习速率(linear scaling lr)不是一个新内容:在我们的论文里(Sec. 2.1『Discussion』, p3)我们引用了 Leon Bottou et al. 的综述论文【4】,它给出了线性比例学习速率(linear scaling lr)的理论内容(还有一些介绍)。通过和 Leon 本人的私下沟通我们发现这个理论太古老也太普通了,以至于我们无法追溯到它的创始人。我真的希望推广这个线性比例学习速率 linear scaling lr 的『法则』(也可以叫做理论),因为我过去几年从中获益良多。」

「另一方面,我早就有了一些使用『开方』(『sqrt』)法则的成功经验:实验性的结果可以在我们的论文里的表格 2(a) 找到。也有一些关于『线性比例』(「linear scaling」)法则和『开方』(『sqrt』)法则的理论正确性的讨论;但是我们在这篇论文里分享的是我们丰富的实验性结果(包括 ImageNet/COCO, 预训练 pre-training/精调 fine-tuning, 分类 classification/探测 detection/分割 segmentation),并且强力地支持了线性法则,因为我在过去几年就已经有了相关经验。」

「你提到了使用『linear scaling lr』法则的『不稳定』结果。这和我们提出 warmup 方法的动机是一致的,可以从【4】中找到相关的理论支持。在过去一年的研究中,我也从 warmup 策略中受益良多,它可以帮助我很简单地进行扩展(scale out)并且让我的生活更加轻松起来。我们希望这可以帮助到一些(可能不是所有)研究人员和工程人员。」

据悉,在论文引用争议出现之后,各方经过充分交流已互相理解。

入门MXNetFacebook亚马逊理论随机梯度下降ImageNet
暂无评论
暂无评论~