谷歌开源效率怪兽GPipe,速度提升25倍,CIFAR-10精度达到99%

更新日期:2019-03-13
新智元

同时它也要保证计算的梯度和分区的数量保持一致,从而在不对模型的参数做任何改动的前提下,都能保持线性加速。

目前,核心GPipe库已在Lingvo框架下开源。

为什么要对跨加速器的模型进行分区?

有两种标准方法可以加速DNN模型:

  • 数据并行方法,使用更多的机器并将输入数据分开

  • 模型并行性。将模型移动到如GPU或TPU等具有加速模型训练的特殊硬件

  • 然而加速器的内存、与主机的通信带宽均有限。因此模型并行性就需要将模型进行分割,将不同的分区分配给不通过的加速器。

    可是由于由于DNN的顺序性,这种朴素的策略可能导致在计算期间,只有一个加速器处于激活状态,导致大量算力的浪费。

    而标准数据并行方法是允许在多个加速器上,同时训练不同输入数据的相同模型,但每个加速器可支持模型大小又有限制。

    GPipe的做法是将模型分割,并划分给不同的加速器,自动将小Batch拆分为更小的微Batch,这样就实现了跨多个加速器的高效训练。

    此外,因为梯度一直在微批次中累积,所以分区数量不会影响模型质量。

    Time部分:由于网络的连续性,幼稚模型并行策略导致严重的未充分利用。 一次只有一个加速器处于活动状态

    Bubble部分:GPipe将输入小批量分成较小的微批次,使不同的加速器可以同时在单独的微批次上工作

    使用GPipe和不使用,之间的差异有多大?

    一个TPUv2有8个加速器核心和64GB内存(每个加速器8GB),由于内存限制,单个加速器可以训练的参数量上限是8200万。

    借助反向传播和批量分割中的重新计算,GPipe将中间激活内存从6.26GB减少到3.46GB,将单个加速器参数处理上限提升至3.18亿个。

    我们还看到,通过管道并行性,最大模型大小与分区数成正比,如预期的那样。

    通过GPipe,AmoebaNet能够在云TPUv2的8个加速器上加入18亿个参数,比没有GPipe的情况下多25倍。

    Google测量了GPipe对AmoebaNet-D模型吞吐量的影响。效率和加速器的数量几乎是呈线性加速,8个加速器+8个分区,比2个加速器+2个分区快2.5倍。

    TPUv3效果更好。在1024个令牌句子上启用了80亿个参数Transformer语言模型,16个加速器将速度提升了11倍

    使用GPipe加速AmoebaNet-D,这种模型不适合一个加速器

    基线naive-2是将模型拆分为两个分区时本机分区方法的性能

    Pipeline-k指的是GPipe的性能,它将模型分成带有k个加速器的k个分区

    GPipe还可以通过使用更多加速器来扩展训练,而无需更改超参数。因此,它可以与数据并行性相结合,以互补的方式使用更多的加速器来扩展神经网络训练。

    GPipe度能达到多少?

    前面我们提到,处理的数据量越大,获得的精度就越高。


    Google在ImageNet ILSVRC-2012数据集上,使用Cloud TPUv2训练了一个有5.57亿参数、480 x 480输入图像尺寸的AmoebaNet-B模型。

    该网络被分成4个分区,这个巨型模型在多个流行数据集上表现良好,在没有任何外部数据的情况下,精度达到了最先进的84.3% top-1,以及97% top-5的single-crop验证准确度。

    大型神经网络不仅适用于ImageNet等数据集,还通过迁移学习,与其他数据集息息相关。

    目前我们已知ImageNet模型越好,迁移就越好。Google在CIFAR10和CIFAR100数据集上进行了迁移学习实验,将最佳公布的CIFAR-10精度提高到99%,将CIFAR-100精度提高到91.3%。

    哪里能获取到GPipe?

    Github:

    https://github.com/tensorflow/lingvo/blob/master/lingvo/core/gpipe.py

    参考链接:

    https://ai.googleblog.com/2019/03/introducing-gpipe-open-source-library.html


    更多阅读

  • 世界四足后空翻,MIT机器猎豹绝杀波士顿动力!(视频)
  • 30亿美金!地平线成全球估值最高AI芯片独角兽
  • 1万7!华为震撼发布全球最快5G折叠屏手机,余承东炫业界最大创新
  • 【加入社群】

    新智元AI技术+产业社群招募中,欢迎对AI技术+产业落地感兴趣的同学,加小助手微信号:aiera2015_2   入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名 - 公司 - 职位;专业群审核较严,敬请谅解)