TVM-算子编译器前后端
前言
TVM
出现背景
TVM是什么
为什么用TVM,TVM解决了什么
当前问题:
TVM解决了
TVM如何解决
具体实现手段
如何设计搜索空间Search Space
优化策略
图优化 - 算子融合
图优化 - Layout Transform
张量优化 - 矩阵乘法 GEMM
张量优化 - 调度算法
张量优化 - 搜索空间
性能对比
挑战 && TVM能做的
VTA(Versatile Tensor Accelerator)
reference
前言
深度学习high level已经内卷, 那么深度学习+编译器呢?
在此向陈天奇大佬致敬。
注:本文为博主的学习笔记,所用的图都是截取的,侵权联系删。
TVM
出现背景
传统深度学习框架: 对上图的补充说明:
Graph IR:几层的Conv2d, Relu
Operators: 比如矩阵乘法
TVM栈如下图:
把Operators换成了Tensor Expr, 生成代码后交给LLVM,CUDA编译器。即,通过编译的方式去解决,优点是通用性强,可部署到任何有编译器的环境中(比如手机、汽车)。
AutoTVM:是learning based optimization, 用机器学习去优化的ML编译器
有了Tensor Expression, TVM会去声明一个计算应该怎么做,然后再通过Schedule调度优化,之后就可以得到结果。 因此不依赖于计算库。 当有新算子时,对于TVM只是新加了Schedule,对此新算子进行适配对于TVM而言很高效。
TVM是什么
深度学习代码自动生成方法,自动的为各种硬件生成可部署的优化代码。
TVM是由华盛顿大学在读博士陈天奇等人提出的深度学习自动代码生成方法,该技术能自动为大多数计算硬件生成可部署优化代码,其性能可与当前最优的供应商提供的优化计算库相比,且可以适应新型专用加速器后端
TVM:End to End learning-based deep learning compiler