NNVM AI框架编译器
NNVM AI框架編譯器
 深度學(xué)習(xí)已變得無處不在且不可或缺??吹綄υ诙喾N平臺(例如手機,GPU,IoT設(shè)備和專用加速器)上部署深度學(xué)習(xí)工作負載的需求不斷增長。TVM堆棧彌合深度學(xué)習(xí)框架與面向性能或效率的硬件后端之間的鴻溝。TVM堆棧使為深度學(xué)習(xí)框架輕松構(gòu)建端到端編譯變得容易。擁有適用于所有框架的統(tǒng)一解決方案更好。
 NNVM編譯器是一種開放式深度學(xué)習(xí)編譯器,用于將前端框架工作負載直接編譯到硬件后端。使用TVM堆棧中的兩級中間表示(IR)來構(gòu)建??梢詤⒖荚嫉腡VM公告,以獲取有關(guān)TVM堆棧的更多技術(shù)細節(jié)。借助TVM堆棧,NNVM編譯器可以:
 ? 在高級圖IR中表示并優(yōu)化常見的深度學(xué)習(xí)工作負載
 ? 轉(zhuǎn)換計算圖以最大程度地減少內(nèi)存利用率,優(yōu)化數(shù)據(jù)布局并融合不同硬件后端的計算模式。
 ? 提出從前端深度學(xué)習(xí)框架到裸機硬件的端到端編譯管道。
 
NNVM編譯器可以直接從深度學(xué)習(xí)框架(例如Apache MXNet)中獲取模型。支持模型交換格式,例如ONNX和CoreML。ONNX支持使NNVM能夠從PyTorch,Caffe2和CNTK編譯深度學(xué)習(xí)模型。CoreML前端支持將CoreML模型部署到非iOS設(shè)備。
 
優(yōu)化與部署分離
 
NNVM編譯器應(yīng)用圖級和張量級優(yōu)化,并共同優(yōu)化它們以獲得最佳性能。采用與現(xiàn)有深度學(xué)習(xí)框架不同的方法,后者將圖形優(yōu)化與部署運行時打包在一起。NNVM編譯器采用了編譯器的傳統(tǒng)知識,將優(yōu)化與實際部署運行時分開。這種方法提供了實質(zhì)性的優(yōu)化,但仍使運行時輕量級。編譯后的模塊僅取決于最小的TVM運行時,部署在Raspberry Pi或移動設(shè)備上時僅需300KB左右。
 性能
 NNVM編譯器仍在積極開發(fā)中,可以期待會有更多的改進,但是已經(jīng)開始看到令人鼓舞的結(jié)果。對它的性能進行了基準測試,并在兩種典型的硬件配置上將其與Apache MXNet進行了比較:Raspberry PI上的ARM CPU和AWS上的Nvidia GPU。盡管這兩款芯片在架構(gòu)上存在根本差異,但可以使用相同的基礎(chǔ)架構(gòu),只需要更改每種硬件的調(diào)度即可。
 Nvidia GPU
 GPU基準和調(diào)度將NNVM編譯器與Apache MXNet與CUDA8和cuDNN7作為Nvidia K80的后端進行了比較。這是一個非常強大的基準,因為Apache MXNet會打開自動調(diào)整功能,以從CuDNN中選擇最佳內(nèi)核。使用了MXNet中優(yōu)化的深度智能內(nèi)核來優(yōu)化MobileNet工作負載。
 
 
可以看出,NNVM編譯器生成的代碼勝過K80上的Apache MXNet。這些改進歸因于聯(lián)合圖級別和內(nèi)核級別的優(yōu)化。值得注意的是,NNVM編譯器可自行生成所有優(yōu)化的GPU內(nèi)核,而無需依賴諸如CuDNN之類的外部庫。
 樹莓派3b
 Rasberry Pi編譯堆棧將NNVM編譯器與帶有OpenBLAS和NNPack的Apache MXNet進行了比較。探索了使MXNet發(fā)揮最佳性能的設(shè)置:為3x3卷積打開了NNPACK中的Winograd卷積,啟用了多線程,并禁用了其他調(diào)度程序線程(因此,所有線程都被NNPack使用)。
可以看出,在ResNet18上,NNVM編譯器生成的代碼快兩倍。MobileNet上的差距主要是由于現(xiàn)有CPU DNN庫中缺乏深度卷積。NNVM編譯器利用直接直接生成有效的ARM代碼的優(yōu)勢。
 在構(gòu)建NNVM編譯器時,包含以下項目內(nèi)容。
 ? Theano:可能是最早的深度學(xué)習(xí)編譯器
 ? Halide:TVM使用HalideIR作為數(shù)據(jù)結(jié)構(gòu),以簡化數(shù)學(xué)運算和降低 low level lowering.。HalideIR衍生自Halide。當(dāng)在TVM中實施降低流程the lowering pipeline時,參考了Halide結(jié)構(gòu)。
 ? Loopy:使用整數(shù)集分析及其循環(huán)轉(zhuǎn)換原語。
總結(jié)
以上是生活随笔為你收集整理的NNVM AI框架编译器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Deep Learning部署TVM G
 - 下一篇: TVM在ARM GPU上优化移动深度学习