文档
注册

AOE简介

AOE

AOE(Ascend Optimization Engine)是一款自动调优工具,作用是充分利用有限的硬件资源,以满足算子和整网的性能要求。

AOE通过生成调优策略、编译、在运行环境上验证的闭环反馈机制,不断迭代出更优的调优策略,最终得到最佳的调优策略,从而可以更充分利用硬件资源,不断提升网络的性能,达到最优的效果。

图1 架构
  • Application层:调优入口,支持如下。

    昇腾910 AI处理器场景下,支持TensorFlow训练场景下调优和PyTorch训练场景下调优。

  • Tuning层:调优模式,支持以下类型。
    • 子图调优:通过SGAT(SubGraph Auto Tuning),对子图切分策略进行调优,通过在运行环境上验证获得真实性能,最终将最优的调优策略固化至模型知识库,并获取优化后的模型。
    • 算子调优:通过OPAT(Operator Auto Tuning),对算子进行调优,通过在运行环境上验证获取真实性能,最终将优选算子调优策略固化到算子知识库。
    • 梯度调优:通过GDAT(Gradient Auto Tuning),对梯度allreduce融合策略进行调优,通过在运行环境上验证获取真实性能,最终得到优选梯度allreduce算子融合策略。

    推荐先进行子图调优,再进行算子调优。原因是:先进行子图调优会生成图的切分方式,子图调优后算子已经被切分成最终的shape了,再进行算子调优,会基于这个最终shape去做算子调优。如果优先算子调优,这时调优的算子shape不是最终切分后的算子shape,不符合实际使用场景。

  • Execute层:为执行层,支持编译(Compiler)和在运行环境上运行(Runner)。

SGAT简介

SGAT是一种提升子图性能的优化器。一张完整的网络,会被拆分成多个子图。针对每一个子图,通过SGAT生成不同的调优策略。SGAT的调优算法通过获取每个迭代的调优策略性能数据,找到最优的调优策略,从而实现对应子图的最优性能。调优的结果会通过图知识库的形式进行保存。

整个SGAT调优过程支持断点恢复模式,能够在调优异常时,恢复断点继续进行调优。

子图调优的流程如图2所示。

图2 子图调优流程

OPAT简介

OPAT是一种提升算子性能的优化器。AOE将一张整图输入给OPAT,OPAT内部进行算子融合,将融合得到的图进行算子粒度切分,针对每一个融合算子子图生成不同的算子调优策略,从而实现最优的算子性能,并将得到的最优策略保存在算子知识库。

AOE当前版本仅支持使用DSL接口实现计算逻辑的AI Core算子的自动调优,支持的算子请参见算子列表

算子调优的流程如图3所示。

图3 算子调优流程

GDAT简介

GDAT是通过最大化反向计算与梯度聚合通信并行度,缩短通信拖尾时间的优化工具。分布式训练场景下,各个设备之间计算梯度后执行梯度聚合操作,梯度聚合算子的融合策略会影响反向计算结束后的通信拖尾时间,从而影响集群训练的性能和线性度。 一个较优的梯度数据切分原则为:尽可能使拖尾时间最短。

梯度调优的流程如图4所示。

图4 梯度调优流程

与Auto Tune的差异

Auto Tune仅针对算子运行性能进行优化,AOE在此基础上还新增了子图维度和多卡训练通信拖尾时间维度的优化,提升了整体的优化效果,后续有更多优化方向统一由AOE引擎承载。

OPAT继承了Auto Tune算子调优的基础功能,在保证算子调优效果不劣化的基础上提升了大多数场景的调优效率,同时采用进度条的方式进行调优进度展示,从而优化了用户体验。但Auto Tune算子调优中的如下可选功能暂时在AOE场景没有继承,如需使用可继续采用Auto Tune调优。

  • 使用ENABLE_TUNE_DUMP/TUNE_DUMP_PATH环境变量dump数据。
  • 基于dump数据进行msoptune离线调优。
  • 调优过程中生成“tune_show_{timestamp}_pidxxx”文件夹,并通过msoptune指定层停止调优。
  • 调优结束生成结果文件“tune_result_{timestamp}_pidxxx.json”,并通过msoptune --summary回显统计结果。

OPAT与Auto Tune算子调优生成的算子知识库文件是兼容的,用户在发起AOE调优后,用户知识库会统一迁移至${HOME}/Ascend/latest/data/aoe/custom/op/<soc_version>路径下,并且不会删除原路径下知识库文件,不需要手动迁移。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词