纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

显存不足(如何设置内存分给显存)

8月24日 金钟寨投稿
  显存不足(如何设置内存分给显存)2080Ti竟然可以当V100来用,这个功能有点儿厉害。
  自深度学习大潮兴起,模型就朝着越来越大、越来越深的方向发展。
  2012年,拥有5个卷积层的AlexNet第一次在视觉任务上展现出强大的能力。在此之后,基础模型就开始深化起来:2014年的VGGNet达到了19层;2015年的ResNet、2017年的DenseNet更是将深度提升到了上百层。
  模型大小的提升极大地提高了性能。因此,各大视觉任务都将ResNet、DenseNet等当做基本的BackBone。但与此同时,模型的增大也意味着对显存的需求随之变高。
  为什么GPU显存如此重要?
  九年前,Hinton等人率先用两张3GB显存的GTX580GPU高效训练AlexNet。在此之后,显存需求与模型大小就一直同步增长。打比赛想要取到好成绩、做实验想要超越Stateoftheart效果、做工程想要拟合庞大的业务数据等等,这些都离不开显存的加持。
  模型加一层,显存涨一分
  在深度学习模型中,占用显存的总是那些特别大的张量,比如各层的权重矩阵、计算出来的张量(激活值)、反向传播需要的张量等。在视觉任务中,占据绝大多数的是中间计算出来的张量。随着模型变得更深更大,每一层的激活值张量都需要保留在显存中。
  以ResNet50为例,在模型的训练中,前向传播中50层的计算结果都需要保存在显存中,以便让反向传播利用这些张量计算梯度。如果使用ResNet108,需要的显存就会比ResNet50多出一倍多。显存的增加,带来的当然是模型效果的提升。另一方面,如果显存不够,许多工作也必将无法实现。
  显存不够,写论文、打比赛屡遭掣肘
  在实验室跑模型、写论文的过程中,显存不够用也是常有的事。一般实验室的显卡都是大家共用的,可能分配到每个人的手上已经所剩无几。甚至于,随着顶尖模型越来越大,所有人都没有足够的算力、显存去复现终极实验,更不用说超越其SOTA结果。
  遇到这种情况,学生无非只有两种选择:向导师申请新的GPU资源,或者缩减模型做一个Mini版的实验。前者并不总是能够成功,后者则可能会有种种不完美。如果能用有限的显存跑顶尖的大模型,做实验、写论文都会变得更加简单。
  此外,无论是在学校还是在公司打比赛,算力不够、显存不足都是常有的事。顶尖竞争者的模型结构可能相差无几,区别就在于谁的模型更大、更有能力去处理复杂的样本。更直观地说,排行榜领先者的模型也许就只差十几层,但也正是因为显存受限少了那十几层,有些模型才与冠军失之交臂。
  显存:约束算法工程师的瓶颈
  再举一个常见的例子,企业中的算法工程师拥有足够的算力,显存没那么重要。然而,只使用并行策略分担显存,还是可能会出现显存足够、但每张GPU的计算负载又不足的情况。
  4张V100,显存占满,而GPU利用率很低。
  即使是V100这样强大的算力,训练大模型时也很容易占满16GB显存。然而由于批量不够大,上图每张V100GPU的利用率只有20到30。只有继续增大每次迭代的数据吞吐量,才能增加GPU的利用率。
  MegEngine:显存需要优化
  其实对于深度学习从业者来说,日常应用中出现的情况远不止上面三种。做深度学习,不论是研究还是工程,时不时就会遇到显存问题。但这个问题优化起来又很复杂,需要利用大量的工程实现来缓解。显然,这样的优化应该由深度学习框架来完成。不过,在实际应用中不难发现,TensorFlow、PyTorch似乎都没有提供完善的官方解决方案。
  但如果把目光投向新生势力,情况可能就不一样了。在旷视开源深度学习框架MegEngine最近发布的1。4版本中,该框架首次引入了动态图显存优化技术,大大降低了显存占用问题。
  具体来说,通过复现并优化ICLR2021Spotlight论文《DynamicTensorRematerialization》(以下简称DTR),MegEngine实现了用计算换取更多显存。有了这项技术的加持,模型的显存占用大大降低,同样的硬件可以训练更大的模型、承载更大的BatchSize。如此一来,学生的小显卡也能开始训练大模型,而工程师们的服务器也经得起更充分的应用。
  原本需要16GB显存的模型,优化后使用的显存峰值就降到了4GB。
  MegEngine这种显存优化技术,让1060这样的入门级显卡也能训练原本2080Ti才能加载得上的模型;而11GB显存的2080Ti,更能挑战原本32GBV100才能训练的模型。要知道,V100的价格可是2080Ti的9倍还多。
  两行代码,显存翻倍
  如要需要自己去优化显存,可能99的算法工程师都会放弃。最好的办法是告诉深度学习框架,这次训练就分配多少显存,剩下的就交给框架自己去优化。MegEngine的动态图显存优化就是基于这一逻辑。
  通过两行代码,框架可以全自动地完成显存优化,将所有优化逻辑与复杂的工程实现都隐藏在MegEngine内部。
  如上图所示,在动态计算图中导入DTR显存优化模块,并配置显存释放阈值为5GB。训练时,因为显存已经翻倍了,BatchSize翻四倍也能装到GPU中。
  显存扩增带来的收益
  很多时候,提高显存的利用率,最显著的作用就是能训练更大的模型。从一定程度上来说,参数量越大就意味着效果越好;而批大小越大,梯度更新方向就越准确,模型性能也就越优异。MegEngine开发团队做了很多实验,以确保提高显存利用率的同时训练是优质的。
  最简单的验证方法就是不断增加批大小,看看显卡到底能坚持到什么程度。下面两张表分别展示了在PyTorch及MegEngine上加载或不加载动态图显存优化(DTR)技术的效果。
  如果不使用动态图显存优化技术,PyTorch上的模型一次训练迭代最多只能处理64个样本,MegEngine能处理100个样本。只要加上DTR,PyTorch模型一次迭代就能处理140个样本,MegEngine能尝试处理300个样本。
  如果换算成模型大小,加上动态图显存优化技术的MegEngine,在相同的GPU及批大小情况下,能高效训练增大近乎5倍的模型。
  MegEngine动态图显存优化技术
  深度学习模型的显存占用一般分为权重矩阵、前向传播的中间张量、反向传播的梯度矩阵(Adam优化器)三部分。
  权重矩阵和梯度矩阵占的内存很难优化,各个模型基本上都有一个定值。前向传播的中间计算结果则不然:随着BatchSize的增加以及模型层和数量的增加,显存必然跟着增加。如果模型比较大,中间计算结果将占据最主要的显存。
  如上图所示,在前向传播中(第一行从左到右),蓝色圆圈表示模型的中间计算结果开始占用显存。一直到前向传播完成,第一行完全变为蓝色圆圈,前面计算所占用的显存都不能释放。
  等到反向传播开始(第二行从右到左),随着梯度的计算与完成应用,前向传播保留在显存中的张量才可以释放。
  很明显,如果要降低显存占用,就要拿前向传播保存的中间计算结果开刀,这也正是MegEngine动态图显存优化的主要方向。
  用计算换显存
  对于动态计算图,最直接的方法就是用计算或内存换显存。因此,MegEngine首先要决定到底使用哪种技术。
  MegEngine团队通过实验发现,用计算耗时远比交换耗时少。例如从显存中节省612。5MB空间,用带宽换显存要比用计算换显存慢了几十上百倍。
  因此很明确,动态计算图中也应该使用梯度检查点技术,用计算换显存。
  如下为梯度检查点技术原理示意,前向传播中第三个点为检查点,它会一直保存在显存中。第四个点在完成计算后即可释放显存,在反向传播中如果需要第四个点的值,可以从第三个点重新计算出第四个点的值。
  虽然大致原理不难理解,但具体怎么做还是比较复杂的,MegEngine团队借鉴了论文《DynamicTensorRematerialization》,将其优化并实现到MegEngine中。
  DTR,最前沿的显存优化技术
  DTR是一种完全动态的启发式策略,核心思想是当显存超过某个阈值时,动态地释放一些合适的张量,直到显存低于阈值。一般而言,释放张量的标准有三个:重新计算出该张量的开销越小越好;占用的显存越大越好;在显存中停留的时间越长越好。
  除去从检查点恢复前向传播结果张量带来的主要开销,DTR的额外开销在于寻找应该被释放的最优张量,即计算上图张量t的f(t)值。为了降低这一部分的计算量,MegEngine还采用了两种运行时优化:
  不考虑小的张量,它们不加入候选集
  每次在需要释放张量的时候,随机采样并遍历少部分张量,以节省计算开销
  最难的是工程实现
  虽然DTR看上去原理也不复杂,但真正的难题在于提高易用性,即将所有细节都隐藏到框架的底层,只为开发者提供最简单的接口。
  在此就用一个最简单的计算例子,跟着框架演算一遍,看看MegEngine是如何利用动态图的计算历史恢复与释放张量的。
  现在假设输入有a和b两个张量,并希望计算ab与ab,但是显存最大只能保存三个张量。在黄框计算cab时,显存还能保留张量c,然而在下一步绿框计算dab时只能先释放c才能保存d。
  不巧的是,下一步灰框需要获取黄框的计算结果,然而为了节省显存,c已经被释放了。所以,MegEngine现在需要做的是重新运行灰框的计算图,计算cab,并加载到显存中。显然,这样做必然需要释放d的显存。
  这样一来,鉴于显存的限制,MegEngine就会自动选择合适的张量释放,并在需要时重新计算。如果需要重新计算某个张量的结果,例如上图的d,就需要具体的历史计算信息(在这里就是ab这样的计算路径),与此同时还需要知道a和b这两个输入张量。
  所有这样的历史计算信息都由MegEngine自动获取与保存,MegEngine的工程师已经在底层用C处理完毕,用户完全不需要考虑。structComputePath{std::OpDSmallVTensorISmallVTensorIdoublecomputetime0;}SmallVComputePsizetrefcnt0;
  以上为MegEngine底层用于追踪计算路径信息的结构体。其中op表示产生该张量的算子;inputs和outputs分别表示这个算子需要的输入与输出张量;computetime表示该算子实际的运行时间。
  实际上,在使用MegEngine的过程中,全都是用Python接口创建张量,只不过框架会对应追踪每个张量的具体信息。每当需要访问张量,不用考虑张量是否在显存中时,没有也能立刻恢复出来。所有这些复杂的工程化的操作与运算逻辑都隐藏在了MegEngineC底层。
  Python代码会翻译成C底层实现,C代码会通过指针管理显卡内存中真正的张量(右图绿色部分)。
  幸好这样的复杂操作不需要算法工程师完成,都交给MegEngine好了。
  MegEngine能做的事情远不止于此,只不过大多是像动态图显存优化这种技术一样,润物细无声地把用户的实际问题解决于无形。2020年3月开源的MegEngine在以肉眼可见的速度快速成长,从静态计算图到动态计算图,再到持续提升的训练能力、移动端推理性能优化、动态显存优化这也许就是开源的魅力。只有不断优化和创新,才能吸引和满足挑剔的开发者。MegEngine下一个推出的功能会是什么?让我们拭目以待。
