Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

春ying作者知乎来源

深入理解AutoSchedule自动调优技术(一)

作者:春ying

来源:知乎

自动调优其实是编译器工作的一部分。编译器的前端解析高级语言,中端做相应的优化(自动调优在这个阶段),后端生成目标硬件代码。目前有不少研究团队在自动调优方向开展工作,学术界也出现了一些自动调优的成果,但往往被吐槽自动调优没有手工优化的效果好,对此我的看法是:目前自动调优整体属于研究探索期,学术界还在做不同的尝试,调优效果会在这个阶段慢慢提高。目前的自动调优可以解决的问题是:从0%到80%的优化,对于从没有优化经验的,用自动调优工具可以快速地达到一个不错的效果。

这篇文章会大致讲讲自动调优的主要模块,各个模块的内容,以及一些常见的问题和可展开研究的方向。本文可为大家学习和了解自动优化技术做参考。

自动调优模块主要负责自动搜索出目标硬件平台上算子的优化策略实现。

输入:

  • Op Algorithm description: 算子的算法描述
  • Target: 执行该算子的目标硬件

输出:

  • Optimized Schedule: 该算子的优化的调度策略实现

一般的自动调优可以分为以下两个模块:搜索模块和评估模块。

  • 搜索模块(Space exploration):
    • beam search
    • MCTS(Monte Carlo Tree Search)
    • Reinforce learning Tuning
  • 评估模块(Evaluation)
    • cost estimation(基于cost model)
    • correctness check
自动调优模块概览

在自动搜索模块,目前相关研究的论文尝试不同的搜索算法:贪婪搜索算法, 束搜索(Beam Search), 蒙特卡洛树搜索(MCT), 强化学习(Reinforce Learning),遗传算法(Genetic Algorithm)等方法来搜索最优的schedule。在搜索空间有限的情况下,这些启发式算法之间的区别更多是搜索效率(即多快找到搜索空间中的较优解),并不能对调优效果起到决定性的作用。影响调优效果的好坏的更关键因素是,如何自动生成高质量的candidate schedule,也就是搜索空间的生成,是一项值得研究的关键工作。

在评估模块,cost model是一个研究方向,可用神经网络/机器学习的方法来预测性能。但无论是机器学习模型(xgboost),还是CNN模型,还是LSTM模型,都不是最关键的因素,关键是给定algorithm+schedule,如何对这个输入进行表征(representation/featurization),抽取出能有效表征其计算量/访存相关的信息量,是评估性能的一个关键环节。

有这么一句话在业界广泛流传:“对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”

所以,对于自动调优的问题,要想自动调优的结果有所突破,一个是数据(搜索空间),一个是特征工程(从原始数据中的找出/构建出一些具有性能优化意义的特征,这就需要有一定优化经验的优化工程师来思考)。剩下的搜索算法/cost model的模型选择,仅仅是逼近上限而已。

自动调优相关问题 & 可以展开研究的工作:

  1. 搜索空间如何生成?如何从零生成schedule? 生成schedule的思路是什么?

一般来说,生成schedule可以从算法描述(algorithm expression)切入,把计算过程分为多个stage/func,每个stage有各自的schedule primitive, 每个schedule primitive有不同的参数;显然,直接暴力列举出所有可能是schedule是不现实,会导致搜索空间过大,而且生成的schedule可能大部分不可用/性能一般,我们希望能高效地生成schedule, 思路可以分层级(multi-level)进行,从粗粒度到细粒度进行(Coarse-to-fine), 这个方向后续文章进行专门讲解。

2. cost model的训练数据是什么?没有足够的数据怎么办?

从上面的流程图可以看出cost model的输入输出,训练数据应该 (algorithm+schedule, performance)。没有足够的训练数据可以生成随机的程序和随机生成相应的schedule。

3. 为什么要用cost model,为什么不直接在硬件上预测性能呢?

使用cost model的目的是加速性能预测,给定一个algorithm, 可能有大量的candidate schedules需要评估性能,直接在硬件上评估性能耗时长,希望可以通过cost model模型快速评估性能。而采用神经网络/机器学习模型的原因和好处是,计算机硬件模型是相当复杂的(多层级存储结构,乱序执行等),使用一个简单的手工设计模型,比较难覆盖计算机硬件的复杂性从而比较难达到比较理想的性能预估。

4. 给定一个algorithm+schedule,可以用什么来表征?也就是如何作特征(featurization)?

- operation count: 加减乘除计算量的统计
- memory access: 数据访问/存储相关的
- loop:循环遍历相关的
- parallel: 并行相关的
其他,待补充

5. 自动调优的前提?

自动调优的前提是,已经有抽象好的schedule原语,如果面对新的硬件/算法没有比较合适的schedule原语,那么就需要根据硬件特性/优化经验抽象出新的schedule primitive, 比如:适配DSP/NPU/FPGA,可能需要单独抽象一个针对dma数据搬运的schedule原语,再通过自动调优指导在哪个阶段搬运数据,每次搬运多少数据。

原文链接:https://zhuanlan.zhihu.com/p/370179489

理论强化学习机器学习调度自动调优
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

调度技术

调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以指硬件资源,如处理器、网络连接或扩展卡。 进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态,允许多位用户有效地同时共享系统资源,或达到指定的服务质量。 see planning for more details

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

模型选择技术

模型选择是从给定数据的一组候选模型中选择统计模型的任务。对于具有类似预测或解释力的候选模型,最简单的模型最有可能是最佳选择(奥卡姆剃刀)。

遗传算法技术

遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。 遗传算法通常实现方式为一种计算机模拟。对于一个最优化问题,一定数量的候选解可抽象表示为染色体,使种群向更好的解进化。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

知乎机构

知乎,中文互联网综合性内容平台,自 2010 年成立以来,知乎凭借认真、专业、友善的社区氛围,独特的产品机制,以及结构化、易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类,在诸多领域具有关键影响力的内容平台。知乎将AI广泛应用与社区,构建了人、内容之间的多元连接,提升了社区的运转效率和用户体验。知乎通过内容生产、分发,社区治理等领域的AI应用,也创造了独有的技术优势和社区AI创新样本。

zhihu.com
推荐文章
暂无评论
暂无评论~