河洛网首页 新闻 关注 房产 汽车 教育 健康 婚庆 家居 旅游

| 人工智能

娱乐 体育 财经 科技 人工智能

训练130亿参数的模型需要使用多少GPU? 微软:一个就够了

来源:河洛网    发布时间:2021-02-01     发布人:洛阳新闻网

现在的模型容易变成几百、几千亿的参数,普通人无法训练怎么办?

训练130亿参数的模型需要使用多少GPU? 微软:一个就够了

前几天,谷歌发布了参数量为1.6万亿的语言模型Swith Transformer,将GPT-3创造的参数量记录( 1750亿)推向了新高。 这些大模型的出现让普通研究者越来越绝望:没有“纸币能力”,没有很多GPU,就不能进行AI研究吗?

在这样的背景下,一些研究者开始思考如何使这些大模型的训练更加接地。 也就是说,如何用更少的牌训练更大的模型?

为了解决这个问题,微软、加州大学默塞德分校的研究人员提出了被称为“ZeRO-Offload”的异构深度学习训练技术,用一个GPU训练了具有130亿参数的深度学习模式,普通研究人员也着手训练大模型, 与普通框架(如Pytorch )相比,ZeRO-Offload将可培训模型的规模增加了10倍,数据科学家无需对模型进行更改或牺牲计算效率。

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

ZeRO-Offload通过将数据和计算卸载到CPU中,实现了大规模的模型培训。 旨在最小化与GPU的数据交换,尽量节约GPU内存,同时缩短CPU的计算时间,以免降低计算效率。 因此,在参数量为100亿的模型中,ZeRO-Offload只需要1个NVIDIA V100 GPU就可以实现40 TFlops/GPU的性能。 相比之下,使用PyTorch训练参数量为14亿的模型只能达到30TFlops。 这是无需耗尽内存即可进行训练的最大机型。 ZeRO-Offload还可以扩展到多个GPU设置,实现线性加速,最多128个GPU就可以实现差不多的线性加速。

另外,ZeRO-Offload可以与模型并行使用,通过一个DGX-2 box AI服务器培训参数量超过700亿的模型。 与单独使用模型的并联相比,该参数量实现了4.5倍的规模提高。

以下,结合媒体博客LORENZ KUHN的博客,详细了解这篇论文。

什么是ZeRO-Offload?

ZeRO-Offload将数据和计算从GPU卸载到CPU,从而减少神经网络训练中GPU内存的消耗,提高训练吞吐量,避免因数据移动和CPU计算而导致的减速问题。

使用ZeRO-offload,即使是单个GPU,也可以使用相同的硬件训练出比以往大10倍的模型。 例如用32GB RAM的V100 GPU训练100亿参数的GPT-2。

ZeRO-offload还可以在多GPU设置下进行近似线性扩展。

对于研究人员来说,ZeRO-offload的适用情况如下

我想训练更大的模型,或者更快地训练现在的模型。 因为ZeRO-offload可以训练更大的batch size

你用的是PyTorch,微软的DeepSpeed库( ZeRO-offload的其他实现形式还没有上市)现在很高兴/可以使用。 此外,还可以根据公式的实现自行调整。

我们希望接受建模时的限制,例如当前版本的ZeRO-Offload需要同时使用Adam混合精度培训。

怎么使用?

ZeRO-Offload在微软的DeepSpeed库中实现,官方实现地址: https:/ github.com /微软/ deep sped/blob/6 e 65 C2C 084 ECF C34

用DeepSpeed完成设定后,使用ZeRO-Offload无需进行额外的工作。 只需更改标志和配置文件。

目前,Hugging Face的“transformers library”与“DeepSpeed”进行了实验性集成,使用方法和基准测试结果为https:/ hugging face.co/blog/zero-deep sped-faia

Facebook研究所的fairscale有ZeRO的部分实现,ZeRO-Offload是基于ZeRO这种多GPU存储器优化方法构建的。 目前不支持CPU卸载。

零负载的工作原理

零负载是基于零冗余优化器( zero )构建的。 ZeRO是微软于2020年2月提出的兆级模型参数训练方法,用于数据并行化和模型并行化的存储器优化。 其中,梯度、参数、优化的状态分散在多GPU存储器中,没有冗余性。 由此,GPU之间的通信开销保持在比较低的状态。

与标准的数据并行基准相比,ZeRO通过三个阶段节省了内存和通信的使用。

让我们回顾一下ZeRO

