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

| 人工智能

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

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

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

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

训练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% )。

【编辑推荐】

研究表明,生物识别可穿戴设备可以预测新型冠状病毒发作False

人力资源和社会保障部计划发布16名新的专业人工智能培训师,以入围 新华社1月2日电(李金磊)经人力资源和社会保障部同意,中国就业培训技术指导中心近日发布了《关于发布新岗位信息公开的通知》,包括在线合同分销商、人工智能培训师、全媒体运营商、医疗保

90后科技馆和他的另类搜索引擎Magi 最近,一个名为Magi的搜索引擎成为人们关注的焦点。据说这个搜索引擎与我们常见的搜索引擎非常不同,有一种被程序员喜爱的酷X风格。所以我们打开东方三博士,看了看。事实上,这一页看起

你真的知道人工智能和机器学习的区别吗?本文转自雷锋网,必要时转载到雷锋网官网申请授权。 你真的知道人工智能和机器学习的区别吗? 最近发表了一份报告,声称在产品和服务中使用人工智能[29] [30]的企业滥用人工智能。 根据Ver

用手机监视司机:司机记录器也开始应用AI技术本文从公众号rdquo; (ID:AI_Discovery)。 用手机监视司机:司机记录器也开始应用AI技术 过去三年来,美国成千上万辆货车配备了机器学习算法来分析驾驶员的行为。 算法可以检测驾驶员在车里拿到手

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

热门标签

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