aclgrphBuildModel支持的配置参数
基础功能
内存管理
|
内存复用是指按照生命周期和内存大小,把不冲突的内存重复使用,来降低网络内存占用。
{ge::ir_option::EXEC_DISABLE_REUSED_MEMORY, "0"} |
|
生成om模型文件时,是否将原始网络中的Const/Constant节点的权重外置,同时将节点类型转换为FileConstant类型。 离线场景,如果模型权重较大且环境对om离线模型大小有限制,建议开启外置权重将权重单独保存,来减小om大小。
{ge::ir_option::EXTERNAL_WEIGHT, "1"}
|
动态shape
说明:
使用应用工程进行模型推理时,需要在模型执行接口之前,调用aclmdlSetDatasetTensorDesc接口,用于设置真实的输入Tensor描述信息(输入shape范围);模型执行之后,调用aclmdlGetDatasetTensorDesc接口获取模型动态输出的Tensor描述信息;再进一步调用aclTensorDesc下的操作接口获取输出Tensor数据占用的内存大小、Tensor的Format信息、Tensor的维度信息等。 关于aclmdlSetDatasetTensorDesc、aclmdlGetDatasetTensorDesc等接口的具体使用方法,请参见《应用开发指南 (C&C++)》。 |
|
自动融合离线编译动态shape场景下,指定模型输入数据的hint shape,以支持该场景下符号化推导。 hint shape是模型编译时用户传入的一个提示shape值。如图1所示,模型中Data0、Data1和Data2的部分维度未知,但在模型执行时,用户会传入具有静态shape的输入Tensor。例如,在编译下图时,Data0的shape为[2, 3, 4, 2],Data1的shape为[2, 3, 1, 2],Data2的shape为[2, 3, 1, 2];因此,在编译模型时,s0的hint值为2,s1的hint值为3,s2的hint值为4,s3的hint值为2,s4的hint值为1。 该参数需要与INPUT_SHAPE配合使用,并且该参数需要为动态shape场景;不能与DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS同时使用。 参数取值:输入节点索引及shape信息,例如"input_index1:[n1,c1,h1,w1];input_index2:[n2,c2,h2,w2]",索引从0开始。 参数值格式:指定的参数必须放在双引号中,不同输入之间使用英文分号分隔,shape信息放在英文括号“[]”中。 参数值约束:针对INPUT_SHAPE设置范围的维度,INPUT_HINT_SHAPE设置的取值需要在其范围以内。 {ge::ir_option::INPUT_SHAPE, "input_0_0:1~10,32,208,208;input_1_0:16,64,100~208,100~208"} {ge::ir_option::INPUT_HINT_SHAPE, "0:[1,32,208,208];1:[16,64,100,100]" |
|
设置动态batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景。 该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS同时使用;且只支持N在shape首位的场景,即shape的第一位设置为"-1"。如果N在非首位场景下,请使用DYNAMIC_DIMS参数进行设置。 参数值格式:指定的参数必须放在双引号中,档位之间使用英文逗号分隔。
{ge::ir_option::INPUT_FORMAT, "NHWC"} {ge::ir_option::INPUT_SHAPE, "data:-1,3,416,416"}, {ge::ir_option::DYNAMIC_BATCH_SIZE, "1,2,4,8"} |
|
设置输入图片的动态分辨率参数。适用于执行推理时,每次处理图片宽和高不固定的场景。 该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_DIMS同时使用。 参数取值: "imagesize1_height,imagesize1_width;imagesize2_height,imagesize2_width"。 参数值格式:指定的参数必须放在双引号中,档位之间英文分号分隔,每档内参数使用英文逗号分隔。 {ge::ir_option::INPUT_FORMAT, "NCHW"}, {ge::ir_option::INPUT_SHAPE, "data:8,3,-1,-1"}, {ge::ir_option::DYNAMIC_IMAGE_SIZE, "416,416;832,832"} |
|
设置ND格式下动态维度的档位。适用于执行推理时,每次处理任意维度的场景。 该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE同时使用。 参数取值:通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置。 参数值格式:所有档位必须放在双引号中,档位之间使用英文分号分隔,每档内参数使用英文逗号分隔;每档中的dim值与INPUT_SHAPE参数中的-1标识的参数依次对应,INPUT_SHAPE参数中有几个-1,则每档必须设置几个维度。 {ge::ir_option::INPUT_FORMAT, "ND"}, {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_FORMAT, "ND"}, {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 |
|
动态shape图中,是否允许AI CPU算子和AI Core算子并行运行。 动态shape图中,开关开启时,系统自动识别图中可以和AI Core并发的AI CPU算子,不同引擎的算子下发到不同流上,实现多引擎间的并行,从而提升资源利用效率和动态shape执行性能。
{ge::ir_option::AC_PARALLEL_ENABLE, "1"} |
算子编译与图编译
功能调试
精度调优
设置算子的精度模式。同一张图中不能与PRECISION_MODE_V2同时使用,建议使用PRECISION_MODE_V2参数。
上述路径中的${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,则安装后文件存储路径为:/usr/local/Ascend/cann。
{ge::ir_option::PRECISION_MODE, "force_fp16"} |
|
设置算子的精度模式。同一张图中不能与PRECISION_MODE同时使用,建议使用PRECISION_MODE_V2参数。
上述路径中的${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,则安装后文件存储路径为:/usr/local/Ascend/cann。
{ge::ir_option::PRECISION_MODE_V2, "fp16"} |
|
混合精度场景下,通过此参数指定混合精度黑白灰名单的路径以及文件名,自行指定哪些算子允许降精度,哪些算子不允许降精度。配置为路径以及文件名,文件为JSON格式。黑白灰名单,可从“${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json”内置优化策略文件中查看“precision_reduce”参数下的flag参数值(其中,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,则安装后文件存储路径为:/usr/local/Ascend/cann。xxx请根据实际产品进行选择。):
ops_info.json中可以指定算子类型,多个算子使用英文逗号分隔,样例如下: { "black-list": { // 黑名单 "to-remove": [ // 黑名单算子转换为灰名单算子,配置该参数时,请确保被转换的算子已经存在于黑名单中 "Xlog1py" ], "to-add": [ // 白名单或灰名单算子转换为黑名单算子 "Matmul", "Cast" ] }, "white-list": { // 白名单 "to-remove": [ // 白名单算子转换为灰名单算子,配置该参数时,请确保被转换的算子已经存在于白名单中 "Conv2D" ], "to-add": [ // 黑名单或灰名单算子转换为白名单算子 "Bias" ] } } 上述配置文件样例中展示的算子仅作为参考,请基于实际硬件环境和具体的算子内置优化策略进行配置,黑白灰名单查询样例如下: "Conv2D":{ "precision_reduce":{ "flag":"true" } }, |
|
通过该参数自定义模型编译时算子的计算精度,模型中其他算子以PRECISION_MODE或PRECISION_MODE_V2指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名,例如:/home/test/customize_dtypes.cfg。
# 按照算子名称配置 Opname1::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… Opname2::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… # 按照算子类型配置 OpType::TypeName1:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… OpType::TypeName2:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… # 按照算子名称配置 resnet_v1_50/block1/unit_3/bottleneck_v1/Relu::InputDtype:float16,int8,OutputDtype:float16,int8 # 按照算子类型配置 OpType::Relu:InputDtype:float16,int8,OutputDtype:float16,int8 {ge::ir_option::CUSTOMIZE_DTYPES, "/home/test/customize_dtypes.cfg"} |
精度比对
性能调优
AOE
|
该参数需要与aclgrphBuildInitialize支持的配置参数中的BUFFER_OPTIMIZE参数配合使用,仅在数据缓存优化开关打开的情况下生效,通过利用高速缓存暂存数据的方式,达到提升性能的目的。 参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。 参数默认值:$HOME/Ascend/latest/data/aoe/custom/graph/<soc_version> {ge::ir_option::MDL_BANK_PATH, "$HOME/custom_module_path"} 加载子图调优后自定义知识库路径优先级:MDL_BANK_PATH参数加载路径>TUNE_BANK_PATH环境变量设置路径>默认子图调优后自定义知识库路径。
|
|
|
参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。 参数默认值:${HOME}/Ascend/latest/data/aoe/custom/op {ge::ir_option::OP_BANK_PATH, "$HOME/custom_tune_path"} 加载算子调优后自定义知识库路径优先级:TUNE_BANK_PATH环境变量设置路径>OP_BANK_PATH参数加载路径>默认算子调优后自定义知识库路径。
|
