昇腾社区首页
中文
注册

aclgrphBuildModel支持的配置参数

表1 aclgrphBuildModel支持的配置参数

参数

说明

INPUT_FORMAT

输入数据格式。

支持NCHW、NHWC、ND三种格式。

如果同时开启AIPP,在进行推理业务时,输入图片数据要求为NHWC排布。该场景下INPUT_FORMAT参数指定的数据格式不生效。

说明:

该参数仅针对动态Batch、动态分辨率和动态维度场景。

上述场景下,INPUT_FORMAT必须设置并且和所有Data算子的format保持一致,否则会导致模型编译失败。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

INPUT_SHAPE

模型输入数据的shape。

例如:"input_name1: n1,c1,h1,w1;input_name2: n2,c2,h2,w2"。指定的节点必须放在双引号中,节点中间使用英文分号分隔。

input_name必须是原始模型中的节点名称。

若原始模型为动态shape,例如input_name1:?,h,w,c,该参数必填。其中“?”为batch数,表示一次处理的图片数量。

如果设置为固定取值,例如,取值为“1,2,3...”,用于将动态shape的原始模型转换为固定shape的离线模型

说明:

该参数仅针对动态Batch、动态分辨率和动态维度场景。

上述场景下,INPUT_SHAPE为可选设置。如果不设置,系统直接读取对应Data节点的shape信息,如果设置,以此处设置的为准,同时刷新对应Data节点的shape信息。

芯片支持情况:

昇腾310 AI处理器,支持该参数。如果设置为“-1”,与DYNAMIC_BATCH_SIZE参数配合使用,用于设置动态batch档位参数,详细使用请参见DYNAMIC_BATCH_SIZE参数。

昇腾910 AI处理器,支持该参数。如果设置为“-1”,与DYNAMIC_BATCH_SIZE参数配合使用,用于设置动态batch档位参数,详细使用请参见DYNAMIC_BATCH_SIZE参数。

昇腾710 AI处理器,支持该参数。如果设置为“-1”,与DYNAMIC_BATCH_SIZE参数配合使用,用于设置动态batch档位参数,详细使用请参见DYNAMIC_BATCH_SIZE参数。

INPUT_SHAPE_RANGE

指定模型输入数据的shape range。该功能不能与DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS同时使用。

  • 支持按照name设置:"input_name1:[n1,c1,h1,w1];input_name2:[n2,c2,h2,w2]",例如:"input_name1:[8~20,3,5,-1];input_name2:[5,3~9,10,-1]"。指定的节点必须放在双引号中,节点中间使用英文分号分隔。input_name必须是转换前的网络模型中的节点名称, shape range值必须放在[]中。如果用户知道data节点的name,推荐按照name设置INPUT_SHAPE_RANGE。
  • 支持按照index设置:"[n1,c1,h1,w1],[n2,c2,h2,w2]",例如:"[8~20,3,5,-1],[5,3~9,10,-1]"。可以不指定节点名,默认第一个中括号为第一个输入节点,节点中间使用英文逗号分隔。按照index设置INPUT_SHAPE_RANGE时,data节点需要设置属性index,说明是第几个输入,index从0开始。
  • 动态维度有shape范围的用波浪号“~”表示,固定维度用固定数字表示,无限定范围的用-1表示;
  • 对于标量输入,也需要填入shape范围,表示方法为:[];
  • 对于多输入场景,例如有三个输入时,如果只有第二个第三个输入具有shape范围,第一个输入为固定输入时,仍需要将固定输入shape填入。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

OP_NAME_MAP

扩展算子(非标准算子)映射配置文件路径和文件名,不同的网络中某扩展算子的功能不同,可以指定该扩展算子到具体网络中实际运行的扩展算子的映射。

路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

文件内容示例如下:

OpA:Network1OpA

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

DYNAMIC_BATCH_SIZE

设置动态batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景。

该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS、INPUT_SHAPE_RANGE同时使用。

最多支持100档配置,每一档通过英文逗号分隔,每个档位数值限制为:[1~2048]。

例如:

{ge::ir_option::INPUT_SHAPE, "data:-1,3,416,416"}, 
{ge::ir_option::DYNAMIC_BATCH_SIZE, "1,2,4,8"}     

INPUT_SHAPE中的“-1”表示设置动态batch。

