出自论文《TVM: An Automated End-to-End Optimizing Compiler for Deep Learning》2018和《Learning to Optimize Tensor Programs》2018,前者描述了TVM的整体框架,后者则主要介绍了AutoTVM使用的调优算法。部分内容参考了博客Learning to Optimize Tensor Programs解读 - 知乎 (zhihu.com),感谢知识分享。
1. 目标和背景
有这两种cost model:基于XGBoost的Gradient Tree Boosting Model(GTBM)和TreeGRU(另外一篇论文中叫做TreeRNN)。GTB需要对AST进行处理,提取出程序中的一些feature,然后才能进行分析,但是它可以较快的运行在CPU上。而TreeGRU可以直接喂AST,不需要对程序做处理,但是它在训练和推断的速度较慢,需要GPU来加速。
2.5 Objective Function
regression loss function:
由于其实只需要cost function能够分辨出调度之间运行时间的快慢关系,因此可以用下面的rank loss function:
作者使用bootstrapping去获得cost model的uncertainty estimate,然后用expected improvement (EI) and upper confidence bound (UCB)方法来做,效果似乎也不明显(这一块不是很了解,但是由于之前有讨论过用贝叶斯优化来做,所以放一下结果。)
4.3 迁移学习对比不用迁移学习的效果
用其他算子的历史数据来做迁移学习,会比不用更快得到更好的结果。
5. 其他工作
文中提到了以下这些工作
ATLAS《Automatically tuned linear algebra software》(1998)和FFTW《Fftw: an adaptive software architecture for the fft》(1998)是两篇黑盒优化的工作,《Automatically scheduling halide image processing pipelines》(2016)和《A practical automatic polyhedral parallelizer and locality optimizer》(2008)是model-based的工作。多面体优化的工作有《Polyhedral parallel code generation for cuda》(2013)和TC这种