INPUT_FORMAT |
输入数据格式。
参数取值:
支持NCHW、NHWC、ND三种格式。
配置示例:
{ge::ir_option::INPUT_FORMAT, "NHWC"}
如果同时开启AIPP,在进行推理业务时,输入图片数据要求为NHWC排布。该场景下INPUT_FORMAT参数指定的数据格式不生效。
说明:
该参数仅针对动态BatchSize、动态分辨率和动态维度场景。
上述场景下,INPUT_FORMAT必须设置并且和所有Data算子的format保持一致,否则会导致模型编译失败。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
INPUT_SHAPE |
模型输入的shape信息。
参数取值:
- 模型为静态shape,INPUT_SHAPE参数为可选配置
- 若模型为单个输入,则shape信息为"input_name:n,c,h,w"。
- 若模型有多个输入,则shape信息为"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2";不同输入之间使用英文分号分隔,input_name必须是转换前的网络模型中的节点名称。
- 模型为动态shape,INPUT_SHAPE参数必须配置
若原始模型中输入数据的某个或某些维度值不固定,当前支持通过设置shape分档或设置shape范围两种方式转换模型。
- 设置shape分档,包括设置BatchSize档位、设置分辨率档位、设置动态维度档位。
设置INPUT_SHAPE参数时,将对应维度值设置为-1,同时配合使用DYNAMIC_BATCH_SIZE(设置BatchSize档位)或DYNAMIC_IMAGE_SIZE(设置分辨率档位)或DYNAMIC_DIMS(设置动态维度档位)参数。详细用法请参考DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS参数说明。
- 设置shape范围。
Atlas 200/300/500 推理产品
、
Atlas 200I/500 A2 推理产品
不支持设置shape范围。
设置INPUT_SHAPE参数时,可将对应维度的值设置为范围,例如1~10,设置的range值范围必须有效。
- 支持按照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必须是转换前的网络模型中的节点名称。如果用户知道data节点的name,推荐按照name设置。
- 支持按照index设置:"n1,c1,h1,w1;n2,c2,h2,w2",例如:"8~20,3,5,-1;5,3~9,10,-1"。可以不指定节点名,节点按照索引顺序排列,节点中间使用英文分号分隔。按照index设置shape范围时,data节点需要设置属性index,说明是第几个输入,index从0开始。
如果用户不想指定维度的范围或具体取值,则可以将其设置为-1,表示此维度可以使用>=0的任意取值,该场景下取值上限为int64数据类型表达范围,但受限于host和device侧物理内存的大小,用户可以通过增大内存来支持。
- 模型shape为标量
- 非动态分档场景:
shape为标量的输入,可选配置,例如模型有两个输入,input_name1为标量,即shape为"[]"形式,input_name2输入shape为[n2,c2,h2,w2],则shape信息为"input_name1:;input_name2:n2,c2,h2,w2",不同输入之间使用英文分号分隔,input_name必须是转换前的网络模型中的节点名称;标量的输入如果配置,则配置为空。
- 动态分档场景:
如果模型输入中既有标量shape,又有支持动态分档的shape,则标量输入不能忽略,必须配置。例如模型有三个输入,分别为A:[-1,c1,h1,w1]、B:[]、C:[n2,c2,h2,w2],则shape信息为"A:-1,c1,h1,w1;B:;C:n2,c2,h2,w2",标量输入B必须配置。
配置示例:
- 静态shape,例如某网络的输入shape信息,输入1:input_0_0 [16,32,208,208],输入2:input_1_0 [16,64,208,208],则INPUT_SHAPE的配置信息为:
{ge::ir_option::INPUT_SHAPE, "input_0_0:16,32,208,208;input_1_0:16,64,208,208"}
- 设置BatchSize档位的示例,请参见DYNAMIC_BATCH_SIZE。
- 设置分辨率档位的示例,请参见DYNAMIC_IMAGE_SIZE。
- 设置指定维度档位的示例,请参见DYNAMIC_DIMS。
- 设置shape范围的示例:
{ge::ir_option::INPUT_SHAPE, "input_0_0:1~10,32,208,208;input_1_0:16,64,100~208,100~208"}
- shape为标量
- 非动态分档场景
shape为标量的输入,可选配置。例如模型有两个输入,input_name1为标量,input_name2输入shape为[16,32,208,208],配置示例为:
{ge::ir_option::INPUT_SHAPE, "input_name1:;input_name2:16,32,208,208"}
上述示例中的input_name1为可选配置。
- 动态分档场景
shape为标量的输入,必须配置。例如模型有三个输入,shape信息分别为A:[-1,32,208,208]、B:[]、C:[16,64,208,208],则配置示例为(A为动态分档输入,此处以设置BatchSize档位为例):
{ge::ir_option::INPUT_SHAPE, "A:-1,32,208,208;B:;C:16,64,208,208"},
{ge::ir_option::DYNAMIC_BATCH_SIZE, "1,2,4"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
INPUT_SHAPE_RANGE |
该参数已废弃,请勿使用。若涉及指定模型输入数据的shape范围,请使用INPUT_SHAPE参数。
指定模型输入数据的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填入。
支持情况:
Atlas 推理系列产品
,支持。
Atlas 训练系列产品
,支持。
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
,支持。
Atlas 200I/500 A2 推理产品
,不支持。
Atlas 200/300/500 推理产品
,不支持。 |
OP_NAME_MAP |
扩展算子(非标准算子)映射配置文件路径和文件名,不同的网络中某扩展算子的功能不同,可以指定该扩展算子到具体网络中实际运行的扩展算子的映射。
路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。
配置示例:
OpA:Network1OpA
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
DYNAMIC_BATCH_SIZE |
设置动态batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景。
该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS同时使用;且只支持N在shape首位的场景,即shape的第一位设置为"-1"。如果N在非首位场景下,请使用DYNAMIC_DIMS参数进行设置。
参数取值:档位数,例如"1,2,4,8"。
参数值格式:指定的参数必须放在双引号中,档位之间使用英文逗号分隔。
参数值约束:档位数取值范围为(1,100],即必须设置至少2个档位;每个档位数值限制为:[1~2048]。
配置示例:
INPUT_SHAPE中的“-1”表示设置动态batch。
{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"}
详细使用示例以及使用注意事项请参见专题>动态BatchSize。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
DYNAMIC_IMAGE_SIZE |
设置输入图片的动态分辨率参数。适用于执行推理时,每次处理图片宽和高不固定的场景。
该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_DIMS同时使用。
参数取值: "imagesize1_height,imagesize1_width;imagesize2_height,imagesize2_width"。
参数值格式:指定的参数必须放在双引号中,档位之间英文分号分隔,每档内参数使用英文逗号分隔。
参数值约束:档位数取值范围为(1,100],即必须设置至少2个档位。
配置示例:
INPUT_SHAPE中的“-1”表示设置动态分辨率。
{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"}
详细使用示例以及使用注意事项请参见专题>动态分辨率。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
DYNAMIC_DIMS |
设置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,则每档必须设置几个维度。
参数值约束:支持的档位数取值范围为:(1,100],即必须设置至少2个档位,最多支持100档配置,建议配置为3~4档。
配置示例:
{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
详细使用示例以及使用注意事项请参见专题>动态维度。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
INSERT_OP_FILE |
输入预处理算子的配置文件路径,例如aipp算子。参数详细使用请参见专题>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
}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
PRECISION_MODE |
选择算子精度模式。同一张图中不能与PRECISION_MODE_V2同时使用,建议使用PRECISION_MODE_V2参数。
参数取值:
- force_fp32/cube_fp16in_fp32out:
配置为force_fp32或cube_fp16in_fp32out,效果等同,系统内部都会根据矩阵类算子或矢量类算子,来选择不同的处理方式。cube_fp16in_fp32out为新版本中新增的,对于矩阵计算类算子,该选项语义更清晰。
- force_fp16(默认值):
表示网络模型中算子支持float16和float32时,强制选择float16。
- allow_fp32_to_fp16:
- 对于矩阵类算子,使用float16。
- 对于矢量类算子,优先保持原图精度,如果网络模型中算子支持float32,则保留原始精度float32,如果网络模型中算子不支持float32,则直接降低精度到float16。
- must_keep_origin_dtype:
保持原图精度。
- 如果原图中某算子精度为float16,AI Core中该算子的实现不支持float16、仅支持float32和bfloat16,则系统内部会自动采用高精度float32。
- 如果原图中某算子精度为float16,AI Core中该算子的实现不支持float16、仅支持bfloat16,则会使用float16的AI CPU算子;如果AI CPU算子也不支持,则执行报错。
- 如果原图中某算子精度为float32,AI Core中该算子的实现不支持float32类型、仅支持float16类型,则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。
bfloat16类型仅在以下产品型号支持:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
Atlas 200I/500 A2 推理产品
- allow_mix_precision/allow_mix_precision_fp16:
配置为allow_mix_precision或allow_mix_precision_fp16,效果等同,均表示使用混合精度float16和float32数据类型来处理神经网络的过程。allow_mix_precision_fp16为新版本中新增的,语义更清晰,便于理解。
针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。
若配置了该种模式,则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:
- 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到float16。
- 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到float16,相应算子仍旧使用float32精度。
- 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
- allow_mix_precision_bf16:
表示使用混合精度bfloat16和float32数据类型来处理神经网络的过程。针对原始模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到bfloat16,从而在精度损失很小的情况下提升系统性能并减少内存使用;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。
若配置了该种模式,则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:
- 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到bfloat16。
- 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到bfloat16,相应算子仍旧使用float32精度。
- 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
该选项仅在以下产品型号支持:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
Atlas 200I/500 A2 推理产品
- allow_fp32_to_bf16:
- 对于矩阵计算类算子,使用bfloat16。
- 对于矢量计算类算子,优先保持原图精度,如果原始模型中算子支持float32,则保留原始精度float32;如果原始模型中算子不支持float32,则直接降低精度到bfloat16;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。
该选项仅在以下产品型号支持:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
Atlas 200I/500 A2 推理产品
上述路径中的${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。
参数值约束:
- 该参数默认为性能优先,后续推理时可能会导致精度溢出问题。如果推理时出现精度问题,可以参见“模型推理精度提升建议”进行定位。
- 如果用户聚焦精度问题,可以修改为其他取值,比如must_keep_origin_dtype。
配置示例:
{ge::ir_option::PRECISION_MODE, "force_fp16"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
PRECISION_MODE_V2 |
设置网络模型的精度模式。同一张图中不能与PRECISION_MODE同时使用,建议使用PRECISION_MODE_V2参数。
参数取值:
- fp16(默认值):
算子支持float16和float32数据类型时,强制选择float16。
- origin:
保持原图精度。
- 如果原图中某算子精度为float16,AI Core中该算子的实现不支持float16、仅支持float32和bfloat16,则系统内部会自动采用高精度float32。
- 如果原图中某算子精度为float16,AI Core中该算子的实现不支持float16、仅支持bfloat16,则会使用float16的AI CPU算子;如果AI CPU算子也不支持,则执行报错。
- 如果原图中某算子精度为float32,AI Core中该算子的实现不支持float32类型、仅支持float16类型,则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。
bfloat16类型仅在以下产品型号支持:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
Atlas 200I/500 A2 推理产品
- cube_fp16in_fp32out:
算子既支持float32又支持float16数据类型时,系统内部根据算子类型不同,选择不同的处理方式。
- mixed_float16:
表示使用混合精度float16和float32数据类型来处理神经网络。针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。
若配置了该种模式,则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:
- 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到float16。
- 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到float16,相应算子仍旧使用float32精度。
- 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
- mixed_bfloat16:
表示使用混合精度bfloat16和float32数据类型来处理神经网络。针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到bfloat16,从而在精度损失很小的情况下提升系统性能并减少内存使用;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。
若配置了该种模式,则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:
- 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到bfloat16。
- 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到bfloat16,相应算子仍旧使用float32精度。
- 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
该选项仅在以下产品型号支持:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
Atlas 200I/500 A2 推理产品
- mixed_hif8:开启自动混合精度功能,表示混合使用hifloat8(此数据类型介绍可参见Link)、float16和float32数据类型来处理神经网络。针对网络模型中float16和float32数据类型的算子,按照内置的优化策略,自动将部分float16和float32的算子降低精度到hifloat8,从而在精度损失很小的情况下提升系统性能并减少内存使用。当前版本不支持该选项。
若配置了该种模式,则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:
- 若取值为true(白名单),则表示允许将当前float16和float32类型的算子,降低精度到hifloat8。
- 若取值为false(黑名单),则不允许将当前float16和float32类型的算子降低精度到hifloat8,相应算子仍旧使用float16和float32精度。
- 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
- cube_hif8:表示若网络模型中的cube算子既支持hifloat8,又支持float16或float32数据类型时,强制选择hifloat8数据类型。当前版本不支持该选项。
上述路径中的${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。
参数值约束:
- 该参数默认为性能优先,后续推理时可能会导致精度溢出问题。如果推理时出现精度问题,可以参见“模型推理精度提升建议”进行定位。
- 如果用户聚焦精度问题,可以修改为其他取值,比如origin。
配置示例:
{ge::ir_option::PRECISION_MODE_V2, "fp16"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
ALLOW_HF32 |
该参数预留,当前版本暂不支持。
是否启用HF32自动代替float32数据类型的功能,当前版本该参数仅针对Conv类算子与Matmul类算子生效。
HF32是昇腾推出的专门用于算子内部计算的单精度浮点类型,与其他常用数据类型的比较如下图所示。可见,HF32与float32支持相同的数值范围,但尾数位精度(11位)却接近FP16(10位)。通过降低精度让HF32单精度数据类型代替原有的float32单精度数据类型,可大大降低数据所占空间大小,实现性能的提升。
参数取值:
- true:针对Conv类算子与Matmul类算子,使能FP32数据类型自动转换为HF32数据类型的功能。
具体哪些算子使能了该功能,请参见CANN软件安装后文件存储路径的opp/built-in/op_impl/ai_core/tbe/impl_mode/allow_hf32_matmul_t_conv_t.ini,该文件不支持用户修改。
- false:针对Conv类算子与Matmul类算子,不使能FP32数据类型自动转换为HF32数据类型的功能。
具体哪些算子未使能该功能,请参见CANN软件安装后文件存储路径的opp/built-in/op_impl/ai_core/tbe/impl_mode/allow_hf32_matmul_f_conv_f.ini,该文件不支持用户修改。
参数默认值:针对Conv类算子,使能FP32转换为HF32;针对Matmul类算子,不使能FP32转换为HF32。
使用约束:
支持情况:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 推理系列产品
:不支持
Atlas 训练系列产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
EXEC_DISABLE_REUSED_MEMORY |
内存复用开关。
参数取值:
- 0:(默认值)开启内存复用。
- 1:关闭内存复用。如果网络模型较大,关闭内存复用开关,会造成后续推理时Device侧内存不复用,从而导致内存不足。
配置示例:
{ge::ir_option::EXEC_DISABLE_REUSED_MEMORY, "0"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OUTPUT_TYPE |
网络输出数据类型。
参数取值:
- FP32:推荐分类网络、检测网络使用。
- UINT8:图像超分辨率网络,推荐使用,推理性能更好。
- FP16:推荐分类网络、检测网络使用。通常用于一个网络输出作为另一个网络输入场景。
- INT8
模型编译后,在对应的*.om模型文件中,数据类型以DT_FLOAT或DT_UINT8或DT_FLOAT16或DT_INT8值呈现。
配置示例:
{ge::ir_option::OUTPUT_TYPE, "FP32"}
参数值约束:
- 若不指定具体数据类型,则以原始网络模型最后一层输出的算子数据类型为准。
- 若指定了类型,则以该参数指定的类型为准。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
INPUT_FP16_NODES |
指定输入数据类型为FP16的输入节点名称。该参数必填。
例如:"node_name1;node_name2",指定的节点必须放在双引号中,节点中间使用英文分号分隔。若配置了该参数,则不能对同一个输入节点同时使用INSERT_OP_FILE参数。
配置示例:
{ge::ir_option::INPUT_FP16_NODES, "node_name1;node_name2"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
LOG_LEVEL |
设置显示日志的级别。
参数取值:
- debug:输出debug/info/warning/error级别的调试日志信息。
- info:输出info/warning/error级别的调试日志信息。
- warning:输出warning/error级别的调试日志信息。
- error:输出/error级别的调试日志信息。
- null:(默认值)不输出调试日志。
配置示例:
{ge::ir_option::LOG_LEVEL, "debug"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OP_COMPILER_CACHE_MODE |
用于配置算子编译磁盘缓存模式。
参数取值:
- enable:(默认值)表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
- force:启用算子编译缓存功能,区别于enable模式,force模式下会强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等,需要先指定为force用于先清理已有的缓存,后续再修改为enable模式,以避免每次编译时都强制刷新缓存。
- disable:表示禁用算子编译缓存,算子重新编译。
配置示例:
{ge::ir_option::OP_COMPILER_CACHE_MODE, "enable"}
使用约束:
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OP_COMPILER_CACHE_DIR |
用于配置算子编译磁盘缓存的目录。
参数值格式:路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。
默认值:$HOME/atc_data
配置示例:
{ge::ir_option::OP_COMPILER_CACHE_MODE, "enable"}
{ge::ir_option::OP_COMPILER_CACHE_DIR, "/home/test/data/atc_data"}
使用约束:
- 如果要自行指定算子编译磁盘缓存的路径,则需要与OP_COMPILER_CACHE_MODE配合使用。
- 如果参数指定的路径存在且有效,则在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。
- 用户请不要在默认缓存目录下存放其他自有内容,自有内容在软件包安装或升级时会同默认缓存目录一并被删除。
- 通过该参数指定的非默认缓存目录无法删除(软件包安装或升级时不会被删除)。
- 算子编译磁盘缓存路径,除OP_COMPILER_CACHE_DIR参数设置的方式外,还可以配置环境变量ASCEND_CACHE_PATH,几种方式优先级为:配置参数“OP_COMPILER_CACHE_DIR”>环境变量ASCEND_CACHE_PATH>默认存储路径。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
DEBUG_DIR |
用于配置保存算子编译生成的调试相关的过程文件的路径,过程文件包括但不限于算子.o(算子二进制文件)、.json(算子描述文件)、.cce等文件。
默认生成在当前路径下。
使用约束:
- 如果要自行指定算子编译的过程文件存放路径,需DEBUG_DIR参数与OP_DEBUG_LEVEL参数配合使用,且当OP_DEBUG_LEVEL取值为0时,不能使用DEBUG_DIR参数。
- 算子编译生成的调试文件存储路径,除DEBUG_DIR参数设置的方式外,还可以配置环境变量ASCEND_WORK_PATH,几种方式优先级为:配置参数“DEBUG_DIR”>环境变量ASCEND_WORK_PATH >默认存储路径。
配置示例:
{ge::ir_option::OP_DEBUG_LEVEL, "1"}
{ge::ir_option::DEBUG_DIR, "/home/test/module/out_debug_info"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OP_DEBUG_LEVEL |
算子debug功能开关,取值:
- 0:(默认值)不开启算子debug功能,在当前执行路径不生成算子编译目录kernel_meta。
- 1:开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹下生成*.o(算子二进制文件)、*.json文件(算子描述文件)和TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续分析AICore Error问题。
- 2:开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹下生成*.o(算子二进制文件)、*.json文件(算子描述文件)和TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续分析AICore Error问题,同时设置为2,还会关闭编译优化开关、开启ccec调试功能(ccec编译器选项设置为-O0-g)。
- 3:不开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹中生成*.o(算子二进制文件)和*.json文件(算子描述文件),分析算子问题时可参考。
- 4:不开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹下生成*.o(算子二进制文件)、*.json文件(算子描述文件)、TBE指令映射文件(算子cce文件*.cce)和UB融合计算描述文件({$kernel_name}_compute.json),可在分析算子问题时进行问题复现、精度比对时使用。
须知:
- 若OP_DEBUG_LEVEL配置为0,同时配置了OP_DEBUG_CONFIG参数,该场景下在当前执行路径会保留算子编译目录kernel_meta。
- 若OP_DEBUG_LEVEL配置为0,同时设置了NPU_COLLECT_PATH环境变量,则会始终保留编译目录kernel_meta;若设置了ASCEND_WORK_PATH环境变量,则保留在该环境变量指定路径下,若无ASCEND_WORK_PATH环境变量,则保留在当前执行路径。
- 训练执行时,建议配置为0或3。如果需要进行问题定位,再选择调试开关选项1和2,是因为加入了调试功能会导致网络性能下降。
- 配置为2(即开启ccec编译选项)时,会导致算子Kernel(*.o文件)大小增大。动态Shape场景下,由于算子编译时会遍历可能的Shape场景,因此可能会导致算子Kernel文件过大而无法进行编译,此种场景下,建议不要配置ccec编译选项。
由于算子Kernel文件过大而无法编译的报错日志示例如下:
message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o
- debug功能开关打开场景下,若模型中含有如下通算融合算子,算子编译目录kernel_meta中,不会生成下述算子的*.o、*.json、*.cce文件。
MatMulAllReduce
MatMulAllReduceAddRmsNorm
AllGatherMatMul
MatMulReduceScatter
AlltoAllAllGatherBatchMatMul
BatchMatMulReduceScatterAlltoAll
配置示例:
{ge::ir_option::OP_DEBUG_LEVEL, "1"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
MDL_BANK_PATH |
加载子图调优后自定义知识库的路径。
该参数需要与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环境变量设置路径>默认子图调优后自定义知识库路径。
- 如果模型编译前,通过TUNE_BANK_PATH环境变量指定了子图调优自定义知识库路径,模型编译时又通过MDL_BANK_PATH参数加载了自定义知识库路径,该场景下以MDL_BANK_PATH参数加载的路径为准,TUNE_BANK_PATH环境变量设置的路径不生效。
- MDL_BANK_PATH参数和环境变量指定路径都不生效或无可用自定义知识库,则使用默认自定义知识库路径。
- 如果上述路径下都无可用的自定义知识库,则会查找子图调优内置知识库,该路径为:${INSTALL_DIR}/compiler/data/fusion_strategy/built-in
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OP_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参数加载路径>默认算子调优后自定义知识库路径。
- 如果模型转换前,通过TUNE_BANK_PATH环境变量指定了算子调优自定义知识库路径,模型编译时又通过OP_BANK_PATH参数加载了自定义知识库路径,该场景下以TUNE_BANK_PATH环境变量设置的路径为准,OP_BANK_PATH参数加载的路径不生效。
- OP_BANK_PATH参数和环境变量指定路径都不生效前提下,使用默认自定义知识库路径。
- 如果上述路径下都无可用的自定义知识库,则会查找算子调优内置知识库。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
MODIFY_MIXLIST |
混合精度场景下,通过此参数指定混合精度黑白灰名单的路径以及文件名,自行指定哪些算子允许降精度,哪些算子不允许降精度。配置为路径以及文件名,文件为json格式。
黑白灰名单,可从“OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info.json”内置优化策略文件中查看“precision_reduce”参数下的flag参数值(其中,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。xxx请根据实际产品型号进行选择。):
- 若取值为true(白名单),表示混合精度模式下,允许降低精度。
- 若取值为false(黑名单),表示混合精度模式下,不允许降低精度。
- 不配置该参数(灰名单),表示混合精度模式下,当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
配置示例:
{ge::ir_option::MODIFY_MIXLIST, "/home/test/ops_info.json"}
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"
},
true:白名单。false:黑名单。不配置:灰名单。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OP_PRECISION_MODE |
设置指定算子内部处理时的精度模式,支持指定一个算子或多个算子。通过该参数传入自定义的精度模式配置文件op_precision.ini,可以为不同的算子设置不同的精度模式。
配置文件中支持设置如下精度模式:
具体某个算子支持配置的精度/性能模式取值,可以通过CANN软件安装后文件存储路径的opp/built-in/op_impl/ai_core/tbe/impl_mode/all_ops_impl_mode.ini文件查看。
样例如下:ini文件中按照算子类型、节点名称设置精度模式,每一行设置一个算子类型或节点名称的精度模式,按节点名称设置精度模式的优先级高于按算子类型。
[ByOpType]
optype1=high_precision
optype2=high_performance
optype3=enable_hi_float_32_execution
optype4=support_out_of_bound_index
[ByNodeName]
nodename1=high_precision
nodename2=high_performance
nodename3=enable_hi_float_32_execution
nodename4=support_out_of_bound_index
使用约束:
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
SHAPE_GENERALIZED_BUILD_MODE |
图编译时Shape的编译方式。该参数在后续版本废弃、新开发功能请不要使用该参数。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
CUSTOMIZE_DTYPES |
通过该参数自定义模型编译时算子的计算精度,模型中其他算子以PRECISION_MODE或PRECISION_MODE_V2指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名,例如:/home/test/customize_dtypes.cfg。
参数值约束:
- 配置文件中列举需要自定义计算精度的算子名称或算子类型,每个算子单独一行,且算子类型必须为基于IR定义的算子的类型。
- 对于同一个算子,如果同时配置了算子名称和算子类型,编译时以算子名称为准。
- 指定某个算子的计算精度时,如果算子编译过程中该算子被融合掉,则该算子指定的计算精度不生效。
配置文件格式要求:
# 按照算子名称配置
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
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
BUILD_INNER_MODEL |
当前版本暂不支持。 |
OP_DEBUG_CONFIG |
Global Memory内存检测功能开关。
取值为.cfg配置文件路径,配置文件内多个选项用英文逗号分隔:
- oom:算子执行过程中,检测Global Memory是否内存越界。
- dump_bin:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件)。
- dump_cce:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留算子cce文件*.cce,以及.o(算子二进制文件)和.json文件(算子描述文件)。
- dump_loc:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留python-cce映射文件*_loc.json。
- ccec_O0:算子编译时,开启ccec编译器选项-O0,配置该选项不会对调试信息执行优化操作,用于后续分析AI Core Error问题。
- ccec_g:算子编译时,开启ccec编译器选项-g,配置该选项会对调试信息执行优化操作,用于后续分析AI Core Error问题。
- check_flag:算子执行时,检测算子内部流水线同步信号是否匹配。
- 配置该选项,算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件)。
- 使用该选项后,在算子编译过程中会加入如下的检测逻辑,用户可以通过再使用dump_cce参数,在生成的.cce文件中查看如下的代码。
set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID0);
set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID1);
set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID2);
set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID3);
....
pipe_barrier(PIPE_MTE3);
pipe_barrier(PIPE_MTE2);
pipe_barrier(PIPE_M);
pipe_barrier(PIPE_V);
pipe_barrier(PIPE_MTE1);
pipe_barrier(PIPE_ALL);
wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID0);
wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID1);
wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID2);
wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID3);
...
实际执行推理过程中,如果确实存在算子内部流水线同步信号不匹配,则最终会在有问题的算子处超时报错,并终止程序,报错信息示例为:
Aicore kernel execute failed, ..., fault kernel_name=算子名,...
rtStreamSynchronizeWithTimeout execute failed....
配置示例:
{ge::ir_option::OP_DEBUG_CONFIG, "/root/test0.cfg"}
其中,test0.cfg文件信息为:
op_debug_config=ccec_g,oom
使用约束:
算子编译时,如果用户不想编译所有AI Core算子,而是指定某些AI Core算子进行编译,则需要在上述test0.cfg配置文件中新增OP_DEBUG_LIST字段,算子编译时,只编译该列表指定的算子,并按照OP_DEBUG_CONFIG配置的选项进行编译。OP_DEBUG_LIST字段要求如下:
- 支持指定算子名称或者算子类型。
- 算子之间使用英文逗号分隔,若为算子类型,则以OpType::typeName格式进行配置,支持算子类型和算子名称混合配置。
- 要编译的算子,必须放在OP_DEBUG_CONFIG参数指定的配置文件中。
配置示例如下,test0.cfg文件中增加如下信息:
op_debug_config=ccec_g,oom
op_debug_list=GatherV2,opType::ReduceSum
模型编译时,GatherV2,ReduceSum算子按照ccec_g,oom选项进行编译。
说明:
- 开启ccec编译选项的场景下(即ccec_O0、ccec_g选项),会增大算子Kernel(*.o文件)的大小。动态shape场景下,由于算子编译时会遍历可能存在的所有场景,最终可能会导致由于算子Kernel文件过大而无法进行编译的情况,此种场景下,建议不要开启ccec编译选项。
由于算子kernel文件过大而无法编译的日志显示如下:
message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o:(xxxx)
- ccec编译器选项ccec_O0和oom不能同时开启,可能会导致AICore Error报错,报错信息示例如下:
...there is an aivec error exception, core id is 49, error code = 0x4 ...
- 若配置NPU_COLLECT_PATH环境变量,不支持打开“检测Global Memory是否内存越界”的开关(OP_DEBUG_CONFIG配置为oom),否则编译出来的模型文件或算子kernel包在使用时会报错。
- 配置编译选项oom、dump_cce、dump_loc时,若模型中含有如下通算融合算子,算子编译目录kernel_meta中,不会生成下述算子的*.o、*.json、*.cce文件。
MatMulAllReduce
MatMulAllReduceAddRmsNorm
AllGatherMatMul
MatMulReduceScatter
AlltoAllAllGatherBatchMatMul
BatchMatMulReduceScatterAlltoAll
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
EXTERNAL_WEIGHT |
生成om模型文件时,是否将原始网络中的Const/Constant节点的权重外置,同时将节点类型转换为FileConstant类型。
离线场景,如果模型权重较大且环境对om大小有限制,建议开启外置权重将权重单独保存,来减小om大小。
参数取值:
- 0:(默认值)权重不外置,直接保存在om离线模型文件中。
- 1:权重外置,将网络中所有的Const/Constant节点的权重文件落盘,并将节点类型转换为FileConstant类型;权重文件以weight_+hash值命名。
配置示例:
{ge::ir_option::EXTERNAL_WEIGHT, "1"}
使用约束:
- 权重外置场景,在使用AscendCL接口开发推理应用、加载模型时:
接口详细说明请参见“模型加载和卸载”章节。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
EXCLUDE_ENGINES |
设置网络模型不使用某个或某些加速引擎。多个以“|”分隔。
NPU集成了多种硬件加速器(也叫加速引擎),比如AiCore/AiVec/AiCpu(按照优先级排列)等,在图编译阶段会按照优先级为算子选择合适的引擎,即当同一个算子被多种引擎支持时,会选择优先级高的那个。
EXCLUDE_ENGINES提供了排除某个引擎的功能,比如在一次训练过程中,为避免数据预处理图和主训练图抢占AiCore,可以给数据预处理图配置不使用AiCore引擎。
参数取值:
“AiCore”:AI Core硬件加速引擎
“AiVec”:Vector Core硬件加速引擎
“AiCpu”:AI CPU硬件加速引擎
配置示例:
{ge::ir_option::EXCLUDE_ENGINES, "AiCore|AiVec"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
DISTRIBUTED_CLUSTER_BUILD |
大模型分布式编译切分场景使用。
大模型分布式编译切分开关,使能该参数后,生成的离线模型将用于分布式部署。“1”表示使能,空或其他值表示未使能。
配置示例:
{ge::ir_option::DISTRIBUTED_CLUSTER_BUILD, "1"}
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
ENABLE_GRAPH_PARALLEL |
大模型分布式编译切分场景使用。
是否对原始模型进行自动切分。“1”表示开启自动切分,空或其他值表示不开启。
DISTRIBUTED_CLUSTER_BUILD参数开启分布式编译后,才支持开启自动切分功能,原始模型会按照GRAPH_PARALLEL_OPTION_PATH文件中的要求进行自动切分。
配置示例:
{ge::ir_option::ENABLE_GRAPH_PARALLEL, "1"}
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
GRAPH_PARALLEL_OPTION_PATH |
大模型分布式编译切分场景使用。
对原始大模型进行切分时,指定算法切分策略配置文件路径和文件名。
DISTRIBUTED_CLUSTER_BUILD参数开启分布式编译,且ENABLE_GRAPH_PARALLEL参数开启切分功能后,才支持配置切分策略配置文件路径。
配置示例:
{ge::ir_option::GRAPH_PARALLEL_OPTION_PATH, "./parallel_option.json"}
指定的配置文件必须为json格式,示例如下:
- 半自动切分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{
"graph_parallel_option": {
"auto": false,
"opt_level": "O1"
"tensor_parallel_option": {
"tensor_parallel_size": 2
},
"tensor_sharding":{
"optimizer_state_sharding": true,
"gradient_sharding":true,
"model_weight_sharding": true,
"model_weight_prefetch": true,
"model_weight_prefetch_buffer_size": 50
}
}
}
|
- 全自动切分
|
{
"graph_parallel_option": {
"auto": true
}
}
|
参数解释如下:
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
MODEL_RELATION_CONFIG |
大模型分布式编译切分场景使用。
表达多个切片模型间的数据关联和分布式通信组关系的配置文件及路径。该参数适用于原始模型为切片模型,且切片模型内含通信算子的场景。
该参数在开启分布式编译参数DISTRIBUTED_CLUSTER_BUILD后才生效。
配置示例:
{ge::ir_option::MODEL_RELATION_CONFIG, "./model_relation.json"}
配置文件必须为json格式,示例如下:
{
"deploy_config" :[ //必选,部署模型与目标部署节点的映射关系
{
"submodel_name":"submodel1.air", // 前端切分后的文件名称,要和前端切分后的Graph name名称保持一致
"deploy_device_id_list":"0:0:0" // 该模型要部署的目标设备cluster:0 node:0 item:0
},
{
"submodel_name":"submodel2.air",
"deploy_device_id_list":"0:0:1"
}
],
"model_name_to_instance_id":[ // 必选
{
"submodel_name":"submodel1.air", // 模型对应的id,文件中由用户指定,不同文件对应不同id值即可
"model_instance_id":0
},
{
"submodel_name":"submodel2.air",
"model_instance_id":1
}
],
"comm_group":[{ // 非必选,若前端切分的模型包含通信算子,此处应是切分后模型通信算子的通信域相关信息
"group_name":"tp_group_name_0", // 前端切分模型通信算子的子通信域
"group_rank_list":"[0,1]" // 前端切分模型通信算子的子rank列表
}],
"rank_table":[
{
"rank_id":0, // rankid与模型id的映射关系
"model_instance_id":0
},
{
"rank_id":1,
"model_instance_id":1
}
]
}
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
AC_PARALLEL_ENABLE |
动态shape图中,是否允许AI CPU算子和AI Core算子并行运行。
动态shape图中,开关开启时,系统自动识别图中可以和AI Core并发的AI CPU算子,不同引擎的算子下发到不同流上,实现多引擎间的并行,从而提升资源利用效率和动态shape执行性能。
参数取值:
- 1:允许AI CPU和AI Core算子间的并行运行。
- 0(默认):AI CPU算子不会单独分流。
配置示例:
{ge::ir_option::AC_PARALLEL_ENABLE, "1"}
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
QUANT_DUMPABLE |
是否采集量化算子的dump数据。
参考《AscendCL应用软件开发指南(C&C++) 》手册中的“模型推理精度提升建议”章节进行精度定位时,如果存在AMCT量化后的模型,该模型转成om离线模型时,图编译过程中可能优化量化算子的输入输出,从而影响量化算子dump数据的导出,例如:两个被量化的卷积计算,中间输出被优化为int8的量化后输出。
为此引入QUANT_DUMPABLE参数,使能该参数后,量化算子的输入输出不做融合,并且会插入transdata算子,还原原始模型的格式,从而能采集到量化算子的dump数据。
参数取值:
- 0:(默认值)图编译过程中可能优化量化算子的输入输出,此时无法获取量化算子的dump数据。
- 1:开启此配置后,可确保能够采集量化算子的dump数据。
配置示例:
{ge::ir_option::QUANT_DUMPABLE, "1"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
TILING_SCHEDULE_OPTIMIZE |
Tiling下沉调度优化开关。
由于NPU中AI Core内部存储无法完全容纳算子输入输出的所有数据,需要每次搬运一部分输入数据进行计算然后搬出,再搬运下一部分输入数据进行计算,该过程称之为Tiling;根据算子的shape等信息来确定数据切分算法相关参数(比如每次搬运的块大小,以及总共循环多少次)的计算程序,称之为Tiling实现。由于Tiling实现中完成的均为标量计算,AI Core并不擅长,故一般在Host侧CPU上执行,但是满足下述条件Tiling实现会下沉到Device侧执行:
- 模型为静态shape。
- 模型中的算子支持Tiling下沉,比如FusedInferAttentionScore、IncreFlashAttention等融合算子。
- 支持Tiling下沉的算子值有依赖,需要满足前一个算子的值有device的执行结果;如果依赖的值是Const,则不需要下沉执行Tiling,编译时会完成Tiling。
参数取值:
- 0:关闭Tiling下沉,默认为0。
- 1:使能Tiling下沉。
配置示例:
{ge::ir_option::TILING_SCHEDULE_OPTIMIZE, "1"}
支持情况:
Atlas 推理系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 训练系列产品
:不支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
OPTION_EXPORT_COMPILE_STAT |
配置图编译过程中是否生成算子融合信息(包括图融合和UB融合)的结果文件fusion_result.json。
该文件用于记录图编译过程中使用的融合规则,文件中:
- session_and_graph_id_xx_xx:表示融合结果所属线程和图编号。
- graph_fusion:表示图融合。
- ub_fusion:表示UB融合。
- match_times:表示图编译过程中匹配到的融合规则次数。
- effect_times:表示实际生效的次数。
- repository_hit_times:优化UB融合知识库命中的次数。
参数取值:
- 0:不生成算子融合信息结果文件。
- 1:(默认值)程序运行正常退出时,生成算子融合信息结果文件。
- 2:图编译完成时,生成算子融合信息结果文件。即如果图编译已完成,后续程序提前中断,也会生成算子融合信息结果文件。
说明:
- 若未设置ASCEND_WORK_PATH环境变量,结果文件默认生成在执行atc命令的当前路径;若设置了ASCEND_WORK_PATH环境变量,则保存路径为:$ASCEND_WORK_PATH/FE/${进程号}/fusion_result.json。
- 通过FUSION_SWITCH_FILE参数关闭的融合规则,不会在fusion_result.json文件中呈现。
配置示例:
{ge::ir_option::OPTION_EXPORT_COMPILE_STAT, "1"}
支持情况:
Atlas 推理系列产品:支持
Atlas A2训练系列产品/Atlas 800I A2推理产品:支持
Atlas 训练系列产品:支持
Atlas 200/300/500 推理产品:支持
Atlas 200/500 A2推理产品:支持 |