概述
本节介绍AOE相关概念、架构和调优流程。
通常情况下,Atlas 200I A2 加速模块(RC)、Atlas 500 A2 智能小站和Atlas 200I SoC A1核心板不安装Ascend-cann-toolkit包,但如果需要使用AOE远程调优功能时,则必须安装Ascend-cann-toolkit包,需保证至少有10G的硬盘空间来安装Ascend-cann-toolkit包。
AOE
AOE(Ascend Optimization Engine)是一款自动调优工具,作用是充分利用有限的硬件资源,以满足算子和整网的性能要求。
AOE通过生成调优策略、编译、在运行环境上验证的闭环反馈机制,不断迭代出更优的调优策略,最终得到最佳的调优策略。从而可以更充分利用硬件资源,不断提升网络的性能,达到最优的效果。
图1 AOE构架
- Application层:调优入口,支持AOE进程入口。
- Tuning层:调优模式,支持以下类型:
- 子图调优:通过SGAT(SubGraph Auto Tuning),对子图切分策略进行调优,通过在运行环境上验证获得真实性能,最终将最优的调优策略固化至模型知识库,并获取优化后的模型。
- 算子调优:通过OPAT(Operator Auto Tuning),对算子进行调优,通过在运行环境上验证获取真实性能,最终将优选算子调优策略固化到算子知识库。
- Execute层:为执行层,支持编译(Compiler)和在运行环境上运行(Runner)。
推荐先进行子图调优,再进行算子调优。原因是:先进行子图调优会生成图的切分方式,子图调优后算子已经被切分成最终的shape了,再进行算子调优,会基于这个最终shape去做算子调优。如果优先算子调优,这时调优的算子shape不是最终切分后的算子shape,不符合实际使用场景。
SGAT简介
SGAT是一种提升子图性能的优化器。一张完整的网络,会被拆分成多个子图。针对每一个子图,通过SGAT生成不同的调优策略。SGAT的调优算法通过获取每个迭代的调优策略性能数据,找到最优的调优策略。从而实现对应子图的最优性能。调优的结果会通过图知识库的形式进行保存。
整个SGAT调优过程,支持断点恢复模式,能够在调优异常时,恢复断点继续进行调优。
子图调优的流程如图2所示。
父主题: AOE简介