保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

TVM加速模型,优化推断

  TVM是一个开源深度学习编译器,可适用于各类CPUs,GPUs及其他专用加速器。它的目标是使得我们能够在任何硬件上优化和运行自己的模型。不同于深度学习框架关注模型生产力,TVM更关注模型在硬件上的性能和效率。
  本文只简单介绍TVM的编译流程,及如何自动调优自己的模型。更深入了解,可见TVM官方内容:文档:https:tvm。apache。orgdocs源码:https:github。comapachetvm编译流程
  TVM文档DesignandArchitecture〔1〕讲述了实例编译流程、逻辑结构组件、设备目标实现等。其中流程见下图:
  从高层次上看,包含了如下步骤:导入(Import):前端组件将模型提取进IRModule,其是模型内部表示(IR)的函数集合。转换(Transformation):编译器将IRModule转换为另一个功能等效或近似等效(如量化情况下)的IRModule。大多转换都是独立于目标(后端)的。TVM也允许目标影响转换通道的配置。目标翻译(TargetTranslation):编译器翻译(代码生成)IRModule到目标上的可执行格式。目标翻译结果被封装为runtime。Module,可以在目标运行时环境中导出、加载和执行。运行时执行(RuntimeExecution):用户加载一个runtime。Module并在支持的运行时环境中运行编译好的函数。调优模型
  TVM文档UserTutorial〔2〕从怎么编译优化模型开始,逐步深入到TE,TensorIR,Relay等更底层的逻辑结构组件。
  这里只讲下如何用AutoTVM自动调优模型,实际了解TVM编译、调优、运行模型的过程。原文见CompilingandOptimizingaModelwiththePythonInterface(AutoTVM)〔3〕。准备TVM
  首先,安装TVM。可见文档InstallingTVM〔4〕,或笔记TVM安装〔5〕。
  之后,即可通过TVMPythonAPI来调优模型。我们先导入如下依赖:importonnxfromtvm。contrib。downloadimportdownloadtestdatafromPILimportImageimportnumpyasnpimporttvm。relayasrelayimporttvmfromtvm。contribimportgraphexecutor准备模型,并加载
  获取预训练的ResNet50v2ONNX模型,并加载:modelurl。join(〔https:github。comonnxmodelsraw,mainvisionclassificationresnetmodel,resnet50v27。onnx,〕)modelpathdownloadtestdata(modelurl,resnet50v27。onnx,moduleonnx)onnxmodelonnx。load(modelpath)准备图片,并前处理
  获取一张测试图片,并前处理成224x224NCHW格式:imgurlhttps:s3。amazonaws。commodelserverinputskitten。jpgimgpathdownloadtestdata(imgurl,imagenetcat。png,moduledata)Resizeitto224x224resizedimageImage。open(imgpath)。resize((224,224))imgdatanp。asarray(resizedimage)。astype(float32)OurinputimageisinHWClayoutwhileONNXexpectsCHWinput,soconvertthearrayimgdatanp。transpose(imgdata,(2,0,1))NormalizeaccordingtotheImageNetinputspecificationimagenetmeannp。array(〔0。485,0。456,0。406〕)。reshape((3,1,1))imagenetstddevnp。array(〔0。229,0。224,0。225〕)。reshape((3,1,1))normimgdata(imgdata255imagenetmean)imagenetstddevAddthebatchdimension,asweareexpecting4dimensionalinput:NCHW。imgdatanp。expanddims(normimgdata,axis0)编译模型,用TVMRelay
  TVM导入ONNX模型成Relay,并创建TVM图模型:targetinput(target〔llvm〕:)ifnottarget:targetllvmtargetllvmmcpucoreavx2targetllvmmcpuskylakeavx512Theinputnamemayvaryacrossmodeltypes。YoucanuseatoollikeNetrontocheckinputnamesinputnamedatashapedict{inputname:imgdata。shape}mod,paramsrelay。frontend。fromonnx(onnxmodel,shapedict)withtvm。transform。PassContext(optlevel3):librelay。build(mod,targettarget,paramsparams)devtvm。device(str(target),0)modulegraphexecutor。GraphModule(lib〔default〕(devdefault))
  其中target是目标硬件平台。llvm指用CPU,建议指明架构指令集,可更优化性能。如下命令可查看CPU:llcversiongrepCPUHostCPU:skylakelscpu
  或直接上厂商网站(如IntelProducts〔6〕)查看产品参数。运行模型,用TVMRuntime
  用TVMRuntime运行模型,进行预测:dtypefloat32module。setinput(inputname,imgdata)module。run()outputshape(1,1000)tvmoutputmodule。getoutput(0,tvm。nd。empty(outputshape))。numpy()收集优化前的性能数据
  收集优化前的性能数据:importtimeittimingnumber10timingrepeat10unoptimized(np。array(timeit。Timer(lambda:module。run())。repeat(repeattimingrepeat,numbertimingnumber))1000timingnumber)unoptimized{mean:np。mean(unoptimized),median:np。median(unoptimized),std:np。std(unoptimized),}print(unoptimized)
  之后,用以对比优化后的性能。后处理输出,得知预测结果
  输出的预测结果,后处理成可读的分类结果:fromscipy。specialimportsoftmaxDownloadalistoflabelslabelsurlhttps:s3。amazonaws。comonnxmodelzoosynset。txtlabelspathdownloadtestdata(labelsurl,synset。txt,moduledata)withopen(labelspath,r)asf:labels〔l。rstrip()forlinf〕Opentheoutputandreadtheoutputtensorscoressoftmax(tvmoutput)scoresnp。squeeze(scores)ranksnp。argsort(scores)〔::1〕forrankinranks〔0:5〕:print(classswithprobabilityf(labels〔rank〕,scores〔rank〕))调优模型,获取调优数据
  于目标硬件平台,用AutoTVM自动调优,获取调优数据:importtvm。autoschedulerasautoschedulerfromtvm。autotvm。tunerimportXGBTunerfromtvmimportautotvmnumber10repeat1minrepeatms0sinceweretuningonaCPU,canbesetto0timeout10insecondscreateaTVMrunnerrunnerautotvm。LocalRunner(numbernumber,repeatrepeat,timeouttimeout,minrepeatmsminrepeatms,enablecpucacheflushTrue,)tuningoption{tuner:xgb,trials:10,earlystopping:100,measureoption:autotvm。measureoption(builderautotvm。LocalBuilder(buildfuncdefault),runnerrunner),tuningrecords:resnet50v2autotuning。json,}beginbyextractingthetasksfromtheonnxmodeltasksautotvm。task。extractfromprogram(mod〔main〕,targettarget,paramsparams)Tunetheextractedtaskssequentially。fori,taskinenumerate(tasks):prefix〔Task2d2d〕(i1,len(tasks))tunerobjXGBTuner(task,losstyperank)tunerobj。tune(ntrialmin(tuningoption〔trials〕,len(task。configspace)),earlystoppingtuningoption〔earlystopping〕,measureoptiontuningoption〔measureoption〕,callbacks〔autotvm。callback。progressbar(tuningoption〔trials〕,prefixprefix),autotvm。callback。logtofile(tuningoption〔tuningrecords〕),〕,)
  上述tuningoption选用的XGBoostGrid算法进行优化搜索,数据记录进tuningrecords。重编译模型,用调优数据
  重新编译出一个优化模型,依据调优数据:withautotvm。applyhistorybest(tuningoption〔tuningrecords〕):withtvm。transform。PassContext(optlevel3,config{}):librelay。build(mod,targettarget,paramsparams)devtvm。device(str(target),0)modulegraphexecutor。GraphModule(lib〔default〕(devdefault))Verifythattheoptimizedmodelrunsandproducesthesameresultsdtypefloat32module。setinput(inputname,imgdata)module。run()outputshape(1,1000)tvmoutputmodule。getoutput(0,tvm。nd。empty(outputshape))。numpy()scoressoftmax(tvmoutput)scoresnp。squeeze(scores)ranksnp。argsort(scores)〔::1〕forrankinranks〔0:5〕:print(classswithprobabilityf(labels〔rank〕,scores〔rank〕))对比调优与非调优模型
  收集优化后的性能数据,与优化前的对比:importtimeittimingnumber10timingrepeat10optimized(np。array(timeit。Timer(lambda:module。run())。repeat(repeattimingrepeat,numbertimingnumber))1000timingnumber)optimized{mean:np。mean(optimized),median:np。median(optimized),std:np。std(optimized)}print(optimized:s(optimized))print(unoptimized:s(unoptimized))
  调优模型,整个过程的运行结果,如下:timepythonautotvmtune。pyTVM编译运行模型DownloadingandLoadingtheONNXModelDownloading,Preprocessing,andLoadingtheTestImageCompiletheModelWithRelaytarget〔llvm〕:llvmmcpucoreavx2Oneormoreoperatorshavenotbeentuned。Pleasetuneyourmodelforbetterperformance。UseDEBUGloggingleveltoseemoredetails。ExecuteontheTVMRuntimeCollectBasicPerformanceData{mean:44。97057118016528,median:42。52320024970686,std:6。870915251002107}Postprocesstheoutputclassn02123045tabby,tabbycatwithprobability0。621104classn02123159tigercatwithprobability0。356378classn02124075Egyptiancatwithprobability0。019712classn02129604tiger,Pantheratigriswithprobability0。001215classn04040759radiatorwithprobability0。000262AutoTVM调优模型〔Yn〕Tunethemodel〔Task125〕CurrentBest:156。96353。76GFLOPSProgress:(1010)4。78sDone。〔Task225〕CurrentBest:54。66241。25GFLOPSProgress:(1010)2。88sDone。〔Task325〕CurrentBest:116。71241。30GFLOPSProgress:(1010)3。48sDone。〔Task425〕CurrentBest:119。92184。18GFLOPSProgress:(1010)3。48sDone。〔Task525〕CurrentBest:48。92158。38GFLOPSProgress:(1010)3。13sDone。〔Task625〕CurrentBest:156。89230。95GFLOPSProgress:(1010)2。82sDone。〔Task725〕CurrentBest:92。33241。99GFLOPSProgress:(1010)2。40sDone。〔Task825〕CurrentBest:50。04331。82GFLOPSProgress:(1010)2。64sDone。〔Task925〕CurrentBest:188。47409。93GFLOPSProgress:(1010)4。44sDone。〔Task1025〕CurrentBest:44。81181。67GFLOPSProgress:(1010)2。32sDone。〔Task1125〕CurrentBest:83。74312。66GFLOPSProgress:(1010)2。74sDone。〔Task1225〕CurrentBest:96。48294。40GFLOPSProgress:(1010)2。82sDone。〔Task1325〕CurrentBest:123。74354。34GFLOPSProgress:(1010)2。62sDone。〔Task1425〕CurrentBest:23。76178。71GFLOPSProgress:(1010)2。90sDone。〔Task1525〕CurrentBest:119。18534。63GFLOPSProgress:(1010)2。49sDone。〔Task1625〕CurrentBest:101。24172。92GFLOPSProgress:(1010)2。49sDone。〔Task1725〕CurrentBest:309。85309。85GFLOPSProgress:(1010)2。69sDone。〔Task1825〕CurrentBest:54。45368。31GFLOPSProgress:(1010)2。46sDone。〔Task1925〕CurrentBest:78。69162。43GFLOPSProgress:(1010)3。29sDone。〔Task2025〕CurrentBest:40。78317。50GFLOPSProgress:(1010)4。52sDone。〔Task2125〕CurrentBest:169。03296。36GFLOPSProgress:(1010)3。95sDone。〔Task2225〕CurrentBest:90。96210。43GFLOPSProgress:(1010)2。28sDone。〔Task2325〕CurrentBest:48。93217。36GFLOPSProgress:(1010)2。87sDone。〔Task2525〕CurrentBest:0。000。00GFLOPSProgress:(010)0。00sDone。〔Task2525〕CurrentBest:25。5033。86GFLOPSProgress:(1010)9。28sDone。CompilinganOptimizedModelwithTuningDataclassn02123045tabby,tabbycatwithprobability0。621104classn02123159tigercatwithprobability0。356378classn02124075Egyptiancatwithprobability0。019712classn02129604tiger,Pantheratigriswithprobability0。001215classn04040759radiatorwithprobability0。000262ComparingtheTunedandUntunedModelsoptimized:{mean:34。736288779822644,median:34。547542000655085,std:0。5144378649382363}unoptimized:{mean:44。97057118016528,median:42。52320024970686,std:6。870915251002107}real3m23。904suser5m2。900ssys5m37。099s
  对比性能数据,可以发现:调优模型的运行速度更快、更平稳。参考笔记:startaicompiler〔7〕资料:2020TheDeepLearningCompiler:AComprehensiveSurvey〔8〕〔译〕深度学习编译器综述〔9〕2018TVM:AnAutomatedEndtoEndOptimizingCompilerforDeepLearning〔10〕〔译〕TVM:一个自动的端到端深度学习优化编译器〔11〕脚注
  〔1〕DesignandArchitecture:https:tvm。apache。orgdocsarchindex。html
  〔2〕UserTutorial:https:tvm。apache。orgdocstutorialindex。html
  〔3〕CompilingandOptimizingaModelwiththePythonInterface(AutoTVM):https:tvm。apache。orgdocstutorialautotvmrelayx86。html
  〔4〕InstallingTVM:https:tvm。apache。orgdocstutorialinstall。html
  〔5〕TVM安装:https:github。comikuokuostartaicompilerblobmaindocstvmtvminstall。md
  〔6〕IntelProducts:https:www。intel。comcontentwwwusenproductsoverview。html
  〔7〕startaicompiler:https:github。comikuokuostartaicompilerE7AC94E8AEB0
  〔8〕2020TheDeepLearningCompiler:AComprehensiveSurvey:https:arxiv。orgabs2002。03794
  〔9〕〔译〕深度学习编译器综述:https:www。jianshu。comped372af7ef09
  〔10〕2018TVM:AnAutomatedEndtoEndOptimizingCompilerforDeepLearning:https:www。usenix。orgconferenceosdi18presentationchen
  〔11〕〔译〕TVM:一个自动的端到端深度学习优化编译器:https:zhuanlan。zhihu。comp426994569

