AI Compiler
百度¶
秋招面试时遇到高铁柱前辈。问了相关的问题(对AI专业的人可能是基础知识)
- nvcc编译器不好用吗?为什么要开发tvm之类的编译器?
- 答:首先,nvcc是类似与gcc, msvc(Microsoft Visual C++) 之类的传统的编译器,支持的是CUDA C/C++ 代码。
- 但是tvm编译器是张量编译器,支持的是python之类的代码,将其中的网络设计,编译拆解成各种算子,然后使用cudnn或者特定硬件的高效机器码来执行。
蔚来¶
数字信号处理器 (Digital signal processor)
HLO 简单理解为编译器 IR。
TVM介绍¶
- TVM解决的问题:
- 2017年,deploy Deep learning(TF,Pytorch) everywhere(hardware).
- Before TVM,
- 手动调优:loop tiling for locality.
- operator fusion 算子融合。虽然性能高,但是部署不高效
- 编译优化思路引入深度学习
- 定义了算子描述到部署空间的映射。核心是感知调度空间,并且实现compute/schedule 分离
- TVM当前的发展
- 上层计算图表示:NNVM Relay Relax
- 底层优化方式:manual -> AutoTVM(schedule最优参数的搜索,基于AI的cost model) -> Ansor(也不再需要手动写AutoTVM模版,使用模版规则生成代码)
- TVM的额外工作
- HeteroCL: TVM + FPGA
- output Fusion
- 减少Global Memory Copy
把中间算子库替换成编译器?
暂时不好支持张量
AI自动调整变化来调优
自动调参。缺点:
随机各级循环应用优化策略(并行,循环展开,向量化
介绍了Ansor效果很好
需要进一步的研究学习¶
暂无
遇到的问题¶
暂无
开题缘由、总结、反思、吐槽~~¶
参考文献¶
无