专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

如何在普通显卡上训练一个万亿大模型?

  1。背景
  近几年,随着大模型概念的提出,深度学习模型越来越大,如何训练这些大模型成为一个亟待解决的工程问题。最初的视觉模型只有几百兆的参数量,而现在的语言模型中,动则百亿,千亿的参数量,甚至万亿的大模型也是见怪不怪。如此巨大的参数量将会消耗巨大的存储空间。如下表所示为当前大模型的参数量(以Float32计算)以及对应的存储空间。
  而当前最好的nvidiaGPU显卡也只有40G的显存容量,显然将大模型塞进一张显卡是不现实的。本质上,所有大模型的训练,都使用了分布式的方式。当前分布式训练中,常用的有数据并行,模型并行和流水线并行,从计算效率上来说,数据并行要远远优于模型并行和流水线并线。但是数据并行对显存的占用是最高的,因为它需要将整个网络都运行在一张GPU上面。而在模型训练过程中,除了参数以外,还有很多地方需要占用存储空间,这就使得训练大模型时候的显存消耗进一步提升。因此你是否好奇,如何训练如此庞大的深度学习模型呢?2。深度学习中的显存占用
  在探讨如何进行大规模训练之前,我们先来详细看看网络中的显存占用。通常在深度学习训练过程中,涉及到的显存占用包括:网络的参数,梯度,激活值,激活值的梯度,优化器的状态信息,如果使用了混合精度〔6〕训练,那么还有备份参数(masterweight)等。这里需要指出的是,激活值的梯度在古老的caffe框架中是没有做过优化的,其占用空间和激活值相同。但是在tensorflow,pytorch等框架中,已经做了很好的优化,因此激活值的梯度实际上并没有占据很大的显存空间。另外,可能很多朋友对前面几种类型的显存占用(网络的参数,梯度,激活值,激活值的梯度)比较清楚,但是对于优化器的状态信息以及混合精度〔6〕训练的备份参数(masterweight)不是很清楚,这里稍加说明。2。1SGD优化器
  在简单的SGD优化器中,更新参数使用如下公式:
  2。2MomentSGD优化器
  但是通常我们不会直接使用SGD来更新参数,而会对梯度进行滑动平均后,再进行更新,即使用MomentSGD优化器,其计算公式如下:
  编辑切换为居
  由于计算需要用到,因此需要一直保存在显存中。就是优化器的状态信息,其大小和梯度一致,因此和参数大小一致。例如参数规模是100亿,那么优化器缓存信息也是100亿的规模。2。3ADAM优化器
  在很多时候,我们也会使用ADAM优化器进行参数更新,而ADAM会用到梯度的一阶矩估计和二阶矩估计,公式如下:
  编辑切换为居中
  同理,由于计算需要用到,计算需要用到,因此和两个变量也需要一直保存在显存中,他们大小也和梯度一致,因此也和参数一致。例如参数规模是100亿,那么和一共就是需要200亿的规模。2。4混合精度〔6〕
  有时候我们为了提升效率,会使用混合精度〔6〕进行训练,而混合精度〔6〕训练为了抵消float16在参数更新时候的舍入误差,会额外保存一份FP32的参数用于参数更新,称作masterweights,因此会多出一份显存占用空间。
  编辑切换为居中2。5激活值优化与参数优化
  上面分析了深度学习网络的显存占用,而不同的架构中,各个部分的显存占比是不同。在CNN中,通常是激活值占据了大部分的显存空间。而MLPTransformer等结构则是模型的参数与参数的梯度,优化器的状态信息占据了更大的比例。因此对于不同的网络结构,其优化策略是不相同的。对于CNN网络,通常优化的重点是激活值。而MLPTransformer则更关注于网络参数相关的显存优化。因此对于两种不同类型的网络,分别需要用到激活值优化策略与参数优化策略。3。激活值优化策略3。1时间换空间
  前面分析过,cnn网络的显存消耗主要是激活值以及激活值的梯度。随着输入分辨率的提升,以及batchsize的扩大,激活值以及激活值梯度的显存占用会呈现平方倍的增加。因此对于CNN的大模型训练,主要集中在对激活值的优化上。这里介绍一种以增加计算时间来降低显存空间占用的方式:亚线性内存优化〔5〕。首先来看一下常规深度学习的流程,如下图所示。前向计算后,保存所有的激活值,如图中的a1,a2,a3与a4。反向计算的时候,根据之前的激活值,计算每一层layer的梯度,包括激活值梯度与参数梯度。
  编辑切换为居中
  而亚线性内存优化〔5〕的深度学习流程则与传统的深度学习流程有些差异,如下图所示。在前向计算中,为了降低显存消耗,会选择性的丢弃部分激活值,例如a2。反向计算的时候,按照常规的方法进行计算,当遇到激活值缺失的时候,例如计算layer3的参数梯度时,需要用到激活值a2,但是a2已经被丢弃,此时会暂停反向传播,重新进行一次最短路径的前向计算,根据a1计算出a2(如果a1也被丢弃,那么继续向前找)。然后再继续原来的反向传播。
  编辑切换为居中
  由此可见,亚线性内存优化〔5〕彻彻底底的使用了时间换空间的策略。那么你是否好奇,为什么它会取一个这样的名字呢?其实理解起来也很简单,假设每一层的激活值大小相同,那么整个网络的激活值大小就和layer的数目成线性关系,layer的深度扩大几倍,激活值的占用就扩大几倍。而使用了亚线性内存优化〔5〕策略之后,显存的占用与layer的增加不再是线性关系,而是亚线性的,因此叫做亚线性内存优化〔5〕,实际上,如何选择丢弃的激活值,将会极大的影响最终的网络性能。被丢弃的激活值需要满足前向计算简单(降低重计算的耗时),激活值占用空间大的特点。例如BN层,其计算非常简单,重计算基本不耗时(相对卷积),因此比较适合丢弃。3。2低精度训练
  除此之外,还可以使用低精度训练的方式。这样激活值以及激活值的梯度都使用更小的数据格式存储。能够极大的降低激活值的存储空间。例如在使用混合精度〔6〕训练的时候,所有激活值使用float16的格式,相对于原始的float32,显存占用直接缩小了一半。4。参数优化策略
  上面介绍的激活值优化策略适合于CNN这样的结构。而当前的一些大模型,其显存占用主要集中在参数以及参数相关的显存占用上。例如参数的梯度,优化器的状态信息等。因此如何优化参数相关的显存占用对于大模型的训练显得更加重要。4。1ZeRO〔4〕数据并行原理
  微软开源的DeepSpeed训练框架中,使用了一种称为ZeRO〔4〕的显存优化技术,称为零冗余优化技术。本质上,它是一种数据并行的分布式训练策略,重点优化了数据并行中的显存占用问题。在ZeRO〔4〕数据并行中,每个GPU上虽然拥有完整的网络,但是每个GPU只保存一部分的参数,梯度和优化器状态信息,这样就就可以将参数,梯度,优化器状态信息平均分配到多个GPU上。这对于参数观规模较大的网络,显存的降低将是巨大的。但是由于分布式存储参数,也会导致通信的增加。4。2传统数据并行流程
  首先来简单回顾一下传统的数据并行流程,包括前向计算,反向计算,参数更新三个流程。假设一共有两张GPU参与训练,前向流程如下图所示,起始阶段,每张GPU初始化为相同的参数,并划分互斥的训练子集。每站GPU独立完成所有layer的前向计算。
  编辑切换为居中
  反向流程如下图所示。起始阶段,最后一个激活值已经通过loss求导得到了激活值的梯度。然后每张GPU独立的进行所有layer的反向计算。
  编辑切换为居中
  参数更新流程如下图所示。先对所有GPU的梯度进行规约操作(求平均值),然后每张GPU独立的更新参数。(由于初始参数值相同,梯度规约后也相同,因此最后每张GPU上更新后的参数也相同)
  编辑切换为居中4。3ZeRO〔4〕数据并行流程
  ZeRO〔4〕数据并行有多个级别,分别是os级别(只对优化器状态做优化),osg级别(对优化器状态梯度做优化),以及osgp级别(对优化器状态梯度参数都做优化)。我们直接分析优化程度最高的osgp流程。首先看前向计算流程,在起始阶段,每张GPU只保存WGPUNUM的参数。这里假设网络有2个layer,一共两张GPU参与并行,因此GPU1只保存layer1的参数w1,GPU2只保存layer2的参数w2。在layer1的前向计算之前,由于GPU2没有layer1的参数,因此需要做一次w1的参数分发。然后进行layer1的前向计算。同样在进行layer2的前向计算之前,需要将layer2的参数w2进行一次分发,再完成layer2的前向计算。整体示意图如下图所示。
  编辑切换为居中
  再来分析ZeRO〔4〕数据并行的反向传播流程。同样的,当layer反向计算前,都需要对参数进行分发。然后再进行反向传播计算。完成反向传播之后,会有一个梯度搜集的过程,例如GPU2需要保存w2对应的梯度g2,因此所有其他GPU将g2梯度发送给GPU2。GPU2上面得到各个GPU的g2梯度后,做规约操作并保存,得到g2。其他GPU将会删除w2,g2。然后重复该流程,直到所有layer都完成反向传播计算。示意图如下图所示。
  编辑切换为居中
  最后来分析一下ZeRO〔4〕数据并行的参数更新流程。由于梯度的规约操作在反向传播的时候已经做了,因此ZeRO〔4〕数据并行可以直接更新优化器的状态信息,然后更新参数,示意图如下图所示。
  4。4ZeRO〔4〕数据并行通信开销
  从前面的ZeRO〔4〕数据并行流程可以看出,ZeRO〔4〕数据并行在osgp级别(对优化器状态梯度参数都做优化)优化时,会有两次参数的分发(前向计算一次,反向计算一次)和一次梯度的搜集。而传统的数据并行只需要做一次梯度的规约。所以ZeRO〔4〕数据并行的通信消耗将是传统数据并行的3倍?其实不然,传统数据并行中,虽然只需要做梯度的规约操作,但是由于每张GPU都需要得到规约后的梯度,因此使用的时allreduce的通信原语。而ZeRO〔4〕数据并行中,虽然有3此数据传输,但是只需要一对多分发参数或者多对一的梯度搜集,使用的是broadcast和gather的通信原语。而broadcast和gather的通信消耗基本相当,约为allreduce的一半,因此最终ZeRO〔4〕数据并行在osgp级别上的通信开始时原始数据并行的1。5倍,而不是3倍。当使用osg级别的优化或者os级别的优化,通信消耗与原始数据并行相当。关于分布式数据并行中的通信原语,通信消耗我将另外编写文章分析。4。5ZeRO〔4〕论文原图分析
  最后我们来分析一下ZeRO〔4〕论文中最最最niubility的这副图。如何将传统数据并行中需要120G显存的模型变成了只需要1。9G。不看不知道,一看还真吓一跳!分析这张图片前需要知道一个前提,那就是全部基于混合精度〔6〕训练,并且采用adam的优化策略。
  编辑切换为居中
  首先表示模型参数规模为7。5B,即75亿个参数量。由于所有训练均基于混合精度训练,因此参数和梯度都使用float16存储,一个参数占用两个字节,参数和梯度的显存占用都是的2倍。K表达的梯度状态信息以及混合精度masterweight的显存占用是的多少倍。由于梯度状态信息和混合精度masterweight必须使用float32来存储,即一个参数占用4个字节的存储空间,并且adam中有两个状态信息,分别是梯度的一阶矩估计和二阶矩估计,所以K(21)412倍的。Nd64表示使用64张GPU进行zero数据并行训练。首先看第一行的Baseline,传统的数据并行,那么每张GPU的显存消耗就是:。接着看第二行,使用os级别的优化,那么参数和梯度的大小没变,优化器状态masterweight被平均分配到了所有GPU上,因此每张GPU的显存消耗就是31。4G;同理分析第三行,使用osg的级别的优化,由于梯度数据也被均分到了所有的GPU上面,因此每张GPU的显存消耗就是16。6G;最后分析使用osgp级别的优化,参数也被均分到所有GPU上面,因此最后每张GPU的显存消耗就是1。9G。从上面的分析中可以看出,在使用osgp级别的优化中,每张GPU的显存消耗就是传统数据并行的Nd分之1,大白话说就是用多少张GPU,显存消耗就能降低多少倍。5。总结
  上面就是关于大模型训练训练中显存占用的一些优化措施。包括针对激活值优化的策略和针对参数优化的策略。正是有了这些工程上强有力的措施,才能让大模型的训练成为可能。不过由于作者水平有限,时间仓促,难免会有纰漏,还望各位读者不吝指正。感谢。6。参考资料
  〔1〕DeepSpeed之ZeRO系列:将显存优化进行到底
  https:zhuanlan。zhihu。comp513571706
  〔2〕2022,大模型还能走多远
  https:www。51cto。comarticle697186。html
  〔3〕ZeRODeepSpeed:微软发布的高效大规模训练套件(含详细分布式训练流程)
  https:zhuanlan。zhihu。comp108571246
  〔4〕RajbhandariS,RasleyJ,RuwaseO,etal。ZeRO:MemoryoptimizationsTowardTrainingTrillionParameterModels〔C〕SC20:InternationalConferenceforHighPerformanceComputing,Networking,StorageandAnalysis。2020。
  〔5〕TianqiChen,BingXu,ChiyuanZhang,andCarlosGuestrin。TrainingDeepNetswithSublinearMemoryCost。arXivpreprintarXiv:1604。06174,2016。
  〔6〕Micikevicius,P。,Narang,S。,Alben,J。,Diamos,G。,Elsen,E。,Garcia,D。,etal。(2017)。Mixedprecisiontraining。

