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