ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全文翻译(四) TVM An Automated End-to-End Optimizing Compiler

2021-10-29 06:00:07  阅读:192  来源: 互联网

标签:Optimizing End FPGA TVM 加速器 算子 CPU VDLA


全文翻译(四) 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编程为张量处理器,高效执行高计算强度的算子(例如,矩阵乘法,高维卷积)。可以执行加载/存储操作,将阻塞的三维张量,从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

 

标签:Optimizing,End,FPGA,TVM,加速器,算子,CPU,VDLA
来源: https://www.cnblogs.com/wujianming-110117/p/15478516.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有