范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

  1. 背景
  近几年,随着"大模型"概念的提出,深度学习模型越来越大,如何训练这些大模型成为一个亟待解决的工程问题。最初的视觉模型只有几百兆的参数量,而现在的语言模型中,动则百亿,千亿的参数量,甚至万亿的大模型也是见怪不怪。如此巨大的参数量将会消耗巨大的存储空间。如下表所示为当前大模型的参数量(以Float32计算)以及对应的存储空间。
  而当前最好的nvidia GPU显卡也只有40G的显存容量,显然将大模型塞进一张显卡是不现实的。本质上,所有大模型的训练,都使用了分布式的方式。当前分布式训练中,常用的有数据并行,模型并行和流水线并行,从计算效率上来说,数据并行要远远优于模型并行和流水线并线。但是数据并行对显存的占用是最高的,因为它需要将整个网络都运行在一张GPU上面。而在模型训练过程中,除了参数以外,还有很多地方需要占用存储空间,这就使得训练大模型时候的显存消耗进一步提升。因此你是否好奇,如何训练如此庞大的深度学习模型呢? 2. 深度学习中的显存占用
  在探讨如何进行大规模训练之前,我们先来详细看看网络中的显存占用。通常在深度学习训练过程中,涉及到的显存占用包括:网络的参数,梯度,激活值,激活值的梯度,优化器的状态信息,如果使用了混合精度[6]训练,那么还有备份参数(master_weight)等。这里需要指出的是,激活值的梯度在古老的caffe框架中是没有做过优化的,其占用空间和激活值相同。但是在tensorflow,pytorch等框架中,已经做了很好的优化,因此激活值的梯度实际上并没有占据很大的显存空间。另外,可能很多朋友对前面几种类型的显存占用(网络的参数,梯度,激活值,激活值的梯度)比较清楚,但是对于优化器的状态信息以及混合精度[6]训练的备份参数(master_weight)不是很清楚,这里稍加说明。 2.1 SGD优化器
  在简单的SGD优化器中,更新参数使用如下公式:
  2.2 Moment SGD优化器
  但是通常我们不会直接使用SGD来更新参数,而会对梯度进行滑动平均后,再进行更新,即使用Moment SGD优化器,其计算公式如下:
  编辑切换为居
  由于计算 需要用到 ,因此 需要一直保存在显存中。 就是优化器的状态信息,其大小和梯度一致,因此和参数大小一致。例如参数规模是100亿,那么优化器缓存信息 也是100亿的规模。2.3 ADAM优化器
  在很多时候,我们也会使用ADAM优化器进行参数更新,而ADAM会用到梯度的一阶矩估计和二阶矩估计,公式如下:
  编辑切换为居中
  同理,由于计算 需要用到 ,计算 需要用到 ,因此 和 两个变量也需要一直保存在显存中,他们大小也和梯度一致,因此也和参数一致。例如参数规模是100亿,那么 和 一共就是需要200亿的规模。2.4 混合精度[6]
  有时候我们为了提升效率,会使用混合精度[6]进行训练,而混合精度[6]训练为了抵消float16在参数更新时候的舍入误差,会额外保存一份FP32的参数用于参数更新,称作master-weights,因此会多出一份显存占用空间。
  编辑切换为居中2.5 激活值优化与参数优化
  上面分析了深度学习网络的显存占用,而不同的架构中,各个部分的显存占比是不同。在CNN中,通常是激活值占据了大部分的显存空间。而MLP/Transformer等结构则是模型的参数与参数的梯度,优化器的状态信息占据了更大的比例。因此对于不同的网络结构,其优化策略是不相同的。对于CNN网络,通常优化的重点是激活值。而MLP/Transformer则更关注于网络参数相关的显存优化。因此对于两种不同类型的网络,分别需要用到激活值优化策略与参数优化策略。 3. 激活值优化策略3.1 时间换空间
  前面分析过,cnn网络的显存消耗主要是激活值以及激活值的梯度。随着输入分辨率的提升,以及batch size的扩大,激活值以及激活值梯度的显存占用会呈现平方倍的增加。因此对于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.1 ZeRO[4]数据并行原理
  微软开源的DeepSpeed训练框架中,使用了一种称为ZeRO[4]的显存优化技术,称为零冗余优化技术。本质上,它是一种数据并行的分布式训练策略,重点优化了数据并行中的显存占用问题。在ZeRO[4]数据并行中,每个GPU上虽然拥有完整的网络,但是每个GPU只保存一部分的参数,梯度和优化器状态信息,这样就就可以将参数,梯度,优化器状态信息平均分配到多个GPU上。这对于参数观规模较大的网络,显存的降低将是巨大的。但是由于分布式存储参数,也会导致通信的增加。 4.2 传统数据并行流程
  首先来简单回顾一下传统的数据并行流程,包括前向计算,反向计算,参数更新三个流程。假设一共有两张GPU参与训练,前向流程如下图所示,起始阶段,每张GPU初始化为相同的参数,并划分互斥的训练子集。每站GPU独立完成所有layer的前向计算。
  编辑切换为居中
  反向流程如下图所示。起始阶段,最后一个激活值已经通过loss求导得到了激活值的梯度。然后每张GPU独立的进行所有layer的反向计算。
  编辑切换为居中
  参数更新流程如下图所示。先对所有GPU的梯度进行规约操作(求平均值),然后每张GPU独立的更新参数。(由于初始参数值相同,梯度规约后也相同,因此最后每张GPU上更新后的参数也相同)
  编辑切换为居中4.3 ZeRO[4]数据并行流程
  ZeRO[4]数据并行有多个级别,分别是os级别(只对优化器状态做优化),os+g级别(对优化器状态+梯度做优化),以及os+g+p级别(对优化器状态+梯度+参数都做优化)。我们直接分析优化程度最高的os+g+p流程。首先看前向计算流程,在起始阶段,每张GPU只保存W/GPU_NUM的参数。这里假设网络有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.4 ZeRO[4]数据并行通信开销
  从前面的ZeRO[4]数据并行流程可以看出,ZeRO[4]数据并行在os+g+p级别(对优化器状态+梯度+参数都做优化)优化时,会有两次参数的分发(前向计算一次,反向计算一次)和一次梯度的搜集。而传统的数据并行只需要做一次梯度的规约。所以ZeRO[4]数据并行的通信消耗将是传统数据并行的3倍?其实不然,传统数据并行中,虽然只需要做梯度的规约操作,但是由于每张GPU都需要得到规约后的梯度,因此使用的时all-reduce的通信原语。而ZeRO[4]数据并行中,虽然有3此数据传输,但是只需要一对多分发参数或者多对一的梯度搜集,使用的是broadcast和gather的通信原语。而broadcast和gather的通信消耗基本相当,约为all-reduce的一半,因此最终ZeRO[4]数据并行在os+g+p级别上的通信开始时原始数据并行的1.5倍,而不是3倍。当使用os+g级别的优化或者os级别的优化,通信消耗与原始数据并行相当。关于分布式数据并行中的通信原语,通信消耗我将另外编写文章分析。 4.5 ZeRO[4]论文原图分析
  最后我们来分析一下ZeRO[4]论文中最最最niubility的这副图。如何将传统数据并行中需要120G显存的模型变成了只需要1.9G。不看不知道,一看还真吓一跳!分析这张图片前需要知道一个前提,那就是全部基于混合精度[6]训练,并且采用adam的优化策略。
  编辑切换为居中
  首先 表示模型参数规模为7.5B,即75亿个参数量。由于所有训练均基于混合精度训练,因此参数和梯度都使用float16存储,一个参数占用两个字节,参数和梯度的显存占用都是 的2倍。K表达的梯度状态信息以及混合精度master_weight的显存占用是 的多少倍。由于梯度状态信息和混合精度master_weight必须使用float32来存储,即一个参数占用4个字节的存储空间,并且adam中有两个状态信息,分别是梯度的一阶矩估计和二阶矩估计,所以K = (2 + 1)*4 = 12倍的 。Nd=64表示使用64张GPU进行zero数据并行训练。首先看第一行的Baseline,传统的数据并行,那么每张GPU的显存消耗就是: 。接着看第二行,使用os级别的优化,那么参数和梯度的大小没变,优化器状态+master_weight被平均分配到了所有GPU上,因此每张GPU的显存消耗就是31.4G;同理分析第三行,使用os+g的级别的优化,由于梯度数据也被均分到了所有的GPU上面,因此每张GPU的显存消耗就是16.6G;最后分析使用os+g+p级别的优化,参数也被均分到所有GPU上面,因此最后每张GPU的显存消耗就是1.9G。从上面的分析中可以看出,在使用os+g+p级别的优化中,每张GPU的显存消耗就是传统数据并行的Nd分之1 ,大白话说就是用多少张GPU,显存消耗就能降低多少倍。5. 总结
  上面就是关于大模型训练训练中显存占用的一些优化措施。包括针对激活值优化的策略和针对参数优化的策略。正是有了这些工程上强有力的措施,才能让大模型的训练成为可能。不过由于作者水平有限,时间仓促,难免会有纰漏,还望各位读者不吝指正。感谢。 6. 参考资料
  [1]DeepSpeed之ZeRO系列:将显存优化进行到底
  https://zhuanlan.zhihu.com/p/513571706
  [2]2022,大模型还能走多远
  https://www.51cto.com/article/697186.html
  [3]ZeRO+DeepSpeed:微软发布的高效大规模训练套件(含详细分布式训练流程)
  https://zhuanlan.zhihu.com/p/108571246
  [4] Rajbhandari S , Rasley J , Ruwase O , et al. ZeRO: Memory optimizations Toward Training Trillion Parameter Models[C]// SC20: International Conference for High Performance Computing, Networking, Storage and Analysis. 2020.
  [5] Tianqi Chen, Bing Xu, Chiyuan Zhang, and Carlos Guestrin. Training Deep Nets with Sublinear Memory Cost. arXiv preprint arXiv:1604.06174, 2016.
  [6] Micikevicius, P. , Narang, S. , Alben, J. , Diamos, G. , Elsen, E. , & Garcia, D. , et al. (2017). Mixed precision training.

