昇腾社区首页
中文
注册

算子输入输出dump功能(图模式)

功能简介

Graph模式下,dump Ascend IR计算图上算子执行时的输入、输出数据,用于后续问题定位和分析,如算子运行性能或精度问题。

本功能与图结构dump功能是不同的功能,二者可以单独使用,也可共同用于用户定位精度问题。

使用方法

该功能通过torchair.get_npu_backend中compiler_config配置,示例如下,仅供参考不支持直接拷贝运行,参数介绍参见表1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import torch_npu, torchair
config = torchair.CompilerConfig()
# data dump开关:[必选]
config.dump_config.enable_dump = True
# dump类型:[可选],all代表dump所有数据
config.dump_config.dump_mode = "all"
# dump路径:[可选],缺省为当前执行目录
config.dump_config.dump_path = '/home/dump'
# 量化data dump开关:[可选],是否采集量化前的dump数据
config.dump_config.quant_dumpable = True
# 保存dump的步数,否则每一步都会保存
config.dump_config.dump_step = "0|1"
# 指定需要dump的算子
config.dump_config.dump_layer = "Add_1Mul_1 Add2"
npu_backend= torchair.get_npu_backend(compiler_config=config)
opt_model = torch.compile(model, backend=npu_backend)
表1 参数说明

参数名

参数说明

enable_dump

是否开启图模式下的数据dump功能,bool类型。

  • False(缺省值):不开启数据dump。
  • True:开启数据dump。

dump_mode

数据dump模式,用于指定dump算子的输入还是输出数据,字符串类型。

  • input:仅dump算子输入数据。
  • output:仅dump算子输出数据。
  • all(缺省值):同时dump算子输入和输出数据。

dump_path

dump数据的存放路径,字符串类型,缺省值为当前执行路径。支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。

说明:

注意,请确保该参数指定的路径确实存在,并且运行用户具有读、写操作权限。

quant_dumpable

如果是量化后的网络,可通过此参数控制是否采集量化前的dump数据,bool类型。

  • False(缺省值):不采集量化前的dump数据。因为图编译过程中可能优化量化前的输入/输出,此时无法获取量化前的dump数据。
  • True:开启此配置后,可确保能够采集量化前的dump数据。

dump_step

指定采集哪些迭代的dump数据。

字符串类型,默认值None,表示所有迭代都会产生dump数据。

多个迭代用“|”分割,例如:"0|5|10";也可以用"-"指定迭代范围,例如:"0|3-5|10"。

dump_layer

指定需要dump的算子名,多个算子名之间使用空格分隔,形如"Add1_in_0 Add2 Mul2"。

算子名获取方法:

通过CANN环境变量“DUMP_GE_GRAPH”dump整个流程各阶段的图描述信息,建议取3(精简版dump,即只显示节点关系)。

export DUMP_GE_GRAPH=3
设置环境变量后,在当前执行路径下生成ge_proto*.txt,示例如下,op中name字段为算子名。
graph {
  name: "online_0"
  input: "Add1_in_0:0"
  input: "Add1_in_1:0"
  op {
    name: "Add1_in_0" 
    type: "Data"
    input: ""
    attr {
      key: "OUTPUT_IS_VAR"
      value {
        list {
          b: false
          val_type: VT_LIST_BOOL
        }
      }
    }
    ......
  }
  op{
    name: "Add2"
    type: "Data"
    ......
  }
}
说明:

若指定的算子其输入涉及data算子,会同时将data算子信息dump出来。

产物说明

关于dump数据文件查看和解析的详细介绍请参考《CANN 精度调试工具用户指南》中“查看dump数据文件”章节

  • 获取dump数据文件

    结果文件存储在dump_path参数指定的目录${dump_path}/${time}/${device_id}/${model_name}/${model_id}/${data_index}。

    以${dump_path}配置/home/dump为例,结果目录为“/home/dump/2024112145738/0/ge_default_20200808163719_121/1/0”。

    • ${dump_path}:由dump_path参数指定,缺省为脚本所在路径。
    • ${time}:dump数据文件落盘的时间,格式为YYYYMMDDHHMMSS。
    • ${device_id}:设备ID。
    • ${model_name}:子图名称。可能存在多个文件夹,dump数据取计算图名称对应目录下的数据。如果${model_name}出现了“.”“/”“\”、空格时,转换为下划线表示。
    • ${model_id}:子图ID号。
    • ${data_index}:迭代数,用于保存对应迭代的dump数据。如果指定了dump_step,则data_index和dump_step一致;如果不指定dump_step,则data_index一般从0开始计数,每dump一个迭代的数据,序号递增1。
  • 解析dump数据文件
    • 解析为numpy文件。

      dump文件无法通过文本工具直接查看,可通过CANN包自带的msaccucmp.py脚本将dump文件转为numpy格式,借助PyCharm等工具查看。

      CANN包自带的msaccucmp.py脚本一般存放在${INSTALL_DIR}/tools/operator_cmp/compare路径下,${INSTALL_DIR}请替换为CANN软件安装后文件路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,安装后文件路径为:/usr/local/Ascend/ascend-toolkit/latest。命令格式如下:

      python3 msaccucmp.py convert -d dump_file [-out output] [-v version] [-t type]

      命令格式参数项说明如表2所示。

      表2 参数说明

      参数名

      参数说明

      是否必选

      -d

      --dump_file

      生成的dump文件。支持指定单个文件;单个路径;同时指定多个文件,文件名用逗号隔开,例如-d /{PATH}/dump_file1,/{PATH}/dump_file2。

      说明:

      注意,请确保该参数指定的路径确实存在,并且运行用户具有读、写操作权限。

      -out

      --output

      转换后的数据存放目录,缺省为当前执行路径。

      说明:

      注意,请确保该参数指定的路径确实存在,并且运行用户具有读、写操作权限。

      -v

      --version

      dump文件类型。

      • 1:代表protobuf序列化后的数据文件。
      • 2(缺省值):代表自定义格式的数据文件。

      -t

      --type

      输出文件的类型。

      • npy(缺省值):输出文件保存为numpy格式。
      • msnpy:输出文件保存为numpy格式,一般用于MindSpore场景。
      • bin:输出文件保存为binary格式。

    • 解析为txt文件。

      基于前文解析为numpy文件,可进一步通过numpy官方提供的能力转为txt文档进行查看。调用Python示例如下:

      1
      2
      3
      4
      5
      $ python3
      >>> import numpy as np
      >>> a = np.load("$HOME/xx.npy")
      >>> b = a.flatten()
      >>> np.savetxt("$HOME/xx.txt", b)
      

      转换为.txt格式文件后,维度信息、Dtype均不存在。详细的使用方法请参见numpy官网介绍。