TVM 认识

什么是 TVM?

  • TVM 是一个针对 CPU、GPU 和专用加速器的开放式深度学习编译器堆栈。它旨在缩小以生产力为中心的深度学习框架与以性能或效率为导向的硬件后端之间的差距
  • TVM 将 keras、mxnet、pytorch、tensorflow、coreml、darknet 中的深度学习模型编译为各类硬件后端上可部署的最小模块
  • TVM 自动生成和优化更多后端上的张量运算符并提升性能的基础结构

TVM 的特点?

  • 不挑框架: 其输入时任意一个深度学习框架输出的模型,即该工具不挑模型,其输出是针对现实场景中的各类硬件,具体包括 Intel 的 CPU/GPU、NVIDIA 的 GPU、ARM 的 CPU\GPU、树莓派、FPGA、ASCI 等
  • 不挑设备: TVM 不像 TensoRT 那么局限,它几乎能够很好的支持市面上全部的硬件设备,这是它的一个强大之处。主要经过 LLCM 来支持 Intel 和 ARM CPU 等一些设备;经过 Opencl 来支持 ARM 的 MailGPU;经过 CUDA 来支持 NVIDIA 的设备;经过 Metal 来支持苹果的设备;经过 VTA 来很好的支持 FPGA 和 ASCI(即本身设计的芯片)
  • 多级模型优化机制:具体包括高级的 IR 优化和低级的图优化。除此以外,还有一个强大的工具就 autotvm,这个工具能够经过一些 ML 算法寻找到针对不一样硬件最优的一种卷积层实现方式,从而实现进一步的压缩和加速
  • 多种平台和语言的丰富支持: TVM 目前支持 Python 和 C 接口到嵌入式编译器堆栈。还提供了一个轻量级运行时,它能够直接运行在诸如 JavaScript、Java、Python 和 C 等平台上的 TVM 编译代码,这些平台包括 Android、IOS、树莓 PI 和 Web 浏览器

TVM 有哪 2 个级别的优化?

  • 执行高级操作融合、布局转换和内存管理等任务的计算图优化
  • 张量运算符优化和代码生成层,用于优化张量运算符