工具概述
使用msOpGen工具完成自定义算子包部署后,可选择使用msOpST工具进行ST(System Test)测试,在真实的硬件环境中,对算子的输入输出进行测试,以验证算子的功能是否正确。
测试用例通常包括各种不同类型的数据输入和预期输出,以及一些边界情况和异常情况的测试。通过ST测试,可以确保算子功能的正确性,并且能够在实际应用中正常运行。
功能描述
- 根据用户定义并配置的算子期望数据生成函数,回显期望算子输出和实际算子输出的对比测试结果,具体请参见生成测试用例定义文件。
- 根据算子测试用例定义文件生成ST测试数据及测试用例执行代码,在硬件环境上执行算子测试用例,具体请参见生成/执行测试用例。
- 自动生成运行报表(st_report.json)功能,报表记录了测试用例信息及各阶段运行情况,具体请参见生成/执行测试用例。
- 自动生成算子调用核函数的上板测试框架,进行算子的测试验证,具体请参见生成单算子上板测试框架。
命令汇总
- 生成算子测试用例定义文件。
表1 生成算子测试用例定义文件的参数说明 参数名称
参数描述
是否必选
create
用于生成算子测试用例定义文件(*.json)。
是
-i,--input
host侧算子的实现文件路径(*.cpp文件),可配置为绝对路径或者相对路径。
是
-out,--output
生成文件所在路径,可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。
若不配置,则默认生成在执行命令的当前路径。
否
-m,--model
配置为TensorFlow模型文件的路径,可配置为绝对路径或者相对路径。
若配置此参数,工具会从TensorFlow模型文件中获取首层算子的shape信息,并自动dump出算子信息库定义文件中算子的shape、dtype以及属性的value值,如果dump出的值在算子信息库定义文件所配置的范围内,则会自动填充到生成的算子测试用例定义文件中;否则会报错。
须知:若配置此参数,系统中需要安装1.15或2.6.5版本的TensorFlow。
否
-q,--quiet
当前版本仅针对-m参数生效,代表是否进行人机交互。
若不配置-q参数,则会提示用户修改获取到的模型中的首层shape信息。
若配置了-q参数,则不会提示用户更改首层shape信息。
否
- 生成/执行测试用例。
表2 生成/执行测试用例的参数说明 参数名称
参数描述
是否必选
run
用于执行算子的ST测试用例。
是
-i,--input
算子测试用例定义文件(*.json)的路径,可配置为绝对路径或者相对路径。
是
-soc,--soc_version
配置为昇腾AI处理器的类型。
说明:如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy。
是
-out,--output
生成文件所在路径,可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。若不配置该参数,则默认生成在执行命令的当前路径。
否
-c,--case_name
- 配置为需要执行的case的名字,若需要同时运行多个case,多个case之间使用逗号分隔。
- 若配置为“all”,或者不配置此参数,代表执行所有case。
否
-d,--device_id
NPU设备ID,设置运行ST测试用例的昇腾AI处理器的ID。
若未设置此参数,默认为:0。
否
-err_thr,--error_threshold
配置自定义精度标准,取值为含两个元素的列表:"[threshold1,threshold2]"。
- threshold1:算子输出结果与标杆数据误差阈值,若误差大于该值则记为误差数据。
- threshold2:误差数据在全部数据占比阈值。若误差数据在全部数据占比小于该值,则精度达标,否则精度不达标。
若未设置此参数,默认值为:"[0.01,0.05]"。
取值范围为:"[0.0,1.0]"。
说明:- 配置的列表需加引号以避免一些问题。例如配置为:-err_thr "[0.01,0.05]"。
- 若测试用例json文件和执行msOpST命令时均配置该参数,以执行msOpST命令时配置的精度标准进行比对。若均未配置,则以执行msOpST命令时默认精度标准[0.01,0.05]进行比对。
否
-conf,--config_file
ST测试高级功能配置文件(msopst.ini)存储路径,可配置为绝对路径或者相对路径。
msopst.ini配置文件的详细说明请参见表1。
用户可通过修改msopst.ini配置文件,实现如下高级功能:
- ST测试源码可编辑。
- 已编辑的ST测试源码可执行。
- 设置host日志级别环境变量。
- 设置日志是否在控制台显示。
- 设置atc模型转换的日志级别。
- 设置atc模型转换运行环境的操作系统类型及架构。
- 设置模型精度。
- 读取算子在昇腾AI处理器上运行的性能数据。
否
-err_report,--error_report
针对比对失败的用例,获取算子期望数据与实际用例执行结果不一致的数据。若未设置此参数,默认为:“false”。
- true:针对比对失败的用例,将算子期望数据与实际用例执行结果不一致的数据保存在{case.name}_error_report.csv文件中。
- false:不保存比对失败的数据结果。
说明:
- 设置此参数为“true”时,获取的比对数据会根据每个case_name生成独立的csv文件,{case.name}_error_report.csv文件所在目录为{output_path}/{time_stamp}/{op_type}/run/out/test_data/data/st_error_reports。
- 单个csv文件保存数据的上限为5万行,超过则依次生成新的.csv文件,文件命名如:{case.name}_error_report0.csv。
否
- 生成单算子上板测试框架。
表3 生成单算子上板测试框架参数说明 参数名称
参数描述
是否必选
ascendc_test
生成Ascend C算子调用kernel函数的上板测试代码。
是
-i,--input
算子测试用例定义文件(*.json文件)的路径,可配置为绝对路径或者相对路径。
说明:- 指定的算子ST测试用例定义文件(*.json文件)仅支持配置一个测试用例。
- 测试用例中不支持配置多个type、format及shape。
是
-kernel,--kernel_file
Ascend C算子的kernel侧实现文件(*.cpp文件)路径,可配置为绝对路径或者相对路径。
是
-out,--output
测试框架代码输出路径,可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。
否
补充说明
msOpST工具其他参数说明可参考表4。