Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Yanping Huang作者

你也可以训练超大神经网络!谷歌开源GPipe库

选自Google AI Blog

作者:Yanping Huang

机器之心编译

机器之心编辑部

BigGan、Bert、GPT 2.0 等模型的出现似乎表明,DNN 模型越大,其准确率越高。但芯片内存的增长速度似乎无法满足这种“暴力美学”的需要。为此,谷歌提出并开源了一种新的方法——GPipe,利用管道并行化扩展 DNN 训练以克服这种局限。它可以让研究者轻松部署更多的加速器,以训练更大的模型,并在不调整参数的前提下实现性能扩展。

深度神经网络(DNN)推动了许多机器学习任务的发展,包括语音识别、视觉识别、语言处理。BigGan、BertGPT 2.0取得的近期进展表明,DNN模型越大,其在任务中的表现越好。视觉识别领域过去取得的进展也表明,模型大小和分类准确率之间存在很强的关联。例如,2014年ImageNet视觉识别挑战赛的冠军GoogleNet以400万的参数取得了74.8%的top-1准确率,但仅仅过了三年,冠军的宝座就被Squeeze-and-ExcitationNetworks抢去,后者以1.458亿(前者的36倍还多)的参数量取得了82.7%的top-1准确率。然而,在这段时间里,GPU的内存只提高了3倍左右,当前最优的图像模型却已经达到了谷歌云 TPUv2的可用内存。因此,我们急需一个能够实现大规模深度学习并克服当前加速器内存局限的可扩展高效架构。 

近期有代表性的图像分类模型的ImageNet准确率和模型大小之间的强关联。

谷歌在论文《GPipe: Efficient Training of GiantNeural Networks using Pipeline Parallelism》中,展示了利用管道并行化(pipeline parallelism)扩展DNN训练以克服这种局限。GPipe是一个分布式机器学习库,它使用同步随机梯度下降和管道并行化进行训练,可以应用到包含多个序列层的任意DNN中。重要的是,GPipe可以让研究者轻松部署更多的加速器,以训练更大的模型,并在不调整参数的前提下实现性能扩展。为了展示GPipe的有效性,谷歌在谷歌云TPUv2上训练了AmoebaNet-B模型,该模型具备5.57亿个参数,输入图像大小为480 x 480。这一模型在多个流行的数据集上表现良好,比如将ImageNet上的single-crop准确率提高到84.3%,将CIFAR-10上的准确率提高到99%,CIFAR-100准确率提高到91.3%。该核心GPipe库已经在Lingvo框架下开源。

开源地址:https://github.com/tensorflow/lingvo/blob/master/lingvo/core/gpipe.py

从小批量到微小批量

加速中型DNN模型有两种标准方法。第一种是数据并行化方法,它利用更多机器将输入数据分散到这些机器上。另一种方法是将模型移到加速器上,如GPU 或 TPU,这些加速器具备特殊的硬件可以加速模型训练。但是,加速器内存有限、通信带宽也有限。因此,要在加速器上训练大型DNN模型需要模型并行化,将模型分割成多个部分,然后将不同的部分分配到不同的加速器。但是由于DNN的序列本质,这一策略可能导致计算期间只有一个加速器处于活跃状态,而这会导致无法充分利用加速器的计算能力。另外,标准数据并行化方法允许同一个模型在多个加速器上对不同的输入数据执行并行训练,但是这无法增加每个加速器可以支持的最大模型大小。

为了在多个加速器上也能进行高效的模型训练,GPipe将模型分割并分配给不同的加速器,将小批量训练样本自动分割成更小的批量(微小批量)。通过在微小批量样本上管道化整个执行过程,加速器可以实现并行运行。此外,各微小批量上的梯度可以一直累加,这样分区数量就不会影响到模型质量。

上:由于DNN网络的序列本质,初始的模型并行化策略导致计算能力无法充分利用,每次只有一个加速器处于活跃状态。下:GPipe 将输入小批量分割成更小的批量,使得不同的加速器可以同时处理各自分配到的微小批量样本。

最大化内存和效率

