README.md

GE自动融合性能对比

简介

GE自动融合性能对比,是指对开启自动融合后的融合算子融合前后的性能进行对比。

使用前准备

约束

仅支持TensorFlow框架。

环境准备

  • 硬件环境请参见《昇腾产品形态说明》。

  • 软件环境请参见CANN快速安装安装配套版本的CANN Toolkit开发套件包和ops算子包并配置CANN环境变量。

  • torch_npu版本大于等于7.2.0,Pytorch仅支持v2.6.0、v2.7.1,具体安装方式请参见《Ascend Extension for PyTorch》的“安装Pytorch > 方式一:二进制软件包安装”章节。

  • 执行构建脚本:

    git clone https://gitcode.com/Ascend/msprof-analyze
    cd msprof-analyze
    # 安装依赖
    pip install -r requirements.txt
    # 构建图执行的so
    cd misc/autofuse_performance_comparison
    bash build.sh
    

    脚本执行成功后,autofuse_performance_comparison/lib64路径下生成ExecuteGraph_C.so。

数据准备

  1. 开启自动融合开关。

    export AUTOFUSE_FLAGS="--enable_autofuse=true"
    

    自动融合开关的更多介绍,请参见《AutoFuse使能方式》。

  2. TensorFlow模型运行时开启datadump和自动融合,获取datadump数据和Build图。

    1. 开启datadump,请参见《准备NPU侧dump数据和计算图文件》。

    2. 开启graphdump,可设置以下几个环境变量:

      export PRINT_MODEL=1
      export DUMP_GE_GRAPH=1
      export DUMP_GRAPH_LEVEL=1
      export DUMP_GRAPH_PATH=<dump_path>
      

      关于这些环境变量的具体含义,请参见《dump图文件环境变量》。

  3. 数据处理。

    1. dump数据文件转换成npy文件,可以得到对应融合算子的输入和输出,请参见《dump数据文件Format转换》。

      例如AscBackend.autofuse_pointwise_0_Abs_Add.1.59.1767681027598365转换为npy文件可以得到AscBackend.autofuse_pointwise_0_Abs_Add.1.59.1767681027598365.input.0.npy、AscBackend.autofuse_pointwise_0_Abs_Add.1.59.1767681027598365.input.1.npy和AscBackend.autofuse_pointwise_0_Abs_Add.1.59.1767681027598365.output.0.npy。

    2. 整图txt文件(例如ge_proto_00000094_graph_1_Build.txt)转换为json格式。

      # 需要source CANN的环境变量
      atc --mode=5 --om=<graph_txt_file_path> --json=<graph_json_file_path>
      

GE自动融合性能对比

功能说明

对自动融合开关前后的性能进行对比。该功能通过autofuse_performance_comparison.py脚本实现,该脚本存放路径为:msprof-analyze/misc/autofuse_performance_comparison/autofuse_core

注意事项

命令格式

python3 autofuse_performance_comparison.py -f <whole_graph> -d <subgraph_dir> -p <dump_path> [-o <output_path>]

参数说明

参数 可选/必选 说明
-f
--whole_graph
必选 json格式的整图文件,例如ge_proto_00000094_graph_1_Build.json
-d
--subgraph_dir
必选 存放所有txt格式子图文件(例如:autofuse_pointwise_0_Abs_Add.txt)的目录。
-p
--dump_path
必选 存放所有融合算子npy格式的dump数据的目录。
-o
--output_path
可选 该目录下生成两个子目录autofuse_enabled和autofuse_disabled,分别保存自动融合开关开启和关闭时采集的性能数据,默认为当前路径。用户一般无需关注这个性能数据,只需要查看输出结果即可。

使用示例

完成使用前准备后,执行如下命令。

cd misc/autofuse_performance_comparison/autofuse_core
python3 autofuse_performance_comparison.py -f /data/graph_path/ge_proto_00000094_graph_1_Build.json -d /data/graph_path -p /data/dump_path

输出说明

autofuse_performance_comparison.py脚本执行完成后,在-o参数指定的路径下生成autofuse_performance_comparison_result_{timestamp}.xlsx文件,文件详细介绍请参见输出结果文件说明

输出结果文件说明

GE自动融合性能对比的输出结果在autofuse_performance_comparison_result_{timestamp}.xlsx中呈现。内容如图所示:

GE自动融合性能对比结果

字段说明

字段 说明
Name 融合算子名称。
autofuse_disabled和autofuse_enabled 表示自动融合开关是否开启。
Duration(us) 融合算子耗时,单位us。
Duration Diff Ratio 融合算子耗时占融合前算子总耗时的百分比。

其他表头详细介绍请参见op_summary中aic_metrics为PipeUtilization时的字段说明。

输出结果分析:

融合算子耗时占融合前算子总耗时的百分比小于100%,则认为融合算子性能提升,反之则认为融合算子性能下降。