基本介绍

使用前须知

使用场景

对于纯静态shape网络或者shape变化较少的动态shape网络,如果您想快速提升网络模型执行性能,可以在网络部署时通过算子编译工具(op_compiler)编译生成静态Kernel包来提升算子调用性能。

调优原理

静态Kernel编译是指在编译时指定算子shape大小,运行时不需要指定shape大小。算子编译工具根据输入的算子信息统计文件,得到确定的shape信息,针对每一个shape都编译出一个算子二进制,从而实现提升算子执行效率和性能的目的。

静态Kernel编译的优势如下:

使用约束
  • 目前仅支持静态编译和调优编译模式。
  • 静态编译模式支持的AI处理器型号:
    • Atlas 训练系列产品
    • Atlas A2训练系列产品
  • 调优编译模式相关的约束:
    • 支持的AI处理器型号:Atlas A2训练系列产品
    • 不支持不同用户同时使用同一device进行调优。
    • 调优前,请确保关闭Profiling功能,避免影响调优结果。关闭Profiling功能具体操作请参见性能分析工具使用指南

整体流程

图1 使用静态Kernel提升性能的原理图

通过编译静态Kernel提升网络模型中算子执行性能的基本流程如图1所示,整个调优步骤如下:

  1. Dump算子信息。

    对算子调优前,需要先获取网络模型中的算子信息。

    • 方式1:若采用PyTorch的Python接口编程,通过Ascend PyTorch Profiler接口Dump算子json文件。
    • 方式2:若采用AscendCL的C++接口编程,直接调用aclopStartDumpArgsaclopStopDumpArgs接口Dump算子json文件。
  2. 编译静态Kernel包。
    通过算子编译工具对Dump的算子信息统计文件(*.json)进行编译并生成Kernel包。

    算子编译工具是昇腾CANN提供的用于进行算子编译生成算子二进制文件的命令行工具。当算子shape固定或者变化较少时,可使用该工具编译静态kernel包并安装,提升算子调用的性能。

    1. 选择编译模式。

      算子编译工具默认是静态编译模式。如果想要进一步提升算子性能,可尝试进行算子调优,即开启“tune”调优编译模式。

    2. 打包静态Kernel包。

      算子编译工具将编译生成的Kernel文件打包成run包。

  3. 安装静态Kernel包。

    将静态Kernel包上传到目标网络模型运行的服务器上,直接运行run包完成安装。

  4. 模型执行效果验证。

    安装静态Kernel包后,重新运行目标网络模型,比较安装静态Kernel包和未安装静态Kernel包的整网运行性能和单算子运行耗时。