TVM神经编译器

文章目录

  • 什么是TVM
    • 传统的编译器:LLVM(low level virtual machine)
    • 神经网络编译器
    • TVM(tensor virtual machine)
  • TVM能做什么
    • how to use TVM

什么是TVM

本部分参考 “TVM等神经编译器概览:它是连接深度学习框架和硬件的桥梁” ,讲解通俗易懂

传统的编译器:LLVM(low level virtual machine)

TVM神经编译器_第1张图片
LLVM通过模块分为前端,中端(优化)和后端三部分。每当出现新的编程语言,只需要开发相应的前端,将编程语言转换成LLVM的中间表示;类似地,出现新的硬件架构,只需要开发相应的后端,对接上LLVM的中间表示。

神经网络编译器

TVM神经编译器_第2张图片

神经网络编译器:输入是深度学习训练框架训练出来的模型定义文件,输出是能够在不同硬件高效执行的代码。

  1. 最上层对接各个深度学习训练框架训练出来的算法模型(Tensorflow, Caffe, Pytorch, Mxnet等)。
  2. 图层级(High-level IR):神经网络的结构可以表示成计算图,图层级的操作则是对计算图进行一些和具体硬件和框架无关的操作,比如算子融合,内存分配优化,数据类型和数据维度的推导等。
  3. 算子层级(operator level/kernel level)算子层级主要是张量计算。为了实现这些计算在硬件上高效实现,发挥芯片的性能,通常硬件芯片配有专门优化的算子计算库,如Intel的MKL, Nvidia的CuDNN, TensorRT。这个层级需要支持每个硬件后端的算子实现。
  4. 各硬件后端:GPU, ARM CPU, X86 CPU, NPU等。

TVM神经编译器_第3张图片
各类深度学习编译器,其实TVM(tensor virtual machine) 较为突出。

TVM(tensor virtual machine)

TVM神经编译器_第4张图片

  1. 最高层级支持主流的深度学习前端框架,包括TensorFlow,MXNet,Pytorch等。
  2. Relay IR支持可微分,该层级进行图融合,数据重排等图优化操作。
  3. 基于tensor张量化计算图,并根据后端进行硬件原语级优化,autoTVM根据优化目标探索搜索空间,找到最优解。
  4. 后端支持ARM、CUDA/Metal/OpenCL、加速器VTA(Versatile Tensor Accelerator)。

TVM能做什么

  1. 帮助深度学习模型部署在一些常规编译器不支持的硬件上;
  2. TVM编译后的模型可以获得更快的推理速度
  3. software supprort

how to use TVM

常规的神经网络层有很多矩阵运算,每一个简单的矩阵乘/加背后都对应一套非常负责的手动设计的算子计算(比如上万行的tflite) 。

你可能感兴趣的:(芯片,芯片)