全文翻译(四) TVM An Automated End-to-End Optimizing Compiler
全文翻譯(四) TVM An Automated End-to-End Optimizing Compiler
6.3 嵌入式GPU評(píng)估
對(duì)于移動(dòng)GPU實(shí)驗(yàn),在配備ARM Mali-T860MP4 GPU的Firefly-RK3399板上,運(yùn)行端到端管道。基線是供應(yīng)商提供的庫(kù),即ARM計(jì)算庫(kù)(v18.03)。
Figure 19: End-to-end experiment results on Mali-T860MP4. Two data types, flfloat32 and flfloat16, were evaluated.
如圖19所示,對(duì)于float16和float32,在三種可用模型上的表現(xiàn),都優(yōu)于基線(基線尚不支持DCGAN和LSTM)。加速比范圍為1.2×到1.6×6.4 FPGA加速器,評(píng)估Vanilla深度學(xué)習(xí)加速器,介紹TVM如何在在FPGA上原型化的通用推理加速器設(shè)計(jì)上,處理特定于加速器的代碼生成。
在本次評(píng)估中使用了Vanilla DeepLearning Accelerator(VDLA)——將以前加速器提案中的特征,提取到一個(gè)最低限度的硬件架構(gòu)中——展示TVM生成高效調(diào)度的能力,該調(diào)度可以針對(duì)專門(mén)的加速器。圖20顯示了VDLA體系結(jié)構(gòu)的高級(jí)硬件組織。VDLA編程為張量處理器,高效執(zhí)行高計(jì)算強(qiáng)度的算子(例如,矩陣乘法,高維卷積)。可以執(zhí)行加載/存儲(chǔ)操作,將阻塞的三維張量,從DRAM帶到SRAM的相鄰區(qū)域。為網(wǎng)絡(luò)參數(shù),層輸入(窄數(shù)據(jù)類型)和層輸出(寬數(shù)據(jù)類型),提供專門(mén)的片上存儲(chǔ)器。最后,VDLA提供了對(duì)連續(xù)加載,計(jì)算和存儲(chǔ)的顯式同步控制,最大化內(nèi)存和計(jì)算算子間的重疊。
Figure 20: VDLA Hardware design overview.
在低功耗PYNQ板上,實(shí)現(xiàn)了VDLA設(shè)計(jì),該板集成了時(shí)鐘頻率為667MHz的ARM Cortex A9雙核CPU和基于Artix-7的FPGA結(jié)構(gòu)。在這些有限的FPGA資源上,實(shí)現(xiàn)了一個(gè)時(shí)鐘頻率為200MHz的16×16矩陣向量單元,執(zhí)行8位值的乘積,在每個(gè)周期累加到32位寄存器中。此VDLA設(shè)計(jì)的理論峰值吞吐量約為102.4GOPS/s。為激活存儲(chǔ)分配了32kB的資源,為參數(shù)存儲(chǔ)分配了32kB的資源,為microcode緩沖區(qū)分配了32kB的資源,為寄存器文件分配了128kB的資源。這些片上緩沖區(qū)決不足以為單層ResNet,提供足夠的片上存儲(chǔ),無(wú)法對(duì)有效的內(nèi)存重用和延遲隱藏,進(jìn)行案例研究。
使用C Runtime API為VDLA構(gòu)建了一個(gè)驅(qū)動(dòng)程序庫(kù),該API構(gòu)造指令,推送到目標(biāo)加速器執(zhí)行。代碼生成算法將加速器程序轉(zhuǎn)換為一系列調(diào)用,轉(zhuǎn)換為Runtime API。添加專門(mén)的加速器后端,需要~Python中的2k LoC。
端到端ResNet評(píng)估。使用TVM在PYNQ平臺(tái)上,生成ResNet推理內(nèi)核,將盡可能多的層卸載到VDLA。
生成僅CPU和CPU+FPGA實(shí)現(xiàn)的調(diào)度。由于卷積深度較低,第一個(gè)ResNet卷積層,無(wú)法在FPGA上有效卸載,而是在CPU上計(jì)算。然而,ResNet中的所有其它卷積層,都適合于高效的floading。由于VDLA不支持支持這些操作,因此CPU上執(zhí)行了諸如剩余層和激活類的操作。
Figure 21: We offlfloaded convolutions in the ResNet workload to an FPGA-based accelerator. The grayed-out bars correspond to layers that could not be accelerated by the FPGA and therefore had to run on the CPU. The FPGA provided a 40x acceleration on offlfloaded convolution layers over the Cortex A9.
圖21將ResNet推理時(shí)間分解為僅CPU執(zhí)行和CPU+FPGA執(zhí)行。大部分計(jì)算都花費(fèi)在卷積層上,這些卷積層可以卸載到VDLA。對(duì)于這些卷積層,實(shí)現(xiàn)的加速比為40×。不幸的是,由于阿姆達(dá)爾定律,FPGA加速系統(tǒng)的整體性能,受到必須在CPU上執(zhí)行的部分工作負(fù)載的制約。擴(kuò)展VDLA設(shè)計(jì),支持這些其它算子,將有助于進(jìn)一步降低成本。
這個(gè)基于FPGA的實(shí)驗(yàn),展示了TVM適應(yīng)新體系結(jié)構(gòu)和所暴露的硬件本質(zhì)的能力。
7.相關(guān)工作
深度學(xué)習(xí)框架為用戶提供了方便的界面,表達(dá)DL工作負(fù)載,輕松部署到不同的硬件后端。雖然現(xiàn)有框架目前依賴于供應(yīng)商特定的tensor算子庫(kù),執(zhí)行工作負(fù)載,但可以利用TVM的堆棧為大量硬件設(shè)備,生成優(yōu)化的代碼。
高級(jí)計(jì)算圖DSL是表示和執(zhí)行高級(jí)優(yōu)化的典型方式。Tensorflow的XLA和最近推出的DLVM屬于這一類。這些工作中計(jì)算圖的表示是相似的,本文使用了高級(jí)計(jì)算圖DSL。雖然圖級(jí)表示非常適合高級(jí)優(yōu)化,但級(jí)別太高,無(wú)法在一組不同的硬件后端下優(yōu)化張量算子。以前的工作依賴于特定的降低規(guī)則,直接生成低級(jí)LLVM,或者求助于供應(yīng)商定制的庫(kù)。這些方法需要對(duì)每個(gè)硬件后端和變型算子組合,進(jìn)行大量工程設(shè)計(jì)。
Halide引入了分離計(jì)算和調(diào)度的思想。采用Halide的思想,在編譯器中重用現(xiàn)有的有用調(diào)度原語(yǔ)。
張量算子調(diào)度與GPU DSL和基于多面體的循環(huán)變換的其它工作有關(guān)。TACO介紹了一種在CPU上生成稀疏張量算子的通用方法。Weld是用于數(shù)據(jù)處理任務(wù)的DSL。特別關(guān)注解決GPU和專用加速器的DL工作負(fù)載的新調(diào)度挑戰(zhàn)。新原語(yǔ)可能被這些工作中的優(yōu)化管道所采用。
ATLAS和FFTW等高性能庫(kù),使用自動(dòng)調(diào)優(yōu)獲得最佳性能。張量理解應(yīng)用黑盒自動(dòng)調(diào)諧和多面體優(yōu)化CUDA內(nèi)核。OpenTuner和現(xiàn)有的超參數(shù)優(yōu)化算法,采用域無(wú)關(guān)搜索。預(yù)定義的成本模型,用于自動(dòng)調(diào)度Halid中的圖像處理管道。TVM的ML模型,使用有效的領(lǐng)域感知成本模型,該模型考慮了項(xiàng)目結(jié)構(gòu)。
基于分布式的調(diào)度優(yōu)化器,可以擴(kuò)展到更大的搜索空間,可以在大量受支持的后端上,找到最先進(jìn)的內(nèi)核。提供了一個(gè)端到端堆棧,可以直接從DL框架中獲取描述,與圖形級(jí)堆棧一起進(jìn)行聯(lián)合優(yōu)化。
盡管用于深度學(xué)習(xí)的加速器越來(lái)越流行,但如何有效地針對(duì)這些設(shè)備,構(gòu)建編譯堆棧仍不清楚。評(píng)估中使用的VDLA設(shè)計(jì),提供了一種總結(jié)類TPU加速器特性的通用方法,提供了一個(gè)關(guān)于如何為加速器編譯代碼的具體案例研究。
可能有利于將深度學(xué)習(xí)編譯為FPGA的現(xiàn)有系統(tǒng)。本文提供了一個(gè)通用的解決方案,通過(guò)張量化和編譯器驅(qū)動(dòng)的延遲隱藏,有效定位加速器。
8.結(jié)論
提出了一個(gè)端到端編譯堆棧,解決跨不同硬件后端的深度學(xué)習(xí)的基本優(yōu)化挑戰(zhàn)。系統(tǒng)包括自動(dòng)端到端優(yōu)化,這是從歷史上看,這是一項(xiàng)勞動(dòng)密集型和高度專業(yè)化的任務(wù)。
希望這項(xiàng)工作將鼓勵(lì)對(duì)端到端編譯方法的進(jìn)一步研究,為DL系統(tǒng)軟硬件協(xié)同設(shè)計(jì)技術(shù)打開(kāi)新的機(jī)會(huì)。
參考文獻(xiàn):
TVM An Automated End-to-End Optimizing Compiler
總結(jié)
以上是生活随笔為你收集整理的全文翻译(四) TVM An Automated End-to-End Optimizing Compiler的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 全文翻译(三) TVM An Autom
- 下一篇: 全文翻译(全文合集):TVM: An A