专栏首页量子位为了不让GPU等CPU,谷歌提出“数据回波”榨干GPU空闲时间,训练速度提升3倍多

为了不让GPU等CPU,谷歌提出“数据回波”榨干GPU空闲时间,训练速度提升3倍多

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI

因为通用计算芯片不能满足神经网络运算需求,越来越多的人转而使用GPU和TPU这类专用硬件加速器,加快神经网络训练的速度。

但是,用了更快的GPU和TPU就一定能加速训练吗?

训练流水线的所有操作并不都是在加速器上运行。上游数据处理(如磁盘I/O和数据预处理)就不能在加速器上运行。

随着GPU等加速器越来越快,超过了CPU、磁盘处理数据的速度,上游就逐渐成了训练瓶颈。

在某些情况下,GPU上游的代码花费的时间甚至是GPU本身运行时间的几倍。上游没做完,下游只能空等,浪费了大量时间。

为此,Google AI团队,提出一种简单的数据回波(Data Echoing)方法,可以解决这个问题。该方法最多能将训练速度加速3倍以上,且对模型的精度没有明显影响。

Jeff Dean也在Twitter上转发点赞。

重复数据让GPU不空等

很多情况下,上游花费的时间比加速器更长,使用更快的GPU或TPU根本不会提高训练速度。如果投入大量的工程工作以及额外的计算资源,确实可以加快流水线的速度。

对于非常小的数据集,可以离线预先计算扩增的数据集,并将整个预处理的数据集加载到内存中。

但这种方法不适用于大多数机器学习训练场景,既耗时又分散了改善推理性能的主要目标。

与其等待更多的数据,不如利用已有的数据来使加速器保持忙碌状态。

在加速器空置50%情况下,预处理batch的第一个优化步骤之后,我们可以重复利用该batch再进行一次训练。

如果重复数据与新数据一样有用,训练效率会提高一倍。

实际上,由于重复数据不如新数据有用,因此数据回波提供的加速要小一些,但和加速器处于空闲状态相比,仍然可以提供明显的加速。

通常有几种方法可以在给定的神经网络训练管道中实现数据回波。

Google提出的技术,是将数据复制到训练管道中某个位置的随机缓冲区中,无论在哪个阶段产生瓶颈之后,都可以将缓存数据插入任意位置。

数据回波在样本级别对数据进行混洗,而batch回波则对重复批次的序列进行混洗。另外还可以在数据扩充之前插入缓冲区,以使重复数据的每个副本略有不同,因此不是简单机械重复,而是更接近一个新样本。

加速3倍多,精度无损失

那么数据回波到底多有用呢?

Google在五个神经网络训练管道上尝试了数据回波,涵盖了图像分类、语言建模和目标检测3个不同的任务,并测量了达到特定性能目标所需的新样本数量。

Google发现,数据回波可以用更少的新样本来达到目标性能,这表明重复使用数据对于降低磁盘I/O很有用。在某些情况下,重复数据几乎与新数据一样有用。

在ImageNet的ResNet-50训练任务中,数据回波可以显著提高训练速度,加速了3倍以上。

从云存储中读取一批训练数据所花的时间是使用每一批数据执行训练步骤的6倍。因此数据最多可以重复5次。

我们将回波因子定义为重复每个数据项的次数,对于以上任务,回波因子最大是5。如果重复样本与新样本一样有用,则应该带来6倍加速,而实际上只加速了3.25倍,但也相当可观。

可能有人会担心重复使用数据会损害模型的最终性能,但实验发现,测试的任何工作负载,数据回波都不会降低最终模型的质量。

随着GPU和TPU性能的继续提升,和通用处理器的差距会越来越大,Google期望数据回波和类似策略将成为神经网络培训工具包中越来越重要的一部分。

怎么样,谷歌AI的这项最新研究,是不是也给你训练神经网络带来一些新启发?

论文地址: https://arxiv.org/abs/1907.05550

博客地址: https://ai.googleblog.com/2020/05/speeding-up-neural-network-training.html

作者系网易新闻·网易号“各有态度”签约作者

本文分享自微信公众号 - 量子位(QbitAI),作者:关注前沿科技

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 吴恩达团队新研究!用MRNet进行膝关节磁共振影像诊断 已媲美医生 | 论文

    这个算法主要用于膝关节磁共振影像影像检查中的一般异常检测与特殊诊断,特殊诊断分别是前十字韧带撕裂和半月板撕裂。

    量子位
  • 搞AI的产品经理该怎么写PRD?谷歌的导师教你

    最近,谷歌机器学习X 和TensorFlow X团队的产品领导者Clemens Mewald在Medium上发表了一篇文章,详细介绍在开发涉及到机器学习的产品时...

    量子位
  • 数据不够,Waymo用GAN来凑:生成逼真相机图像,在仿真环境中训练无人车模型

    疫情当下,Waymo等自动驾驶厂商暂时不能在现实世界的公共道路上进行训练、测试了。

    量子位
  • 百万大奖,聚焦工业、医疗、泛娱乐,大数据应用创业赛邀你来战!

    2017中国大数据应用创新创业国际大赛(苏州)火热招募中!大赛由苏州市人民政府指导,苏州市发改委、苏州相城区人民政府主办,聚焦医疗、工业、泛娱乐三大最热领域,首...

    数据猿
  • 教育行业需要了解的大数据,武汉Hadoop大数据平台如何搭建?数道云科技

    从教育行业的需求出发,去分析互联网时代教育行业需要了解的大数据,以及大数据平台的搭建应该注意什么?

    数道云大数据
  • 颜值女数据科学家妙解年薪10w刀北美热门职业

    用户1682855
  • 技术丨从Hadoop到Spark,看大数据框架发展之路

    谈到大数据框架,不得不提Hadoop和 Spark,今天我们进行历史溯源,帮助大家了解Hadoop和Spark的过去,感应未来。 在Hadoop出现前人们采用什...

    小莹莹
  • 面试Threadlocal源码解析

    今天我们讲一下高频面试题,Threadlocal,他是JDK1.2就已经有了,他是为每一个使用该变量的线程提供独立的副本,可以做到线程间的数据隔离,每一个线程都...

    小土豆Yuki
  • css 对元素在文档中的排列的影响

        2)、position 的属性值为: absolute | relative,且 z-index 值不为 auto ;

    前端老鸟
  • Python+sklearn使用朴素贝叶斯算法识别中文垃圾邮件

    2、读取全部训练集,删除其中的干扰字符,例如【】*。、,等等,然后分词,删除长度为1的单个字。

    Python小屋屋主

扫码关注云+社区

领取腾讯云代金券