全文翻译(四) 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

全文翻译(四) TVM An Automated End-to-End Optimizing Compiler相关推荐

  1. 【TVM全文翻译】TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    目录 Abstract 1. Introduction 2. Overview 3. Optimizing Computational Graphs 4. Generating Tensor Oper ...

  2. 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样 ...

  3. 全文翻译(三) TVM An Automated End-to-End Optimizing Compiler

    全文翻译(三) TVM An Automated End-to-End Optimizing Compiler 5. 自动化优化 考虑到一组丰富的调度原语,剩下的问题是为DL模型的每一层,找到最佳的算 ...

  4. 全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 3.优化计算图 计算图是在DL框架中表示程序的常 ...

  5. 全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样的硬件 ...

  6. GNU sed 4.5 版参考文档全文翻译 各命令和随带20个示例详细解析(四)

    GNU sed 流编辑器 GNU sed 一个流编辑器(四) 5. 正则表达式:选择文本 5.1 sed正则表达式摘要 5.2 基础正则表达式和扩展正则表达式 5.3 基础正则表达式语法摘要 5.4 ...

  7. “利他主义者”乔治·普莱斯的一生(全文翻译自Independent)

    本文转载自"生态学文献分享",已获授权 图1. 乔治·普莱斯漫画(插图) 原文: George Price: the altruistic man who died trying ...

  8. 高山仰止 | “利他主义者”乔治·普莱斯的一生(全文翻译自Independent)

    本文转载自"生态学文献分享",已获授权 图1. 乔治·普莱斯漫画(插图) 原文: George Price: the altruistic man who died trying ...

  9. 《易经》全文翻译(值得收藏)

    1.<易经>中隐含的28条天规,大智慧! 一:以自我为中心的人,将困于人生最大的陷阱 人人都有"自我"--身体.思想.财产.名誉.地位等等.如果你是一个聪明人,不仅要为 ...

最新文章

  1. Android开发权威指南(第2版)新书发布
  2. 练习C语言二级编程题的一些问题
  3. dva处理_umi项目中dvaeffects异常统一处理
  4. 全球及中国铝行业产销需求与未来前景预测分析报告2022-2028年版
  5. 表达爱意的程序_如何像程序员一样表达爱意❤️
  6. debian 8 和centos 配置java 环境变量的正确姿态
  7. JAVA-幂等性(一):http幂等性
  8. ARINC429硬件层初探
  9. 仿美洽客服系统-gin框架内核独立自主源码开发在线客服系统
  10. OBJ(3D模型)文件格式
  11. SQL 2008升级SQL 2008 R2完全教程或者10 00 1600升级10 50 1600
  12. Python读取excel生成正态分布图
  13. Java前方交会后方交会编程_摄影测量后方交会、前方交会程序
  14. 截止频率的估算-例题
  15. python编程<十五>
  16. java 对 Map的遍历
  17. 天下苦微信久矣,头条欲抢滩登陆
  18. [CSDN帮助]勤写勋章说明
  19. 一个黑色全屏的计时器_一个蒙版,搞定层次感
  20. 进入攻坚队正在连接服务器,Win7系统dnf正在连接服务器如何解决?

热门文章

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
  2. 2022-2028年中国煤化工行业市场前景分析预测报告
  3. dataframe,python,numpy 问题索引2
  4. tableau问题汇总
  5. TensorFlow优化器及用法
  6. MVC、MVP和MVVM的优缺点
  7. 客快物流大数据项目(九):Docker常用命令
  8. Cache Aside Pattern(缓存模式)
  9. Docker的安装和版本详细介绍
  10. ubuntu 系统下安装 xlwt