您的位置 主页 > 科技数码 >

微软发布史上最大NLG模型:基于Transformer架构生成

  二、ZeRO & DeepSpeed:优化器+深度学习库助力大模型训练

  正如上所述,Turing-NLG是建立在ZeRO 优化器和DeepSpeed库基础上开发出来的。DeepSpeed作为微软最新发布的深度学习开源库,能够提高模型训练的速度、成本以及可用性。更为重要的是,最新发布的DeepSpeed解锁了其训练1000亿参数模型的能力,虽然不是超参数的数量,但是在大规模数据训练领域也算是首屈一指了。

  DeepSpeed与PyTorch兼容,里面内嵌ZeRO并行优化器,利用这个优化器,可以大大减少模型和数据并行性所需的资源,同时可以大幅度增加可训练的参数数量。具体而言,零冗余优化器(Zero Redundancy Optimizer,简称Zero)是一种面向大规模分布式深度学习的新型存储优化技术。其可以在当前一代GPU集群上训练1000亿个参数的深度学习模型,吞吐量大概是当前最棒系统的3到5倍。

  1、使用ZeRO克服数据并行性和模型并行性的局限性

  论文已发布,地址:https://arxiv.org/pdf/1910.02054.pdf

  毋庸置疑,大型的深度学习模型可以显著提高准确度,但是直接训练数带有十亿参数的模型,硬件往往受不了。为了解决这种硬件内存问题,通常的解决方案是兼顾计算资源、效率,但是往往却有以下两点限制:

  数据的并行性对节约设备的内存起不到什么作用:即使32G的GUP,在面对10亿个参数的模型也束手无策。

  由于细粒度并行计算和通信昂贵,模型并行不能有效地扩展到单个节点之外。

  但是,使用ZeRO可以克服数据并行性和模型并行性的局限。ZeRO通过跨数据并行进程划分模型状态(参数,梯度和优化器状态),在一定程度上能够消除数据并行进程之间的内存冗余。ZeRO还能够在模型训练期间动态规划通信,保证了分布式设备之间共享必要的状态,从而保持数据粒度的计算和通信量。换句话说ZeRO允许每个设备的内存使用量随数据并行性的程度而进行线性扩展,也即只要聚合的设备内存足够大,ZeRO支持的数据并行性可以“拿下”任意大小的模型。

  ZeRO主要有三个优化阶段,如下图所示分,这三个阶段别是:优化器状态、梯度和参数的划分。

  图注:与标准数据并行基准相比,ZeRO的三个阶段节省的内存和通信量。其中Ψ表示模型中参数的数量,K是优化器特定的常数项。

  更为具体的:优化器状态分区(Pos)阶段内存降低到了原来的1/4;增加梯度分区((Pos+g)阶段内存减少到原来的1/8,此外。通信量与数据并行度相同;添加参数分区阶段内存减少量与数据并行度Nd成线性关系。启用上述所有个阶段后,使用ZeRO就可以用1024个 NVIDIA 型号的GPU 上训练一个万亿参数模型。

  如果使用具16位精度的Adam来训练一个万亿参数级别的模型大概需要16TB的内存才能让优化器保持训练状态。16TB除以1024等于16GB,还好在GPU内存的合理范围。

  2、DeepSpeed:PyTorch兼容性和系统性能

  前面也提到,最先发布DeepSpeed能够与PyTorch兼容,并且引入的轻量级API 包含最新的训练技术,例如ZeRO,分布式训练,混合精度等等。在操作层面上,只需对PyTorch模型进行简单的几行代码更改,就可以利用DeepSpeed提高模型训练的速度和规模。

  左图:与Megatron-LM相比吞吐量的程度。右图:使用和不使用ZeRO时,对于单独使用数据并行性的可训练模型大小比较。

  如上图所示,DeepSpeed在规模、速度、成本、可用性这四个方面标新都非常出色。

  规模:当前最先进的大规模训练,例如OpenAI GPT-2,NVIDIA Megatron-LM和Google T5,其大小也就分别是15亿、83亿和110亿个参数。而有ZeRO加持的DeepSpeed能够运行1000亿个参数。

  速度:现有的吞吐量比当前最先进的技术都要高出5倍。例如为了能够在GPT系列有效训练模型,DeepSpeed将ZeRO功率(ZeRO-powered)数据并行与NVIDIA Megatron-LM模型并行相结合。另外,在具有低带宽互连的NVIDIA GPU群集上,对具有15亿参数的标准GPT-2模型,与单独使用Megatron-LM相比,吞吐量提高了3.75倍。这种速度的提高与DeepSpeed更高的内存效率以及使用较低程度的模型并行有关,当然较大的批处理量也在提高吞吐量的工作中做了贡献。

  成本:提高吞吐量的同时,对训练成本的节约也是非常大的。例如,要训练具有200亿个参数的模型,传统则比DeepSpeed需要的资源多3倍。

  可用性:只需更改几行代码就可在PyTorch模型中使用DeepSpeed和ZeRO。也就是说与当前的模型并行性库相比,DeepSpeed不需要重新设计代码或重构模型,即使对于参数多达60亿的模型,也可以方便地使用ZeRO提供支持的数据并行性。

  综上所述,ZeRO-OS与不同类型的模型并行性互补并兼容,对于不适合单个节点的大型模型,它能够显着提升性能,节省资源等等优点。

  三、Reddit 评价:褒贬不一

  正如文章开头所称,微软DeepSpeed中利用ZeRO-OS来训练一个170亿参数的Turing-NLG模型,训练结果表明其准确性和训练效率高于当前的最新方法。

  与单独使用NVIDIA Megatron-LM相比,ZeRO-OS能够大量节省内存,并使Turning-NLG模型的模型并行度降低到原来1/4,批处理量增大4倍,吞吐量增长3倍。

  至于这自带170亿参数的Turing-NLG模型,也在社交媒体上引起了不少讨论,Reddit的“r/MachineLearning”版面中,仅仅10个小时,相关话题热度已经达到了216,70多人发表了看法。

  讨论页面:https://www.reddit.com/r/MachineLearning/comments/f1tuv0/r_turingnlg_a_17billionparameter_language_model/

  跟帖最高的一条评论是这样说的:幸好是170亿个参数,而不是170亿个超参数。当前最智能的机器有着超过100万亿的参数(他这里说的是人类),并不否认效率也很重要,但是在资金充足的情况下,参数多一些并没有什么错呀。

  针对这条评论,也有人回应说,这种比较没有意义,想想神经元之间的质量差异,尤其是最新研究单表明,单个人类神经元也可以异或运算,这就相当于2层人工神经网络了。

  也有评论将讨论引入了复杂的生物学:人类神经元是其数千个突触的复杂网络。合理地说,突触与NN参数可比约为1:1,而神经元与NN神经元可比约为1:1,因为在NN中,需要一小束“神经元”才能达到复杂性。

  吃瓜群众质疑道:提起图灵,我就想起了“营销”,

  也有网友提到了碳排放:更多的参数意味着更多的碳消耗。那么,你对此模型有何看法?~~~

点 赞
(0)
0%
吐 槽
(0)
0%

上一篇:在线教育火到App宕机,但家长们也有苦恼和质疑

下一篇:平安好医生全年营收50.7亿元超预期

版权声明:

襄阳网-襄阳生活网-襄阳自媒体收录的所有新闻与图片资源均转载自其它媒体,其版权均归原作者及其网站所有,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果您对本站文章、图片资源的归属存有异议,请立即通知我们,情况属实,我们会第一时间予以删除。

相关文章

Copyright © 2012-2019 襄阳城市网 版权所有  京ICP备14025304号 京公网安备 11011202000387号