投诉 评论 转载

士别三日当刮目相待(士别三日,即更刮目相待的意思)士别三日当刮目相待(士别三日,即更刮目相待的意思)士别三日刮目相待的意思士别三日,当刮目相待shbisnr,dnggumxingdi解释:指别人已有进步,不能再用老……无界联盟喜联打破传统营销模式作者:峰缃王道如果有人告诉你,无需囤货,首次消费还可以免单,这样的营销模式,你会不会以为是天上掉馅饼?如果你没有听过这样的营销模式,真的是孤陋寡闻了,这样的营销模式就是由……打卡稻田边特色烤牛肉,每天排队等位轰动整个山城的大街小巷稻田边特色烤牛肉,是稻田边餐饮管理有限公司旗下品牌,自创办以来,一直苦心专注于特色烤肉的核心技术秘制配方的研发和特色烤肉加盟,与此同时也注重企业品牌影响力的提升,近年来又掀起了……显存不足(如何设置内存分给显存)显存不足(如何设置内存分给显存)2080Ti竟然可以当V100来用,这个功能有点儿厉害。自深度学习大潮兴起,模型就朝着越来越大、越来越深的方向发展。2012年,拥有……新疆南疆旅游线路最佳摄影线路现在,新疆旅游景点绝大部分都全面放开了,想去新疆旅游摄影的朋友也开始行动起来。有的朋友想自驾,但是新疆太大了,开车和安排住宿就很折腾了。虽然网上有一些攻略,但都大同小异,很难包……汉口,遇见最熟悉的陌生人CBDDISCOVERY听说老汉口去了会迷路汉口二环内,有一片截然不同的神秘地带。这里种楼如种菜,超高层建筑插一棵,长一片,简直是摩天楼的黑土地,塔吊的KTV……两份意外险怎么理赔(买2份意外保险能理赔两份吗)两份意外险怎么理赔(买2份意外保险能理赔两份吗)最近,有朋友在后台留言说,我买了好几家保险公司的产品,先买了平安e生保,又买了定心丸,这些等发生理赔的时候都能重复赔吗?……海南ampquot十一ampquot掀旅游消费热潮高端酒店受中新社海口10月9日电(记者尹海明)海南省旅文厅9日发布的信息显示,海南十一长假掀起旅游消费热潮,离岛免税购物每天销售1亿元(人民币,下同)以上,消费水平显著提高。免税购……旅游时卡式炉气罐如何携带?旅行时用卡式炉做饭是很多自驾游朋友的选择,操作简单,便于携带!但是气罐内的气体是丙烷和异丁烷的混合气体,在收到强烈挤压或者高温时有发生爆炸的可能!怎么携带保管气罐才安全呢……建设项目三同时(建设项目三同时36号)建设项目三同时(建设项目三同时36号)第一章总则第一条为加强公司(简称公司)建设项目安全管理,预防和减少生产安全事故,保障从业人员生命和财产安全,根据《中华人民共和……zoom什么意思(Zoom中文名字)Zoom已变成一种文化现象。像Google、Hoover和Xerox一样,Zoom现在不仅是一个家喻户晓的名字,还成为了参加在线视频会议的代名词。Zoom(专有名词;动词……电桥电路(电桥平衡的条件和特点)电桥电路(电桥平衡的条件和特点)参考书籍《电路》第五版邱关源罗先觉、《电路原理》第二版江缉光、刘秀成、《电路》第五版学习指导分析补充内容《信号与……
香港一日游攻略(重庆一日游攻略详细)太狠!史上最严入学政策来了!学区房遭重创!天津以诗会友共话中秋高米店街道欢迎航天员回家过中秋陨石天坑,二十米深水处,有种怪鳑鲏,体型异常硕大微信可以查几天的聊天记录(有办法查到别人微信聊天记录)小姐姐们赶快看过来!多款新能源车型亮相成都车展,外形呆萌可爱孕妇化妆品成分(孕妇适合的化妆品)怎样下载歌曲到手机(怎样下载来电铃声到手机)移动怎么取消gprs(手机出现gprs怎么恢复)预设与生成(预设要为思维的生成埋下伏笔)鱼人二代的小说(鱼人二代的全部小说顺序)科普下等比数列q是怎么算的及等比数列求通项方法儿童补铁口服液有哪些危害火爆抖音运营课程让你从零起步到百万粉丝大咖教研组工作计划等待黑客查宾馆记录是真是假(输身份证号码查住酒店)从你的专业看,哪些消费属于智商税或者给一些消费建议?孕妇超重会有哪些危险拔丝红薯怎么做?开车有套路,直通车开车基本法则怎样查别人手机定位(怎么定位别人的手机所在位置)会计财务实习报告亲爱的,我真的不想和你离婚

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形