其他使用注意事项:

  • 如果通过该参数设置了动态batch,则使用应用工程进行模型推理时,需要在aclmdlExecute接口之前,增加aclmdlSetDynamicBatchSize接口,用于设置真实的batch档位。

    关于aclmdlSetDynamicBatchSize接口的具体使用方法,请参见应用软件开发指南 (C&C++)

  • 若用户执行推理业务时,每次处理的图片数量不固定,则可以通过配置该参数来动态分配每次处理的图片数量。例如用户执行推理业务时需要每次处理2张,4张,8张图片,则可以配置为2,4,8,申请了档位后,模型推理时会根据实际档位申请内存。
  • 如果用户设置的档位数值过大或档位过多,可能会导致模型编译失败,此时建议用户减少档位或调低档位数值。
  • 如果用户设置的档位数值过大或档位过多,在运行环境执行推理时,建议执行swapoff -a命令关闭swap交换区间作为内存的功能,防止出现由于内存不足,将swap交换空间作为内存继续调用,导致运行环境异常缓慢的情况。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

DYNAMIC_IMAGE_SIZE

设置输入图片的动态分辨率参数。适用于执行推理时,每次处理图片宽和高不固定的场景。

该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_DIMS、INPUT_SHAPE_RANGE同时使用。

最多支持100档配置,每一档通过英文分号分隔。

例如: "imagesize1_height,imagesize1_width;imagesize2_height,imagesize2_width",指定的参数必须放在双引号中,每一组参数中间使用英文分号分隔。

具体使用样例如下, INPUT_SHAPE中的“-1”表示设置动态分辨率。

INPUT_SHAPE="data:8,3,-1,-1" ,DYNAMIC_IMAGE_SIZE="416,416;832,832"

其他使用注意事项:

  • 如果模型编译时通过该参数设置了动态分辨率,则使用应用工程进行模型推理时,需要在aclmdlExecute接口之前,增加aclmdlSetDynamicHWSize接口,用于设置真实的分辨率。关于aclmdlSetDynamicHWSize接口的具体使用方法,请参见应用软件开发指南 (C&C++)
  • 如果用户设置的分辨率数值过大或档位过多,可能会导致模型编译失败,此时建议用户减少档位或调低档位数值。
  • 如果用户设置了动态分辨率,实际推理时,使用的数据集图片大小需要与具体使用的分辨率相匹配。
  • 如果用户设置的分辨率数值过大或档位过多,在运行环境执行推理时,建议执行swapoff -a命令关闭swap交换区间作为内存的功能,防止出现由于内存不足,将swap交换空间作为内存继续调用,导致运行环境异常缓慢的情况。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

DYNAMIC_DIMS

设置ND格式下动态维度的档位。适用于执行推理时,每次处理任意维度的场景。

该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE、INPUT_SHAPE_RANGE同时使用。

参数通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置,所有档位必须放在双引号中,每档中间使用英文分号分隔,每档中的dim值与INPUT_SHAPE参数中的-1标识的参数依次对应,INPUT_SHAPE参数中有几个-1,则每档必须设置几个维度。

支持的档位数取值范围为:(1,100],每档最多支持任意指定4个维度,建议配置为3~4档。

例如:

{ge::ir_option::INPUT_SHAPE, "data:1,-1"}, 
{ge::ir_option::DYNAMIC_DIMS, "4;8;16;64"}  
// 模型编译时,支持的data算子的shape为1,4; 1,8; 1,16;1,64
{ge::ir_option::INPUT_SHAPE, "data:1,-1,-1"}, 
{ge::ir_option::DYNAMIC_DIMS, "1,2;3,4;5,6;7,8"}  
// 模型编译时,支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

INSERT_OP_FILE

输入预处理算子的配置文件路径,例如aipp算子。

若配置了该参数,则不能对同一个输入节点同时使用INPUT_FP16_NODES参数。

配置文件路径:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

配置文件的内容示例如下:

aipp_op {
aipp_mode:static
input_format:YUV420SP_U8
csc_switch:true
var_reci_chn_0:0.00392157
var_reci_chn_1:0.00392157
var_reci_chn_2:0.00392157
}
说明:

配置文件详细配置说明,请参考ATC工具使用指南

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

PRECISION_MODE

选择算子精度模式。

  • force_fp16:表示算子支持fp16和fp32时,强制选择fp16。默认为force_fp16。
  • force_fp32:既支持float16又支持float32数据类型时,强制选择float32。
  • allow_mix_precision:表示使用混合精度模式。
  • allow_fp32_to_fp16:表示算子不支持fp32时,选择fp16。
  • must_keep_origin_dtype:表示保持原图精度。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

EXEC_DISABLE_REUSED_MEMORY