为了解决数据并行和模型并行存在的问题,ZeRO提供了三个阶段的优化方法,分别为优化器的状态分割、梯度分割、参数分割,依次实施三个阶段。

优化分割状态: ZeRO将内存减少3/4,流量与数据并行

增加坡度分割:将内存减少7/8,实现流量和数据的并行化。

加入参数分割:存储器的减少与数据的并行度呈线性关系。 例如,如果用64个GPU进行分割,则存储器可以减少到1/64。 流量的50%在上升。

在去年9月的博客上,微软这样介绍了ZeRO-Offload。

ZeRO-Offload继承ZeRO-2的优化状态和坡度分割。 但是,与ZeRO-2不同,ZeRO-Offload不会在每个GPU上维持优化状态和梯度分割,而是将两者都卸载到主机CPU内存中。 在整个培训阶段,优化状态保存在CPU内存中。 梯度在反向传播的过程中,GPU利用reduce-scatter求出计算和平均,然后各数据并行线程将属于该分割的梯度平均值卸载到CPU存储器中(参照下图的g offload ),然后丢弃剩下的。 坡度到达CPU后,每个数据并行线程直接在CPU上并行更新优化器的状态分割(请参见下图中的p update )。 。

然后,将参数分割返回GPU,在GPU上执行all-gather操作,收集所有更新的参数(参照下图g swap )。 ZeRO-Offload还利用单独的CUDA流涵盖通信和计算的重复,从而最大限度地提高培训效率。

零负载概述。

请注意,ZeRO-Offload是为使用Adam进行混合精度培训而设计的。 这意味着当前版本的ZeRO-Offload使用Adam的优化版本DeepCPUAdam。 其主要原因是避免CPU计算成为整个过程的瓶颈。 DeepCPUAdam的速度是Adam PyTorch的6倍。

实验结果

最后,让我们看看ZeRO-Offload论文中提供的一些实验结果。

下图7显示了可以使用ZeRO-Offload技术在1个、4个或16个GPU(1个DGX-2 )上进行培训的最大机型的情况。

下图11显示了每个GPU的吞吐量随着GPU数量的增加而发生的变化。 可见,在GPU数量增加到128个的过程中,ZeRO-Offload几乎可以实现吞吐量的线性加速。

下图8显示了使用PyTorch、L2L和ZeRO-Offload实现的每个GPU的吞吐量差异。 由此可知,利用ZeRO-Offload实现的每GPU的吞吐量平均比L2L高14% (最大22% )。

【编辑推荐】

人工智能时代背景下如何培养未来人才?著名大学的专家和校长说 人工智能时代背景下如何培养未来人才?著名大学的专家和校长说 在人工智能时代的背景下,未来如何培养人才?2019年10月10日,第四届重庆人才大会暨青年发展大会; ldquo人工智能时代背景下未

美国科学家提出未来用AGI概念取代人工智能! 人工智能的核心是有一天我们可以制造出像人类一样智能的机器。这种系统通常被称为人工通用智能系统,或称AGI,这是一个将概念与更广泛的研究领域区分开来的名字。这也清楚地表明,真正的

百度“小杜”新产品发布,增加了多轮对话和儿童模式。 昨天下午,百度发布了ldquo。小公司。添加 ldquo小公司。多伦与用户的对话。 ldquo儿童模型。,特别搭配儿童音效,并增加了儿童益智游戏等新功能。如果用户对 ldquo播放睡前儿歌。在正常模式下

第4范式NeurIPS 2020 :知识地图嵌入的自动化前几天,第四范式的资深研究员姚权铭博士参加,与大家分享了NeurIPS 2020收到的论文“Interstellar:Searchingrecurrentarchitecture Forknowledgegraphembedding” 第4范式NeurIPS 2020 :知识地图嵌入的自动化 这项研究受

PyTorch和TensorFlow哪个更好?看看一线开发人员怎么说。 茶诺、天梭流(TensorFlow)、火炬(Torch)、MXNet、PyTorch等,深入学习框架之间的比较一直是一个热门话题。但是你知道用户实际使用它时的感受吗?最近,Reddit用户cjmcmurtrie发布了一篇主题为“PyTorch v

上一篇:5G将从根本上改变医疗行业

下一篇:没有了

免责声明:非本网注明“禁止转载”的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明,站长将在收到邮件24小时内删除。

热门标签

洛阳新闻网 | 新闻 | 关注 | 房产 | 汽车 | 教育 | 健康 | 婚庆 | 家居 | 旅游