南宁哪个公园最好玩?南宁狮山公园荷园南湖公园的服务设置系统也将得到完善与提升,如新建具岭南风格的景观廊亭,新增和改造公厕售卖点等,实现统一风格统一样式,使得整个公园变得更加简约大气。此外,科技感十足的帕劳有哪些好玩的地方?1。基本信息帕劳是一个位于西太平洋的岛国。该国的官方名称是帕劳共和国。帕劳与印度尼西亚,菲律宾和密克罗尼西亚联邦共享海上边界。从地理位置来看,该国是较大的密克罗尼西亚群岛的一部分。你能说一道最具家乡特色的美食吗?想说的美食太多了,但是我最想说的是一种咸菜豆豉。它不同于四川豆豉,四川豆豉是油黑油黑的,咸香入味。它可以做调料炒菜,是做豆豉鲮鱼油麦菜不可欠缺的!而我说的这个豆豉,虽然登不了大雅之学校班主任应该怎么做才能既更好的教育学生又减轻自己的负担?班主任担负着教书育人的重要使命。其人格形象和人格力量,对于学生是一种精神楷模和精神动力。因此,(一)作为班主任首先应该以身作则,言传身教,做好学生的榜样。一个实事求是言行一致,爱护国足召开誓师大会,誓要赢下越南,以小组第2出线!你怎么看?耍以小组第二名出线,这种誓言难以服人,因为己经连输两支强队澳大利亚,及日本队,余下的比赛能保证全赢吗,如澳大利亚同日本队余下的比赛全赢了,我们怎么能以小组苐二出线,过去我们常在比赛买空调,为什么中国人认格力外国人认海尔?你这个问题很值得探讨。在国内,海尔格力都是不错的空调。格力起步最早,术业有专攻,产品好技术硬,一直是老大哥的身份,深受国人喜爱。然而到了国外,对老外来说,大家都是新品牌,一切清零,这种水果在你们那里叫什么?为什么超市里买不到?这个是树莓,它还有很多名字山莓,覆盆子,三月泡,四月泡等等,地域不一样,叫法也不一样。在我国分布极广,除东北,青海,新疆,西藏,甘肃等少数几个地方没有外,全国大部分地区野外都能见到伊利股份计划5年翻一倍,应在多少价格范围内建仓?伊利股份计划5年翻一倍是现实的,应在什么价位范围内建仓呢?下面根据各方面来综合分析推算股价范围建仓点(1)从市盈率分析从伊利股份的动态市盈率目前是19。61倍,伊利股份是名副其实的中国游客素质低是一种偏见吗?如果敢于正视现实的话,我们就很难说这种说法是一种偏见。只举一个例子,有一年随团在朝鲜旅游,在参观金日成故居的时候,当时那个朝鲜的讲解员就直言不讳地说,所有的游客中就你们中国人最不懂2024年巴黎奥运会,中国男篮会派出什么样的阵容?2024年巴黎奥运会,中国男篮会派出什么样的阵容,这话听起来非常切意,好象中国男篮以闯过亚洲诸强冲奥成功,先搞清楚中国男篮马上在今年的11月份的23年男篮世界杯亚洲区预赛,中国和澳宝宝一般几个月之后不闹觉?我是徐大量,很高兴能和大家分享我的育儿观念。我相信每一个不睡整觉的宝宝背后都有一个顶着熊猫眼的伟大妈妈,我也不例外,我家宝宝现在快十个月了,晚上还是会哼哼唧唧的吃12次奶。其实宝宝
央广网评城管撤掉孩子书桌该撤的是不文明执法近日,海南三亚吉阳区城管人员执法的一段监控视频引发网友关注。画面显示,一个小男孩正趴在店铺门前的桌子上写作业。这时,四五个身穿制服的执法人员向他走来,其中一人朝小男孩摆了摆手,示意A股,不要着急抄底,股市还有危机,接下来行情会这样走周一中午收盘!今天的A股,有点强势,三大指数并驾齐驱,走了一个袋鼠行情,个股近3000只上涨,让股民忘记了疼痛。他们认为,新的行情已经全面打开,现在就是要大刀阔斧的进场干,而我却有不要再乱剪头发了!今年新出这4款发型,洋气又显脸小,堪比整容发型对于女生来说是非常重要的,一个好看的发型可以让整个人的颜值提升很多。尤其脸大的女生,如果剪错了发型就会显得头更大,所以今天就给大家分享四款洋气显脸小又时髦的烫发发型,让你轻松拥男人,穿衣得体,懂得着装,非常重要,那是你对别人的第一印象!1男士的衣服可以不多,但一定要质量佳。男人的衣橱拼的不是数量,而是质量,这和女人是有本质区别的!要么不买,要买就买两件质量好的,那种淘宝地摊货的,图便宜买了,很大可能也会是压箱底的经常染头发会致癌,是真的还是假的?研究结果公布,涨知识了染发也是化妆的一种,在日常生活中,染发已经不是什么新鲜事。很多人会追求新潮流新发色,这就会出现经常性染发的现象,染发这一行为在生活中也越发常见。不少老年人因为头发变白,会特意将头发今春裤子流行穿宽不穿紧,百搭遮肉又显瘦,胯宽腿粗都适合每个季节里,裤子都是不可忽视的存在,女生想要买到好看的裤子,一定有密码,也就是买对裤子的定律。选到合适的裤子可以起到显瘦的作用,遮腿粗显腿长,这样裤子才能拥有更高的上身率。现在大家换季一定要有一件永不过时的牛仔外套!hi,大家好,我是笑笑天气渐暖,大家开始脱下厚重的外套开始过春天了,牛仔外套作为春季衣橱必备的外套之一,它似乎永远是大热门,每年都在循环流行。牛仔外套之所以成为经典,是因为真的太好上有老下有小,必须顽强活中年人的悲哀有谁知人到中年,会时常觉得孤独。因为一睁眼发现周围都是依赖你的人,而你想依赖的人根本没有。一位微博主的话,引发诸多共鸣。很多年前,一条汽车广告显示了这样的场景宽敞的七座车上,爷爷奶奶老婆乌鸦的高回报孝不我待羊有跪乳之恩,鸦有反哺之义。凌乱的脚步声嘈杂的私语声沉重的呼吸声,都在我那似乎永无止境的哭声中慢慢归于平静,世界仿佛任性的孩子,在大闹一通后渐渐平息了情绪,只剩不知何处风吹美丽的苍鹭苍鹭文紫藤晴儿摄影钟福生凌空与展翅它们都在越过自我的力量,翻转着高处的寂静。寂静引燃的诗句也是一只苍鹭的踪影,墨蓝色的羽毛也以柔软镌刻在光阴之中,在飞翔也在挣脱。在静止,也在沉默。带你读诗种下心中的愿望种下心中的愿望种下一棵小树种下心中的愿望它如同树上的花蕾每到春天的时候就会绽放有树就会有鸟树是鸟的天堂它们在树上筑巢生蛋它们在树上雀跃歌唱有鸟天空就不会寂寞有树大地就不会荒凉种下一
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网