内存复用开关。

  • 1:关闭内存复用。如果网络模型较大,关闭内存复用开关时可能会造成内存不足,导致模型编译失败。
  • 0:开启内存复用。 默认为0。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

AUTO_TUNE_MODE

设置算子自动调优模式。用户可以控制TBE算子编译时,是否通过Auto Tune工具对算子进行调优,以便在昇腾AI处理器上寻找最好的性能配置。包括如下两种模式:

  • GA(Genetic Algorithm):遗传算法,用于设置Cube算子的调优性能,当前仅支持Conv2D卷积算子,depthwise、GEMM算子的调优性能。
  • RL(Reinforcement Learning):强化学习,用于设置Vector算子的调优性能。

如需支持多种模式,则需放在双引号中,中间用英文逗号分隔,例如"RL,GA"。若未配置该参数,表示自动关闭自动调优功能。

芯片支持情况:

昇腾310 AI处理器,支持该参数。关于Auto Tune工具的介绍和使用方法请参见CANN 开发工具指南》中的“Auto Tune工具使用指南”章节

昇腾910 AI处理器,支持该参数。关于Auto Tune工具的介绍和使用方法请参见CANN 开发工具指南》中的“Auto Tune工具使用指南”章节

昇腾710 AI处理器,支持该参数。关于Auto Tune工具的介绍和使用方法请参见CANN 开发工具指南》中的“Auto Tune工具使用指南”章节

OUTPUT_TYPE

网络输出数据类型:

  • FP32:推荐分类网络、检测网络使用。
  • UINT8:图像超分辨率网络,推荐使用,推理性能更好。
  • FP16:推荐分类网络、检测网络使用。

模型编译后,在对应的*.om模型文件中,上述数据类型分别以1、4、2枚举值呈现。

  • 若不指定具体数据类型,则以原始网络模型最后一层输出的算子数据类型为准。
  • 若指定了类型,则以该参数指定的类型为准。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

OUT_NODES

指定输出节点。

如果不指定输出节点(算子名称),则模型的输出默认为最后一层的算子信息,如果指定,则以指定的为准。

某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,既可以在模型编译时通过该参数指定输出某层算子,模型编译后,在相应.om模型文件最后即可以看到指定输出算子的参数信息,如果通过.om模型文件无法查看,则可以将.om模型文件转换成json格式后查看。

例如:"node_name1:0;node_name1:1;node_name2:0"。

指定的输出节点必须放在双引号中,节点中间使用英文分号分隔。node_name必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如node_name1:0,表示节点名称为node_name1的第0个输出。

芯片支持情况:

昇腾310 AI处理器,不支持该参数。

昇腾910 AI处理器,不支持该参数。

昇腾710 AI处理器,不支持该参数。

INPUT_FP16_NODES

指定输入数据类型为FP16的输入节点名称。该参数必填。

例如:"node_name1;node_name2",指定的节点必须放在双引号中,节点中间使用英文分号分隔。若配置了该参数,则不能对同一个输入节点同时使用INSERT_OP_FILE参数。

芯片支持情况:

昇腾310 AI处理器,不支持该参数。

昇腾910 AI处理器,不支持该参数。

昇腾710 AI处理器,不支持该参数。

LOG_LEVEL

设置显示日志的级别。包括如下取值:

  • debug:输出debug/info/warning/error/event级别的运行信息。
  • info:输出info/warning/error/event级别的运行信息。
  • warning:输出warning/error/event级别的运行信息。
  • error:输出/error/event级别的运行信息。
  • null:不输出日志。默认为null。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

OP_COMPILER_CACHE_MODE

用于配置算子编译磁盘缓存模式。

  • enable:表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
  • disable:表示禁用算子编译缓存。默认为disable。
  • force:表示强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。当用户的python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。

使用说明:

  • 该参数和OP_COMPILER_CACHE_DIR配合使用,且只有OP_DEBUG_LEVEL为0或3的情况下才能启用缓存功能。
  • 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型使用的缓存内容被清除而导致失败。
  • 建议模型最终发布时设置编译缓存选项为disable或者force。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

OP_COMPILER_CACHE_DIR

用于配置算子编译磁盘缓存的目录。

路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

如果参数指定的路径存在且有效,则在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。

默认值:$HOME/atc_data

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,不支持该参数。

昇腾710 AI处理器,支持该参数。

DEBUG_DIR

用于配置保存算子编译生成的调试相关的过程文件的路径,包括算子.o/.json/.cce等文件。

默认生成在当前路径下。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

OP_DEBUG_LEVEL

