趋近智
手动优化代码需要为循环分块、向量 (vector)化和循环展开选择具体参数 (parameter)。对于单个矩阵乘法核,可能的有效调度方案数量很大。如果一个循环嵌套有 维,并且我们应用分块因子 ,那么仅这些参数的潜在组合可以计算为:
当与循环重排、线程绑定和内存范围决策结合时,总的配置空间呈指数级增长。这使得手动调优对于复杂的神经网络 (neural network)来说不切实际。
本章讨论通过自动调优实现内核生成的自动化。我们将优化搜索空间定义为给定计算图的所有合法变换的集合。你将学习编译器如何定义这些空间,并使用模拟退火和遗传算法等搜索算法来找出高性能调度方案。
在硬件上评估每个候选调度方案会产生瓶颈。为解决这个问题,我们引入了统计成本模型。这些模型使用机器学习 (machine learning)预测特定配置的吞吐量 (throughput),使搜索算法无需硬件执行即可估计性能。本文介绍了AutoTVM和Ansor等现代框架的架构,并对比了基于模板的方法和基于生成的方法。你将学习如何配置这些系统,以自动找到深度学习 (deep learning)算子的最优参数。
6.1 定义搜索空间
6.2 搜索算法:从随机到遗传
6.3 机器学习成本模型
6.4 Ansor 和 AutoTVM 架构
6.5 动手实践:ResNet块的自动调优