关于变化的范文第一篇有些时候,我也会像班里的同学一样,抱怨校园生活的云淡风清,枯燥无味,这种感觉学习苦闷时,越发显得明显。此时,我忽然明白为什么有些同学会有着ldquo;唯恐天下不乱r……商务部5月16日至22日食用农产品略有下降据商务部市场运行监测系统显示,5月16日至22日,全国食用农产品市场价格比前一周(下同)下降0。3。食用农产品市场:粮油价格略有波动,其中大米批发价格与前一周持平,面粉批……三四年前风靡一时的升降摄像头,为什么突然之间消失了?全面屏发展道路上,我们见到了许许多多奇形怪状的手机,比如挖孔屏、水滴屏、刘海屏、药丸屏等等,当然还有更具机械感的升降摄像头或升降机身,这些设计的存在,目的就是为了安放无处安放的……树根的咏物抒怀500作文【篇一:树根咏物抒怀】偶尔一次,我看到了一个因施工而被挖出来的大树根。和从地面上拔地而起的参天大树相比,大树傲然挺立,郁郁葱葱,像是一位苍劲无畏的英雄;树根却像乱蓬蓬的麻……细节之美带来全新体验三星GalaxyS22演绎时尚生活面对新世代女生颜值即正义的审美观念,时尚且精美的外观成为了潮流所向。一直以来,三星GalaxyS系列手机在设计方面都有着自己的独到之处,被誉为是智能手机的潮流风向标。全新的Ga……百度股价大涨,割韭菜还是有望继续拉升,业务增长实属惊人百度股价周四在纳斯达克上涨近14,此前这家中国互联网搜索和人工智能公司报告称,即使在中国的Covid19封锁期间,其云和人工智能业务的惊人增长也支持了好于预期的季度收入。……家电巨头也裁员,美的最近压力很大美的市值缩水了三千多亿。家电行业基本上被头部三家公司垄断,美的海尔跟格力,去年的收入占全行业占比超过百分之五十,净利润超过648亿,而a股家电行业去年的利润也不到五百亿。……小学朋友作文朋友1朋友是一把雨伞当你在失败的时候为你拨开乌云朋友是一个储蓄罐当你有秘密的时候为你严密保守朋友也是一本……俄罗斯将被迫违约,被禁止用美元还债,美元声誉损失大过俄罗斯俄乌冲突爆发后,美国和西方对俄罗斯发起了全面经济制裁,其中威力最大的就是金融封杀。美国和欧盟利用自己控制的美元和欧元体系,对俄罗斯发动了金融战,不仅把俄罗斯的几家主要的商业银行……我家的吊兰小学三年级作文在我家客厅的角落里,摆放着几盆枝叶繁茂的吊兰。为了能够更好的净化家里的空气,爸爸妈妈买回来了四盆吊兰。我给每一盆吊兰都编了号,想看看它们到底哪一盆长得最好。经过几天的观察……我一个开心果同学作文导语:我们班上有个开心果。他机制聪明。经常恩能够用一句话就把班上的同学都个都笑了。班上的让你都很喜欢他。以下是小编为大家收集的几篇题为我的同学是开心果的作文。供大家参考阅读。希……本草纲目五谷为养之绿豆篇绿豆,别名青小豆。《本草纲目》记载厚肠胃。作枕,明目,治头风头痛。除吐逆。治痘毒,利肿胀。把这种豆子叫作绿豆,是因为它的颜色是绿色的。原来的书中都把它叫作菉。……
我是一粒盐的说明文大家好!我的中文名字叫盐,我的化学名字叫氯化纳,我是一种白色的晶体,味道咸咸的。大海是我的。妈妈,海水蒸发之后,我就诞生了。虽然大家对我并不陌生,但是,你可千万不要小看我……小狗乐乐的人意作文400字周日,奶奶和我带乐乐出去用刷毛器刷毛。这次,刷掉下来的毛比往常多好几倍!我想:到春季了,‘乐乐’又开使大批大批地掉毛了!这次比去年好多,为什么呢?一开始,奶奶拿刷毛……我喜欢小猫的三年级作文猫作为性情温顺,聪明活泼的动物,作为家庭宠物已经有长久的历史,小编收集了我喜欢小猫的三年级作文,欢迎阅读。第一篇:我喜欢小猫我很喜欢我的小猫,而它也喜欢我。它虎头虎脑的,……夏季穿裤子,学会两原则三要素,造型时髦又高级裤子是日常中很常见的单品,穿裤子时一定要懂得利用一些小技巧,这样才能从整体上加亮,更好地实现造型感。其实夏季穿搭必须牢记这二个原则、三个要素,学会了这些小细节,不仅能轻松……嫁富豪老公的王津元越活越美!半裙丝巾精致优雅,50岁还有婴儿对于皮肤的保养和身材的管理,不仅会让自身看起来更加年轻,拥有健康、活力,而且在穿搭中也更能彰显出精致与优雅感,尤其是在现在的审美中,年龄界限越来越模糊,因此只要对皮肤与身材做了……脖子和腋下的小肉粒是什么?能直接用手揪掉吗?看完要记牢爱美之心人皆有之,大家都希望自己皮肤红润白皙有光泽毕竟每个人的形象问题还是非常重要的!那么在平时不注意保养难免会出现长斑、长痘、长皱纹的情况,尤其是有不良生活习惯的人群,……56岁的巩俐微胖也气质,穿衣简洁接地气,自然老去的样子真好看巩俐,又被称为巩皇,因为她每次走红地毯,所摆的造型,都是众卿平身,还因为她的身高骨架都比较大,给人霸气十足的感觉。年轻时的巩俐,是多少人心中的白月光呀,在长相和表情上,和……形容秋风大的词语和句子如今,秋风又起,树枝树叶交织出金色的育窿,落叶遍地,踩上去很柔软,好像此时此刻不胜凉意的心情。下面是小编分享的形容秋风的词语,欢迎大家阅读。形容秋风的词语秋风萧萧;……下棋老是输?来学学非常实用的象棋技巧口诀,学会棋艺倍增象棋已经有上千年的历史,在民间有着很广泛的群众基础,在公园、小区、街边等,都能见到下象棋的踪影。想必很多人都想学象棋,或者只是懂得了象棋棋子如何运动的,想要进一步提升棋力,却一……6月13起,中国足协被全球禁赛?关于中国足协被全球禁赛传闻,媒体人赵震发文给予解读,在媒体人看来全球禁赛是不可能得,一切都是自媒体的错误解读!而对于传闻被国际足联禁赛的原因让人啼笑皆非,中国女足功勋教头……秋天银杏叶的作文秋姑娘快乐地跳着优美的华尔兹来了。树叶渐渐地褪去了苍翠的光泽,在不知不觉中换上了金黄色的礼服。我摘下一片来,放到手中细细地抚摸。它不算细滑,但也不粗糙。秋风带走了它的水分……刘翔保持15年纪录被打破,橄榄球名将以12秒84夺冠,力压世当地时间6月12日,在美国纽约进行的田径洲际巡回赛纽约大奖赛上,男子110米栏项目诞生了新的赛会纪录,美国本土名将德文阿伦以12秒84的成绩,力压世锦赛冠军霍洛威,勇夺冠军。同……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网