分享

40美元18分钟训练整个ImageNet!他们说,这个成绩人人可实现

 扫地僧一一 2018-08-11

腾讯前不久创造了机器学习训练新记录:在ImageNet上训练好AlexNet,只要4分钟

震惊声钦佩声一片。同时,也有更多人的目光,落在了这项研究背后的庞大计算力之上:

4分钟在ImageNet上把AlexNet训练到58.7%的准确率,用了1024块英伟达Tesla P40 GPU;6.6分钟把ResNet-50训练到准确率75.8%,用了2048块P40。

按5万元一块保守计算,这项研究仅GPU成本就超过了1亿元。就算不去考虑机房机箱CPU等等其他成本,也已经不是 贫民 普通实验室能玩得起的了。

偏有贫穷团队不信邪。

在线深度学习课程的创始人Jeremy Howard和自己的学生Andrew Shaw、以及国防创新部门DIU的Yaroslav Bulatov一起,用租来的亚马逊AWS的云计算资源,18分钟在ImageNet上将图像分类模型训练到了93%的准确率。

于是,Howard在官方博客上发布了一篇文章:现在,任何人都能18分钟训练完ImageNet啦!

他说,在人人能用的硬件(公共基础设施)上把ImageNet训练到这样的准确率,这个速度是个新记录,比Google用TPU Pod在斯坦福DAWNBench测试上达到的速度还要快40%。

这样的成绩需要用到多少计算资源呢?

答案是,他们用了16个AWS云实例,每个实例搭载8块英伟达V100 GPU。成本:40美元

他们训练的是一个标准ResNet-50,用SGD和momentum来优化。

而所用的方法,简单来说融合了这些技术:

逐步调整图像大小:提出了在分类任务里要渐进式地调整图像大小(progressive image resizing),先用小图片训练,然后逐渐增大。

在验证中使用长方形图像:以往,人们在图像识别中都需要把原图剪成固定尺寸的正方形,而他们这一次所用的库会自动将固定尺寸的模型转换成动态尺寸模型,绕开了这一步。

如下图所示,左上是原图,右上是使用的长方形图像,左下是标准方法裁剪的正方形,而右下是多次裁剪方法裁出的正方形。

Google Brain动态批次大小的一种变体:他们为中间的一些训练周期使用了更大的批次,这样能更好地利用GPU RAM,防止网络延迟。

腾讯4分钟训练ImageNet方法对权重衰减调整的处理方式:这种方法去掉了批次标准化(batchnorm)层里的权重衰减,能在固定的训练时间里多训练几个周期。

为了经济地在多台机器上运行多个实验,更方便地运用AWS比较便宜的“Spot实例”,他们构建的系统里用一个Python API来启动和配置新实例、运行实验、收集结果、查看进程,还开发了一个连接调度程序(nexus-scheduler)来帮助分布式实验更好地迭代。

 在连接调度程序里还能通过Tensorboard查看网络利用情况

基本的分布式计算是用英伟达的NCCL库结合PyTorch的all reduce分布式模块实现的。

就是这样一套方法,实现了前边所说的40美元、16个AWS实例、18分钟训练整个ImageNet的成绩。

接下来,他们还打算继续优化方法,进一步加快训练速度。另外,这个团队还计划8月25日正式发布nexus-scheduler,其中融合了工具的功能。

最后,附一道通往原文的传送门:

http://www./2018/08/10/fastai-diu-imagenet/

加入社群

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多