AI开发平台MODELARTS-优化算子执行:加速慢算子的执行速度

时间:2024-07-13 11:26:40

加速慢算子的执行速度

首先需要寻找执行速度比较慢的NPU算子列表,Kernel视图包含在NPU上执行的所有算子的信息,主要用于确认高耗时算子。

图7 Kernel视图

推荐基于以下思路尝试优化:

  1. 搜索Cast类算子,查看是否Cast类算子最大耗时超过30us或者总耗时占比超过1%,如果超过,需尝试启动混合精度训练,详见此处
    图8 Cast类算子
  2. 基于Accelerator Core排序,统计AI_CPU算子,如果有AI_CPU类算子执行时长超过1000us或者AI_CPU类算子总执行时长占比超过10%,可尝试修改代码替换API_CPU算子。
    需要注意:PyTorch Adaptor针对部分算子,会基于输入类型下发不同运行硬件的算子,所以除了使用同语义算子替换API_CPU算子外,还可以通过修改输入类型使算子下发到API_CORE上(比如torch.topk在参数为一维list使用API_CPU计算,多维参数则基于AI_CORE Vector计算)。
    图9 Accelerator Core排序
  3. 如果遇到算子运行期间NPU的计算单元和存储单元使用率都未达到80%(查看aiv_*_ratio和aic_*_ratio是否达到0.8),或者算子的“Block Dim”小于AI Core/Vector Core,可尝试使用AOE算子调优,提高NPU硬件资源利用率。
    图10 aiv_*_ratio
  4. 针对总耗时最长、平均执行耗时最长以及最大耗时的三种排序的TOP算子,可联系华为工程师获得帮助。
    图11 耗时排序
support.huaweicloud.com/bestpractice-modelarts/modelarts_10_2510.html