算子debug功能开关,取值:

  • 0:不开启算子debug功能,默认为0。
  • 1:开启算子debug功能,在当前目录下的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),用于后续工具进行AICore Error问题定位。
  • 2:开启算子debug功能,在当前目录下的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),并关闭ccec编译器的编译优化开关且打开ccec调试功能(ccec编译器选项设置为-O0-g),用于后续工具进行AICore Error问题定位。
  • 3:不开启算子debug功能,且在当前目录下的kernel_meta文件夹中保留.o和.json文件。
  • 4:不开启算子debug功能,在当前目录下的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件),生成TBE指令映射文件(算子cce文件*.cce)和UB融合计算描述文件({$kernel_name}_compute.json)。
须知:

模型编译时,建议配置为0或3。如果需要定位AICore Error问题,再选择调试开关选项1和2,是因为加入了调试功能会导致网络性能下降。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

MDL_BANK_PATH

加载模型调优后自定义知识库的路径。该参数需要与BUFFER_OPTIMIZE参数配合使用。

参数值:模型调优后自定义知识库路径。

参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。

参数默认值:${install_path}/compiler/data/fusion_strategy/custom$

如果默认路径下不存在自定义知识库,则会查找模型的内置知识库,该路径为:${install_path}/compiler/data/fusion_strategy/built-in

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,不支持该参数。

昇腾710 AI处理器,不支持该参数。

OP_BANK_PATH

加载Auto Tune调优后自定义知识库的路径。该参数不能与AUTO_TUNE_MODE参数同时使用。

参数值:Auto Tune调优后自定义知识库路径。

参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。

参数默认值:

GA调优后默认自定义知识库路径在CANN软件安装目录下的compiler/data/tiling/${soc_version}/custom/。

RL调优后默认自定义知识库路径在CANN软件安装目录下的compiler/data/rl/${soc_version}/custom/。

如果默认路径下不存在自定义知识库,则会查找Auto Tune的内置知识库。

如果模型转换前,通过TUNE_BANK_PATH环境变量指定了自定义知识库路径,模型转换时设置了OP_BANK_PATH参数,该场景下OP_BANK_PATH参数加载的自定义知识库路径不生效。以TUNE_BANK_PATH环境变量设置的自定义知识库路径为准。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

MODIFY_MIXLIST

配置混合精度黑白灰名单,配置为路径以及文件名,文件为json格式。

allow_mix_precision混合精度模式下,针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。用户可以在内置优化策略基础上进行调整,自行指定哪些算子允许降精度,哪些算子不允许降精度。

配置示例:
custom_op.parameter_map["modify_mixlist"].s = tf.compat.as_bytes("/home/test/ops_info.json")

ops_info.json中可以指定算子类型,多个算子使用英文逗号分隔,样例如下:

{
  "black-list": {                  // 黑名单
     "to-remove": [                // 黑名单算子转换为灰名单算子
     "Yolo"
     ],
     "to-add": [                   // 白名单或灰名单算子转换为黑名单算子
     "Matmul",
     "Cast"
     ]
  },
  "white-list": {                  // 白名单
     "to-remove": [                // 白名单算子转换为灰名单算子 
     "Conv2D"
     ],
     "to-add": [                   // 黑名单或灰名单算子转换为白名单算子
     "Bias"
     ]
  }
}

如何查询混合精度场景下算子的内置优化策略:内置优化策略在“OPP安装目录/opp/op_impl/built-in/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json”,例如:

"Conv2D":{
    "precision_reduce":{
        "flag":"true"
},
  • true:(白名单)允许将当前float32类型的算子,降低精度到float16。
  • false:(黑名单)不允许将当前float32类型的算子,降低精度到float16。
  • 不配置:(灰名单)当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

OP_PRECISION_MODE

设置具体某个算子的精度模式,通过该参数传入自定义的精度模式配置文件op_precision.ini,可以为不同的算子设置不同的精度模式。

ini文件格式要求:

AvgPoolV2=high_precision
ReduceMeanD=high_performance

该参数不能与OP_SELECT_IMPL_MODE、OPTYPELIST_FOR_IMPLMODE参数同时使用,若三个参数同时配置,则只有OP_PRECISION_MODE参数指定的模式生效。

该参数不建议配置,若使用高性能或者高精度模式,网络性能或者精度不是最优,则可以使用该参数,通过配置ini文件调整某个具体算子的精度模式。

芯片支持情况:

昇腾310 AI处理器,支持该参数。

昇腾910 AI处理器,支持该参数。

昇腾710 AI处理器,支持该参数。

SHAPE_GENERALIZED_BUILD_MODE

当前版本暂不支持。