GPipe 最大化了模型参数的内存分配。谷歌在云 TPUv2上进行试验,每个芯片上有8个加速器内核和64GB的内存(每个加速器8GB内存)。没有TPUv2的情况下,由于内存限制,单个加速器最多训练8200万模型参数。由于反向传播和批量分割中的重复计算,GPipe 将中间激活内存从6.26GB降至3.46GB,使得单个加速器上可以训练3.18亿个参数。谷歌还发现,如预期所料,在管道并行化的情况下,最大模型大小与分区数量成正比。有了GPipe,AmoebaNet 能够在云TPUv2的8个加速器上加入18亿参数,是没有GPipe时的25倍。

为了测试效率,谷歌衡量了GPipe对AmoebaNet-D模型吞吐量的影响。因为训练至少需要两个加速器来适应模型大小,谷歌衡量了在两个分区但没有管道并行化的naive情况下的加速,发现训练过程中几乎是线性加速。与具有两个分区的naive方法相比,将模型分布在四倍的加速器上实现了3.5倍的加速。虽然本文所有的实验都使用了云TPUv2,但谷歌发现当前可用的云TPUv3会有更好的性能,每个芯片有16个加速器内核和256GB内存(每个加速器16GB)。当在所有16个加速器上分布模型时,GPipe使得具有80亿参数的Transformer 语言模型在1024-token语句上的加速达到11倍。 

使用GPipe加速AmoebaNet-D。该模型不适合加速器。基线naive-2是模型被分割成两个分区时native分区方法的性能。Pipeline-k是使用K个加速器将模型分割成K个分区时GPipe的性能。

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

测试准确率

谷歌使用GPipe 来验证一个假设,即扩大现有神经网络能够提高模型质量。谷歌在 ImageNet ILSVRC-2012 数据集上训练了一个AmoebaNet-B模型,其模型参数为5.57亿,输入图像大小为480 x 480。该网络被分为四个分区,且在模型和数据上应用了并行训练过程。这个巨大的模型在没有任何外部数据的情况下达到了当前最先进的84.3% top-1 / 97% top-5 single-crop验证准确率。大型神经网络不仅适用于如ImageNet这样的数据集,并且通过迁移学习还可适用于其他数据集。已有研究证明,更好的ImageNet模型迁移效果更好。谷歌在CIFAR10 和CIFAR100数据集上进行迁移学习实验。其巨大的模型将 CIFAR-10的准确率提高到99%,将CIFAR-100的准确率提高到91.3%。

表2:单个AmoebaNet-B(6, 512) 模型在ImageNet ILSVRC 2012验证数据集上的single-crop分类准确率与其他已发布最优模型的对比结果。

表3:AmoebaNet-B (6,512) 的迁移学习结果,输入图像大小为480×480,测试时使用的是single crop。这些结果均为5次精调运行后的平均值。 

总结

很多机器学习实际应用的持续发展和成功依赖于尽可能高的准确率,如自动驾驶和医疗成像。而这通常需要构建更大型、更复杂的模型,谷歌很高兴将GPipe带给更广大的社区,并希望它能够有效训练大型深度神经网络

论文:GPipe: Efficient Training of GiantNeural Networks using Pipeline Parallelism

论文链接:https://arxiv.org/pdf/1811.06965.pdf

摘要:GPipe是一个可扩展管道并行化库,可以训练超大型的深度神经网络。它将网络的层分割成多个部分并分配给不同的加速器,将执行过程管道化以达到最高的硬件利用率。例如,在8个加速器上应用分割技术,则GPipe支持25倍大小的神经网络的训练,这充分展示了其可扩展性。它还保证了无论分区数量多少,梯度仍是一致的。在对模型参数几乎不做更改的情况下,它获得了几乎是线性的加速:加速器数量是原来的4倍时,同一模型的训练速度是原来的3.5倍。我们训练了一个具备5.57亿参数的AmoebaNet模型,在 ImageNet 2012 数据集上达到了新的SOTA结果:84.3%的 top-1 准确率和97.0% 的 top-5 准确率。最后,我们将这个学到的模型应用到多个流行图像分类数据集上,同样获得了有竞争力的结果,比如在CIFAR-10数据集上达到了99%的准确率,在CIFAR-100数据集上达到了91.3%的准确率

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

理论深度神经网络谷歌AI
4
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

自动驾驶技术技术

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~