三星掌门人,被特赦说到韩国,就不得不提到三星。众所周知,三星集团在韩国的地位极高,甚至韩国总统见了三星掌门都得礼让三分。这也难怪有人揶揄流水的总统,铁打的三星。这不,昨日韩媒报道,三星电子副会长三星晚年独居养老院的4位演员子女不孝自捐财产,过得不如普通人关于晚年,网上有一句高赞回答有什么也不如有个好伴侣,没什么也不能没个好晚年。晚年优雅书中同样有句话说你可以不是天才,但应具有年轻的精神。老去,是人生的必经过程,有人刚到中年就开始感四川阿坝悍匪罗登,号称不怕阎王的人,持冲锋枪流窜三省无恶不作他被称作是阎王都收不走的男人,喝酒时因为别人的杯子比他高,就遭到了他的当场报复,一条生命就此消失。他带着枪械流窜各地,仗着手里的武器为非作歹,并一度成为了当地老大,他的名字就是地下历史上的今天815历史上的今天,8152005年以色列单方面撤离加沙2001年龙门石窟等四处古迹被授予世界遗产证书1997年著名民间外交家中日友协会长孙平化逝世。1995年苏布拉马尼扬钱德拉塞卡逝世微博电影之夜因为太瘦上热搜,瘦的胸骨肉眼可见,她说天生的不得不说,张天爱真的很美,但是,也太瘦了。都可以很明显地看见她的胸骨。她也不是第一次因为太瘦上热搜了,之前参加乘风破浪的姐姐时就让人惊讶到,好似没什么肉,于文文笑称为她骷髅架。之前三菱新欧蓝德尺寸升级根据规划,广汽三菱全新欧蓝德最快会在11月上市。新车与日产奇骏均基于雷诺日产三菱CMF平台打造,外观与海外版保持一致,尾灯组酷似宝马纯电SUViX,轴距为2706mm,相比现款大幅广汽传祺全新M8申报信息曝光尺寸暴增燃油混动系统在工信部刚刚公布的第395批新车公告上,我们发现了广汽传祺全新一代M8车型的申报信息。新车采用了全新的外形设计,整体尺寸相比现款车型也有了明显的增幅。除了配置方面进一步提升之外,新和田玉只有达官贵人才有资格用吗?什么样的人戴玉最好玉是天地滋养生成的灵物,所以中国人对玉的情节不仅在于它表面的美丽,还在于它温润的本质,古人养生用玉,如杨贵妃含玉,宋徽宗嗜玉,乾隆是玉痴,古书上还有将玉作为枕的记载。那么和田玉只有终于明白时髦精凭什么赢了,4个聪明的穿搭配色公式,真绝一个人的衣品高低,除了体现在服饰的搭配技巧上,还有一个非常关键的因素,那就是配色。色彩搭配永远蕴藏着无穷的惊喜和可能性,深浅明暗姹紫嫣红,不同的配色组合,可以让整体着装呈现出不同的坚定理想信念做遵纪守法标杆习近平总书记在十九届中央纪委六次全会上强调,纪检监察队伍必须以更高的标准更严的纪律要求自己,不断提高自身免疫力,始终做党和人民的忠诚卫士。进入新时代,在推进党的自我革命的伟大实践中建筑工人因热射病死亡,企业赔偿百万无良公司,害死亲人宏达宏达,倒塌倒塌这两天,宏达建筑公司很不太平,每天一早,公司门口就会堵着一帮人,有组织地喊口号,还敲锣打鼓,震耳欲聋,动静很大,周边的人都围过来看热闹,员工们见
温建国专栏回望湘西文温建国编辑燕子图片网络回望湘西大雪下在北方唯一能让雪光燃烧的是湘西那段青春的记忆在离开军营二十四年后的冬天我再一次回望湘西涌动的思绪如同江南淅淅沥沥的春雨我不知道该如何去描述那段数字资产不是从天而降,数商繁荣还需脚踏实地怎么领奖品?扫码就可以吗?在2022全球数商大会期间,除了主会场里人头攒动,门口一个长1米宽0。5米的小桌前也围满了人。工作人员一边向大家热情介绍数商大会数字资产的兑换权益,一边对全球最大iPhone工厂所在地解封,郑州为何要打赢苹果保卫战?今天(11月30日)是郑州解除流动性管理的第一天,现在这座全球最大iPhone工厂所在的城市还需面临打赢另一场战争苹果保卫战。郑州的产能对iPhone市场有多重要?短期影响苹果著名腾讯副总裁李强新能源物业服务会展等政企服务需求旺盛过去一年,随着内外部环境不断变化,企业和社会的发展面临诸多挑战。埃森哲连续两年发布的中国企业数字化转型指数报告指出,疫情导致的产出减慢,全球供应链脆弱,以及凸显的能源危机,是目前企黑猫大数据中心发布2022年双十一消费投诉数据报告一年一度的双十一落下帷幕,天猫方面称交易规模与去年持平,京东则宣布实现超越行业增速。各大平台均默契的没有公布整体成交额,一方面是受消费整体环境的影响,另一方面,经过多年的高速增长,封控管理需快封快解全力做好服务保障央视网消息目前一些地方长期封控给群众的工作和生活带来了很大影响,也让群众产生了焦虑情绪。对此,国家疾控局相关负责人表示,长期封控必须予以纠偏和避免。国家疾控局监督一司司长程有全长期晚间公告12月1日这些公告有看头品大事埃斯顿拟6000万元受让亚威产业基金财产份额埃斯顿晚间公告,公司拟以自有资金6000万元受让鑫沅资产持有的亚威产业基金财产份额4379。56万元(实缴出资4379。56万元)国美电器已被申请破产清算,下一个会是谁?今天,国美电器已被申请破产清算的话题冲上了热搜。据中城百亿产业研究院要案研究中心11月29日发微博布称,国美电器有限公司因拖欠供应商数百万货款,经催要不能偿还,被向北京市第一中级人胡良英美丽事业的追梦人自贡网记者罗祥瑞芶思爱美之心人皆有。如果说追求姣好的面容只能算小美,那么追逐美丽的心灵可谓大美。自贡市女企业家胡良英就是一位巾帼不让须眉,拥有大美的人。胡良英大概7岁时,脸上突然开名扬九州蜚誉四海档案里的中国四海为您讲述中国银行的四海传奇档案百年前,为冲破外国银行的盘剥操纵,中国银行锐意改革。从第一家海外分行的成立,到如今遍及五大洲四大洋的中行服务网络,一张张历史照片的背后,隐藏着怎样鲜为人知的艰辛历程?中国银行众女人40岁后,生活别太节俭,这3种美食要经常吃,面若桃花好气色女人40岁后,生活别太节俭,这3种美食要经常吃,面若桃花好气色人们总是宣扬男女平等妇女能顶半边,而随着时代的发展,现如今这妇女是真的能顶半边了,不仅需要照顾家庭孩子父母公婆丈夫,还