CORE_TYPE |
设置网络模型使用的Core类型,若网络模型中包括Cube算子,则只能使用AiCore。
参数取值:
- VectorCore
- AiCore,默认为AiCore。
配置示例
{ge::ir_option::CORE_TYPE, "AiCore"}
支持情况:
Atlas 推理系列产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 训练系列产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:不支持 |
SOC_VERSION |
图编译时使用的昇腾AI处理器型号。
- 若当前环境存在昇腾AI处理器,该参数可选。
- 若当前环境不存在昇腾AI处理器,即开发环境,该参数必填。
<soc_version>查询方法为:
- 在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Chip Name信息。实际配置值为AscendChip Name,例如Chip Name取值为xxxyy,实际配置值为Ascendxxxyy。
配置示例:
{ge::ir_option::SOC_VERSION, "<soc_version>"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
BUFFER_OPTIMIZE |
数据缓存优化开关。参数取值:
- l1_optimize:表示开启l1优化。当前版本该参数无效,等同于off_optimize。
- l2_optimize:(默认值)表示开启l2优化。
- off_optimize:表示关闭数据缓存优化。
使用建议:
建议打开数据缓存优化功能:开启数据缓存优化可提高计算效率、提升性能,但由于部分算子在实现上可能存在未考虑的场景,导致影响精度,因此在出现精度问题时可以尝试关闭数据缓存优化。如果关闭数据缓存优化功能后,精度达标,则需要识别出问题算子,反馈给技术支持进一步分析、解决算子问题;解决算子问题后,建议仍旧保持开启数据缓存优化功能。
配置示例:
{ge::ir_option::BUFFER_OPTIMIZE, "l2_optimize"}
注意:当参数值设置为l1_optimize,则不能与VIRTUAL_TYPE参数同时使用,同时使用会出现报错,表示虚拟化场景不做l1融合,防止算子过大导致调度异常。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 训练系列产品
:支持
Atlas 推理系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
ENABLE_COMPRESS_WEIGHT |
使能全局weight压缩。
AICore支持Weight压缩功能,通过使能该参数,可以对Weight进行数据压缩,在进行算子计算时,对Weight进行解压缩,从而达到减少带宽、提高性能的目的。
该参数使能全局weight压缩,不能与COMPRESS_WEIGHT_CONF同时使用。
参数取值:
- true:表示使能。
- false:(默认值)表示关闭。
配置示例:
{ge::ir_option::ENABLE_COMPRESS_WEIGHT, "true"}
支持情况:
Atlas 200/300/500 推理产品
:不支持
Atlas 训练系列产品
:不支持
Atlas 推理系列产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:不支持 |
COMPRESS_WEIGHT_CONF |
要压缩的node节点列表配置文件路径及文件名,node节点主要为conv算子、fc算子。该参数不能与ENABLE_COMPRESS_WEIGHT参数同时使用。
参数值格式:路径和文件名支持大小写字母、数字,下划线;文件名支持大小写字母、数字,下划线和点(.)。
参数值约束:Weight压缩配置文件由AMCT输出,文件内容即为node名称列表,node名称之间以“;”间隔开。例如,compress_weight_nodes.cfg文件内容为:conv1; fc1; conv2_2/x1; fc2; conv5_32/x2;fc6。
配置示例:
{ge::ir_option::COMPRESS_WEIGHT_CONF, "$HOME/module/compress_weight_nodes.cfg"}
支持情况:
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。
使用约束:
由于ALLOW_HF32是使用HF32自动代替float32,要想该参数生效,必须保证被使能的算子输入或者输出类型为float32。 由于PRECISION_MODE_V2参数默认值为fp16,原始网络模型中算子类型为float32时会被强制转为float16类型,该场景下使用ALLOW_HF32参数不生效,建议修改PRECISION_MODE_V2参数值为origin(PRECISION_MODE参数默认值为force_fp16,建议修改为must_keep_origin_dtype或者force_fp32)
配置示例:
{ge::ir_option::ALLOW_HF32, "true"}
支持情况:
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 推理系列产品
:不支持
Atlas 训练系列产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
TUNE_DEVICE_IDS |
当前版本暂不支持。 |
EXEC_DISABLE_REUSED_MEMORY |
内存复用开关。
内存复用是指按照生命周期和内存大小,把不冲突的内存重复使用,来降低网络内存占用。
参数取值:
- 1:关闭内存复用。如果网络模型较大,关闭内存复用开关时可能会造成内存不足,导致模型编译失败。
- 0:开启内存复用。 默认为0。
配置示例:
{ge::ir_option::EXEC_DISABLE_REUSED_MEMORY, "0"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
ENABLE_SINGLE_STREAM |
是否使能一个模型只能使用一条stream。其中,Stream用于维护一些异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。
参数取值:
- true:表示使能,模型推理顺序单流串行执行。
- false:(默认值)表示关闭,模型推理时多流并行执行。
参数值约束:
模型中存在Cmo算子和如下控制类算子时,不能使用单Stream特性,只能使用默认值false。
- Merge
- Switch
- Enter
- RefEnter
配置示例:
{ge::ir_option::ENABLE_SINGLE_STREAM, "true"}
支持情况:
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 推理系列产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
AICORE_NUM |
设置编译时使用的AI Core数目。
支持情况:
Atlas 200/300/500 推理产品
:不支持
Atlas 训练系列产品
:不支持
Atlas 推理系列产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:不支持 |
FUSION_SWITCH_FILE |
融合开关配置文件路径以及文件名,路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。
系统内置了一些图融合和UB融合规则,均为默认开启,可以根据需要关闭指定的融合规则,当前可以关闭的融合规则请参见《图融合和UB融合规则参考》,但是由于系统机制,其他融合规则无法关闭。
配置示例:
配置文件样例fusion_switch.cfg,on表示开启,off表示关闭。
{
"Switch":{
"GraphFusion":{
"RequantFusionPass":"on",
"ConvToFullyConnectionFusionPass":"off",
"SoftmaxFusionPass":"on",
"NotRequantFusionPass":"on",
"SplitConvConcatFusionPass":"on",
"ConvConcatFusionPass":"on",
"MatMulBiasAddFusionPass":"on",
"PoolingFusionPass":"on",
"ZConcatv2dFusionPass":"on",
"ZConcatExt2FusionPass":"on",
"TfMergeSubFusionPass":"on"
},
"UBFusion":{
"TbePool2dQuantFusionPass":"on"
}
}
}
同时支持用户一键关闭融合规则:
{
"Switch":{
"GraphFusion":{
"ALL":"off"
},
"UBFusion":{
"ALL":"off"
}
}
}
需要注意的是:
- 关闭某些融合规则可能会导致功能问题,因此此处的一键式关闭仅关闭系统部分融合规则,而不是全部融合规则。
- 一键式关闭融合规则时,可以同时开启部分融合规则,样例如下:
{
"Switch":{
"GraphFusion":{
"ALL":"off",
"SoftmaxFusionPass":"on"
},
"UBFusion":{
"ALL":"off",
"TbePool2dQuantFusionPass":"on"
}
}
}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
ENABLE_SMALL_CHANNEL |
是否使能small channel的优化,使能后在channel<=4的卷积层会有性能收益。建议用户在推理场景下打开此开关。
参数取值:
配置示例:
{ge::ir_option::ENABLE_SMALL_CHANNEL, "1"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OP_SELECT_IMPL_MODE |
昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时算子选择哪种实现方式。
高精度是指在float16输入场景,通过泰勒展开/牛顿迭代等手段进一步提升算子的精度;高性能是指在float16输入的情况下,不影响网络精度前提的最优性能实现。
参数取值:
- high_precision:表示算子采用高精度实现模式。
该选项采用系统内置的配置文件设置算子实现模式,内置配置文件路径为${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_precision.ini。
为保持兼容,该参数仅对high_precision.ini文件中算子列表生效,通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。
- high_performance:(默认值)表示算子采用高性能实现模式。
该选项采用系统内置的配置文件设置算子实现模式,内置配置文件路径为${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_performance.ini。
为保持兼容,该参数仅对high_performance.ini文件中算子列表生效,通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。
- high_precision_for_all:表示算子采用高精度实现模式。
该选项采用系统内置的配置文件设置算子实现模式,内置配置文件路径为${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_precision_for_all.ini,该文件中列表后续可能会跟随版本更新。
该实现模式不保证兼容,如果后续新的软件包中有算子新增了实现模式(即配置文件中新增了某个算子的实现模式),之前版本使用high_precision_for_all的网络模型,在新版本上性能可能会下降。
- high_performance_for_all:表示算子采用高性能实现模式。
该选项采用系统内置的配置文件设置算子实现模式,内置配置文件路径为${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/impl_mode/high_performance_for_all.ini,该文件中列表后续可能会跟随版本更新。
该实现模式不保证兼容,如果后续新的软件包中有算子新增了实现模式(即配置文件中新增了某个算子的实现模式),之前版本使用high_performance_for_all的网络模型,在新版本上精度可能会下降。
上述实现模式,根据算子的dtype进行区分。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。
参数默认值:high_performance
配置示例:
{ge::ir_option::OP_SELECT_IMPL_MODE, "high_performance"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OPTYPELIST_FOR_IMPLMODE |
设置optype列表中算子的实现模式。
参数值约束:
- 列表中的算子使用OP_SELECT_IMPL_MODE参数指定的模式,当前仅支持指定为high_precision、high_performance两种模式,多个算子使用英文逗号进行分隔。
- 该参数需要与OP_SELECT_IMPL_MODE参数配合使用,且仅对指定的算子生效,不指定的算子按照默认实现方式选择。例如:OP_SELECT_IMPL_MODE配置为high_precision;OPTYPELIST_FOR_IMPLMODE配置为Pooling、SoftmaxV2。表示对Pooling、SoftmaxV2算子使用统一的高精度模式,未指定算子使用算子的默认实现方式。
配置示例:
{ge::ir_option::OPTYPELIST_FOR_IMPLMODE, "Pooling,SoftmaxV2"}
支持情况:
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功能开关。
如果要自行指定算子编译的过程文件存放路径,则需要通过DEBUG_DIR参数指定,OP_DEBUG_LEVEL取值为0时,使用DEBUG_DIR参数不生效。
参数取值:
- 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 推理产品
:支持 |
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 推理产品
:支持 |
MODIFY_MIXLIST |
混合精度场景下,通过此参数指定混合精度黑白灰名单的路径以及文件名,自行指定哪些算子允许降精度,哪些算子不允许降精度。配置为路径以及文件名,文件为json格式。黑白灰名单,可从“${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(黑名单),表示混合精度模式下,不允许降低精度。
- 不配置该参数(灰名单),表示混合精度模式下,当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
开启混合精度方式:
- PRECISION_MODE参数设置为allow_mix_precision、allow_mix_precision_fp16、allow_mix_precision_bf16。
- PRECISION_MODE_V2参数设置为mixed_float16、mixed_bfloat16、,与PRECISION_MODE参数不能同时配置,建议使用PRECISION_MODE_V2。
配置示例:
{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 推理产品
:支持 |
SPARSITY |
使能全局稀疏特性。
AMCT(昇腾模型压缩工具)4选2结构化稀疏后输出的模型,可能存在weight连续4个Cin维度元素中至少有2个为0的场景,模型转换时通过使能全局稀疏开关,将该场景下的元素筛选成2个,从而节省后续推理的计算量,提高推理性能。
由于硬件约束,该参数不能与ENABLE_COMPRESS_WEIGHT、COMPRESS_WEIGHT_CONF同时使用。
参数取值:
- 1:表示开启4选2结构化稀疏。
- 0:(默认值)不开启稀疏特性。
配置示例:
{ge::ir_option::SPARSITY, "1"}
使用约束:使用该参数时,请确保模型是稀疏的模型,建议用户使用AMCT(TensorFlow)或AMCT(PyTorch)的组合压缩功能获取,且组合压缩只能是4选2结构化稀疏+量化感知训练模式。
支持情况:
Atlas 200I/500 A2 推理产品
,支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
,支持
Atlas 推理系列产品
,不支持
Atlas 200/300/500 推理产品
,不支持
Atlas 训练系列产品
,不支持 |
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 推理产品
:支持 |
DETERMINISTIC |
是否开启确定性计算。
默认情况下,不开启确定性计算,算子在相同的硬件和输入下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。当开启确定性计算功能时,算子在相同的硬件和输入下,多次执行将产生相同的输出。
通常建议不开启确定性计算,因为确定性计算往往会导致算子执行变慢,进而影响性能。当发现模型多次执行结果不同,或者是进行精度调优时,可开启确定性计算,辅助模型调试、调优。
参数取值:
- 0:(默认值)不开启确定性计算。
- 1:开启确定性计算。
配置示例:
{ge::ir_option::DETERMINISTIC, "1"}
支持情况:
Atlas 推理系列产品
,支持
Atlas 训练系列产品
,支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
,支持
Atlas 200/300/500 推理产品
,不支持
Atlas 200I/500 A2 推理产品
,不支持 |
OPTION_HOST_ENV_OS |
若模型编译环境的操作系统及其架构与模型运行环境不一致时,则需使用本参数设置模型运行环境的操作系统类型。如果不设置,则默认取模型编译环境的操作系统类型。
与OPTION_HOST_ENV_CPU参数配合使用,通过OPTION_HOST_ENV_OS参数设置操作系统类型、通过OPTION_HOST_ENV_CPU参数设置操作系统架构。
参考取值:"linux"
配置示例:
{ge::ir_option::OPTION_HOST_ENV_OS, "linux"}
{ge::ir_option::OPTION_HOST_ENV_CPU, "x86_64"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
OPTION_HOST_ENV_CPU |
若模型编译环境的操作系统及其架构与模型运行环境不一致时,则需使用本参数设置模型运行环境的操作系统架构。如果不设置,则默认取模型编译环境的操作系统架构。
与OPTION_HOST_ENV_OS参数配合使用。
参考取值:
配置示例:
{ge::ir_option::OPTION_HOST_ENV_OS, "linux"}
{ge::ir_option::OPTION_HOST_ENV_CPU, "x86_64"}
- 若转换后的离线模型包含操作系统类型、架构,例如:xxx_linux_x86_64.om,则说明该模型运行的环境只能是x86_64架构的linux操作系统。
- 若转换后的离线模型不包含操作系统类型、架构,例如:xxx.om,则说明CANN软件包所支持的操作系统,都支持该模型运行。
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持 |
VIRTUAL_TYPE |
是否支持离线模型在昇腾虚拟化实例特性生成的虚拟设备上运行。
当前芯片算力比较大,云端用户或者小企业完全不需要使用这么大算力,昇腾虚拟化实例特性支持对芯片的算力进行切分,可满足用户根据自己的业务按需申请算力的诉求。
虚拟设备是指按照指定算力在芯片上申请的虚拟加速资源。
参数取值:
- 0:(默认值)离线模型不在昇腾虚拟化实例特性生成的虚拟设备上运行。
- 1:离线模型在不同算力的虚拟设备上运行。
配置示例:
{ge::ir_option::VIRTUAL_TYPE, "1"}
使用约束:
- 参数取值为1时,进行模型转换,则转换后离线模型的NPU运行核数(blockdim)可能比实际aicore_num核数大,为aicore_num支持配置范围的最小公倍数:
例如aicore_num支持配置范围为{1,2,4,8},参数取值为1转换后的离线模型,NPU运行核数可能为8。
- 参数取值为1时,转换后的模型,如果包括如下算子,会默认使用单核,该场景下,将会导致转换后的模型推理性能下降。
- DynamicRNN
- PadV2D
- SquareSumV2
- DynamicRNNV2
- DynamicRNNV3
- DynamicGRUV
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持 |
COMPRESSION_OPTIMIZE_CONF |
压缩优化功能配置文件路径以及文件名,通过该参数使能配置文件中指定的压缩优化特性,从而提升网络性能。例如:/home/test/compression_optimize.cfg。
文件内容配置示例如下:
enable_first_layer_quantization:true
支持情况:
Atlas 推理系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 训练系列产品
:不支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:不支持 |
CLUSTER_CONFIG |
大模型分布式编译切分场景使用。
指定目标部署环境逻辑拓扑关系的配置文件及路径,解析后用于图中HCCL算子的离线编译。
如果图中包含通信算子或者开启了算法切分,需要配置该参数。
配置示例:
{ge::ir_option::CLUSTER_CONFIG, "/home/test/cluster_config.json"}
配置文件必须为json格式,示例如下,参数解释请参见CLUSTER_CONFIG配置文件参数说明。
-
Atlas 推理系列产品
场景:具体使用的device芯片数量为item_list*item_def。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
{
"cluster": [{
"cluster_nodes": [{ //必填,Array of Cluster_node类型,集群资源信息描述。
"is_local": true, //非必填,BOOL类型,多个Node组成集群时,此文件此节点是否是本机。
"item_list": [{ //必填,Array of item_info类型,云资源管理编排的执行该JOB的加速卡。
"item_id": 0 //必填,Integer类型,Node内加速卡id。
}],
"node_id": 0, //必填,Integer类型,集群内节点编号,一般0作为主节点。
"node_type": "ATLAS300" //必填,String类型,节点类型,如ATLAS800。
}]
}],
"item_def": [{ //Node内同种类型的加速卡的公共属性。
"device_list": [{ //非必填,Array of device_info类型,整芯片内包含几个物理device。Atlas 训练系列产品不需要填写该配置项。
"device_id": 0 //必填,Integer类型,整芯片内物理device id。
},
{
"device_id": 1
}],
"item_type": "<soc_version>" //必填,String类型,节点内加速卡类型。
}]
}
|
-
Atlas 训练系列产品
、
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
场景:具体使用的device芯片数量为cluster_nodes*item_list个数,每个cluster_nodes中的item_id个数必须保持一致。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
4p逻辑网络config:
{
"cluster": [{
"cluster_nodes": [{
"node_id": 0,
"node_type": "ATLAS800",
"ipaddr": "127.0.0.1", //必填,String类型,节点控制面通信的IP,如训练服务器为HOST IP、SOC服务器为头节点IP。
"port": 2509, //必填,Integer类型,节点控制面通信的端口。
"is_local": true,
"item_list": [{
"item_id": 0
},
{
"item_id": 1
},
{
"item_id": 2
},
{
"item_id": 3
}]
}]
}],
"item_def": [{
"item_type": "<soc_version>"
}],
"node_def": [{ //集群内同种类型Node的公共属性。
"item": [{
"item_type": "<soc_version>" //必填,String类型,节点内加速卡类型。
}]
}]
}
|
支持情况:
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品
:支持
Atlas 200/300/500 推理产品
:不支持
Atlas 200I/500 A2 推理产品
:不支持 |
OPTION_SCREEN_PRINT_MODE |
控制图编译过程是否打屏。
参数取值:
- enable:打屏,默认为enable。
- disable:不打屏。
配置示例:
{ge::ir_option::OPTION_SCREEN_PRINT_MODE, "disable"}
支持情况:
Atlas 200/300/500 推理产品
:支持
Atlas 推理系列产品
:支持
Atlas 训练系列产品
:支持
Atlas 200I/500 A2 推理产品
:支持
Atlas A2 训练系列产品/Atlas 800I 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 推理产品
:不支持 |
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 200I/500 A2 推理产品
:支持 |