跳转至

AI Compiler

百度

秋招面试时遇到高铁柱前辈。问了相关的问题(对AI专业的人可能是基础知识)

  1. nvcc编译器不好用吗?为什么要开发tvm之类的编译器?
  2. 答:首先,nvcc是类似与gcc, msvc(Microsoft Visual C++) 之类的传统的编译器,支持的是CUDA C/C++ 代码。
  3. 但是tvm编译器是张量编译器,支持的是python之类的代码,将其中的网络设计,编译拆解成各种算子,然后使用cudnn或者特定硬件的高效机器码来执行。

蔚来

数字信号处理器 (Digital signal processor)

HLO 简单理解为编译器 IR。

TVM介绍

https://tvm.apache.org

  1. TVM解决的问题:
  2. 2017年,deploy Deep learning(TF,Pytorch) everywhere(hardware).
  3. Before TVM,
    1. 手动调优:loop tiling for locality.
    2. operator fusion 算子融合。虽然性能高,但是部署不高效
  4. 编译优化思路引入深度学习
  5. 定义了算子描述到部署空间的映射。核心是感知调度空间,并且实现compute/schedule 分离
  6. TVM当前的发展
  7. 上层计算图表示:NNVM Relay Relax
  8. 底层优化方式:manual -> AutoTVM(schedule最优参数的搜索,基于AI的cost model) -> Ansor(也不再需要手动写AutoTVM模版,使用模版规则生成代码)
  9. TVM的额外工作
  10. HeteroCL: TVM + FPGA

  1. output Fusion
  2. 减少Global Memory Copy

把中间算子库替换成编译器?

暂时不好支持张量

AI自动调整变化来调优

自动调参。缺点:

  1. 需要人工写模版
  2. 人工导致解空间变小

随机各级循环应用优化策略(并行,循环展开,向量化

介绍了Ansor效果很好

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献