下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

aclgrphBuildInitialize支持的配置参数

表1 aclgrphBuildInitialize支持的配置参数

参数

说明

CORE_TYPE

设置网络模型使用的Core类型,若网络模型中包括Cube算子,则只能使用AiCore。

参数取值:

  • VectorCore
  • AiCore,默认为AiCore。

配置示例

{ge::ir_option::CORE_TYPE, "AiCore"}

支持情况

Atlas 推理系列产品:支持

Atlas 200/300/500 推理产品:不支持

Atlas 训练系列产品:不支持

Atlas 200/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 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

BUFFER_OPTIMIZE

数据缓存优化开关。参数取值:

  • l1_optimize:表示开启l1优化。当前版本该参数无效,等同于off_optimize。
  • l2_optimize:表示开启l2优化。默认为l2_optimize。
  • off_optimize:表示关闭数据缓存优化。

使用建议:

建议打开数据缓存优化功能:开启数据缓存优化可提高计算效率、提升性能,但由于部分算子在实现上可能存在未考虑的场景,导致影响精度,因此在出现精度问题时可以尝试关闭数据缓存优化。如果关闭数据缓存优化功能后,精度达标,则需要识别出问题算子,反馈给技术支持进一步分析、解决算子问题;解决算子问题后,建议仍旧保持开启数据缓存优化功能。

配置示例:

{ge::ir_option::BUFFER_OPTIMIZE, "l2_optimize"}

注意:当参数值设置为l1_optimize,则不能与VIRTUAL_TYPE参数同时使用,同时使用会出现报错,表示虚拟化场景不做l1融合,防止算子过大导致调度异常。

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 训练系列产品:支持

Atlas 推理系列产品:支持

Atlas 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

ENABLE_COMPRESS_WEIGHT

使能全局weight压缩。

AICore支持Weight压缩功能,通过使能该参数,可以对Weight进行数据压缩,在进行算子计算时,对Weight进行解压缩,从而达到减少带宽、提高性能的目的。

该参数使能全局weight压缩,不能与COMPRESS_WEIGHT_CONF同时使用。

参数取值:

  • true:表示使能。
  • false:表示关闭。默认为false。

配置示例:

{ge::ir_option::ENABLE_COMPRESS_WEIGHT, "true"}

支持情况

Atlas 200/300/500 推理产品:不支持

Atlas 训练系列产品:不支持

Atlas 推理系列产品:不支持

Atlas 200/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 200/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为新版本中新增的,对于矩阵计算类算子,该选项语义更清晰。
    • 对于矩阵计算类算子,系统内部会按算子实现的支持情况处理:
      1. 优先选择输入数据类型为float16且输出数据类型为float32;
      2. 如果1中的场景不支持,则选择输入数据类型为float32且输出数据类型为float32;
      3. 如果2中的场景不支持,则选择输入数据类型为float16且输出数据类型为float16;
      4. 如果3中的场景不支持,则报错。
    • 对于矢量计算类算子,表示网络模型中算子支持float16和float32时,强制选择float32,若原图精度为float16,也会强制转为float32。

      如果网络模型中存在部分算子,并且该算子实现不支持float32,比如某算子仅支持float16类型,则该参数不生效,仍然使用支持的float16;如果该算子不支持float32,且又配置了黑名单(precision_reduce = false),则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。

  • 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 200/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,从而在精度损失很小的情况下提升系统性能并减少内存使用。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-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算子也不支持,则执行报错。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:

    • 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到bfloat16
    • 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到bfloat16,相应算子仍旧使用float32精度。
    • 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。

    该选项仅在以下产品型号支持:

    Atlas A2训练系列产品/Atlas 800I A2推理产品

    Atlas 200/500 A2推理产品

  • allow_fp32_to_bf16:
    • 对于矩阵计算类算子,使用bfloat16。
    • 对于矢量计算类算子,优先保持原图精度,如果原始模型中算子支持float32,则保留原始精度float32;如果原始模型中算子不支持float32,则直接降低精度到bfloat16;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。

    该选项仅在以下产品型号支持:

    Atlas A2训练系列产品/Atlas 800I A2推理产品

    Atlas 200/500 A2推理产品

参数默认值:force_fp16

配置示例:

{ge::ir_option::PRECISION_MODE, "force_fp16"}

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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 200/500 A2推理产品

  • cube_fp16in_fp32out
    算子既支持float32又支持float16数据类型时,系统内部根据算子类型不同,选择不同的处理方式。
    • 对于矩阵计算类算子,系统内部会按算子实现的支持情况处理:
      1. 优先选择输入数据类型为float16且输出数据类型为float32;
      2. 如果1中的场景不支持,则选择输入数据类型为float32且输出数据类型为float32;
      3. 如果2中的场景不支持,则选择输入数据类型为float16且输出数据类型为float16;
      4. 如果3中的场景不支持,则报错。
    • 对于矢量计算类算子,表示网络模型中算子支持float16和float32时,强制选择float32,若原图精度为float16,也会强制转为float32。

      如果网络模型中存在部分算子,并且该算子实现不支持float32,比如某算子仅支持float16类型,则该参数不生效,仍然使用支持的float16;如果该算子不支持float32,且又配置了黑名单(precision_reduce = false),则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。

  • mixed_float16

    表示使用混合精度float16和float32数据类型来处理神经网络。针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-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算子也不支持,则执行报错。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:

    • 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到bfloat16
    • 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到bfloat16,相应算子仍旧使用float32精度。
    • 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。

    该选项仅在以下产品型号支持:

    Atlas A2训练系列产品/Atlas 800I A2推理产品

    Atlas 200/500 A2推理产品

参数默认值:fp16

配置示例:

{ge::ir_option::PRECISION_MODE_V2, "fp16"}

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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 200/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 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

ENABLE_SINGLE_STREAM

是否使能一个模型只能使用一条stream。其中,Stream用于维护一些异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。

参数取值:

  • true:表示使能,模型推理时只使用一条Stream。
  • false:表示关闭,模型推理时允许使用多Stream。默认为false。

参数值约束:

模型中存在Cmo算子和如下控制类算子时,不能使用单Stream特性,只能使用默认值false。

  • Merge
  • Switch
  • Enter
  • Exit
  • LoopCond
  • NextIteration
  • Case
  • If
  • While
  • PartitionedCall

配置示例:

{ge::ir_option::ENABLE_SINGLE_STREAM, "true"}

支持情况

Atlas 训练系列产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

Atlas 200/300/500 推理产品:不支持

Atlas 推理系列产品:不支持

Atlas 200/500 A2推理产品:不支持

AICORE_NUM

设置编译时使用的AI Core数目。

支持情况

Atlas 200/300/500 推理产品:不支持

Atlas 训练系列产品:不支持

Atlas 推理系列产品:不支持

Atlas 200/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"
         }
    }
}

需要注意的是:

  1. 关闭某些融合规则可能会导致功能问题,因此此处的一键式关闭仅关闭系统部分融合规则,而不是全部融合规则。
  2. 一键式关闭融合规则时,可以同时开启部分融合规则,样例如下:
    {
        "Switch":{
            "GraphFusion":{
                "ALL":"off",
                "SoftmaxFusionPass":"on"
            },
            "UBFusion":{
                "ALL":"off",
                "TbePool2dQuantFusionPass":"on"
            }
        }
    }

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

ENABLE_SMALL_CHANNEL

是否使能small channel的优化,使能后在channel<=4的卷积层会有性能收益。建议用户在推理场景下打开此开关。

参数取值:

  • 0:关闭,默认为0。
  • 1:使能。

配置示例:

{ge::ir_option::ENABLE_SMALL_CHANNEL, "1"}

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。

参数默认值:high_performance

配置示例:

{ge::ir_option::OP_SELECT_IMPL_MODE, "high_performance"}

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

OP_COMPILER_CACHE_MODE

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

参数取值:

  • enable:表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
  • force:启用算子编译缓存功能,区别于enable模式,force模式下会强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等,需要先指定为force用于先清理已有的缓存,后续再修改为enable模式,以避免每次编译时都强制刷新缓存。
  • disable:表示禁用算子编译缓存,算子重新编译。

参数默认值:enable

配置示例:

{ge::ir_option::OP_COMPILER_CACHE_MODE, "enable"}

使用说明:

  • 如果要自行指定算子编译磁盘缓存的路径,则需要与OP_COMPILER_CACHE_DIR配合使用。
  • 启用算子编译缓存功能时,可以通过配置文件(算子编译完成后,会在OP_COMPILER_CACHE_DIR参数指定路径下自动生成op_cache.ini文件)、环境变量两种方式来设置缓存文件夹的磁盘空间大小:
    1. 通过配置文件op_cache.ini设置

      若op_cache.ini文件不存在,则需要手动创建。打开该文件,增加如下信息:

      #配置文件格式,必须包含,自动生成的文件中默认包括如下信息,手动创建时,需要输入
      [op_compiler_cache]
      #限制某个芯片下缓存文件夹的磁盘空间的大小,取值需为整数,单位为MB
      max_op_cache_size=500
      #设置需要保留缓存的空间大小比例,取值范围:[1,100],单位为百分比;例如80表示缓存空间不足时,删除缓存,保留80%
      remain_cache_size_ratio=80    
      • 上述文件中的max_op_cache_size和remain_cache_size_ratio参数取值都有效时,op_cache.ini文件才会生效。
      • 当编译缓存文件大小超过“max_op_cache_size”的设置值,且超过半小时缓存文件未被访问时,缓存文件就会老化(算子编译时,不会因为编译缓存文件大小超过设置值而中断,所以当“max_op_cache_size”设置过小时,会出现实际编译缓存文件大小超过此设置值的情况)。
      • 若需要关闭编译缓存老化功能,可将“max_op_cache_size”设置为“-1”,此时访问算子缓存时不会更新访问时间,算子编译缓存不会老化,磁盘空间使用默认大小500M。
      • 若多个使用者使用相同的缓存路径,建议使用配置文件的方式进行设置,该场景下op_cache.ini文件会影响所有使用者。
    2. 通过环境变量设置

      该场景下,开发者可以通过环境变量ASCEND_MAX_OP_CACHE_SIZE来限制某个芯片下缓存文件夹的磁盘空间的大小,当编译缓存空间大小达到ASCEND_MAX_OP_CACHE_SIZE设置的取值,且超过半个小时缓存文件未被访问时,缓存文件就会老化。可通过环境变量ASCEND_REMAIN_CACHE_SIZE_RATIO设置需要保留缓存的空间大小比例。

      配置示例如下:

      # ASCEND_MAX_OP_CACHE_SIZE环境变量默认值为500,取值需为整数,单位为MB
      export ASCEND_MAX_OP_CACHE_SIZE=500
      # ASCEND_REMAIN_CACHE_SIZE_RATIO环境变量取值范围:[1,100],默认值为50,单位为百分比;例如80表示缓存空间不足时,删除缓存,保留80%
      export ASCEND_REMAIN_CACHE_SIZE_RATIO=50
      • 通过环境变量配置,只对当前用户生效。
      • 若需要关闭编译缓存老化功能,可将环境变量“ASCEND_MAX_OP_CACHE_SIZE”设置为“-1”,此时访问算子缓存时不会更新访问时间,算子编译缓存不会老化,磁盘空间使用默认大小500M。

    若同时配置了op_cache.ini文件和环境变量,则优先读取op_cache.ini文件中的配置项,若op_cache.ini文件和环境变量都未设置,则读取系统默认值:默认磁盘空间大小500M,默认保留缓存的空间50%。

  • 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型因使用的缓存内容被清除而编译失败。
  • 建议模型最终发布时设置编译缓存选项为disable或者force。
  • 如果算子调优后知识库变更,则需要通过设置为force来刷新缓存,否则无法应用新的调优知识库,从而导致调优应用执行失败。
  • 调试开关打开的场景:
    • OP_DEBUG_LEVEL配置非0值:会忽略OP_COMPILER_CACHE_MODE参数的配置,不启用算子编译缓存功能,算子全部重新编译。
    • OP_DEBUG_CONFIG配置非空,且配置OP_DEBUG_LIST字段,会忽略OP_COMPILER_CACHE_MODE参数的配置,不启用算子编译缓存功能,算子全部重新编译。
    • OP_DEBUG_CONFIG配置非空,且配置文件中配置了OP_DEBUG_LIST字段
      • 列表中的算子,忽略OP_COMPILER_CACHE_MODE参数的配置继续重新编译。
      • 列表外的算子,如果OP_COMPILER_CACHE_MODE参数配置为enable或force,则启用缓存功能;若配置为disable,则不启用缓存功能,仍旧重新编译。

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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 200/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 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

OP_DEBUG_LEVEL

算子编译debug功能开关。

如果要自行指定算子编译的过程文件存放路径,则需要通过DEBUG_DIR参数指定,OP_DEBUG_LEVEL取值为0时,使用DEBUG_DIR参数不生效。

参数取值:

  • 0:不开启算子debug功能,在当前执行路径不生成算子编译目录kernel_meta。默认为0。
  • 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场景下,由于算子编译时会遍历可能存在的所有场景,最终可能会导致由于算子Kernel文件过大而无法进行编译的情况,此种场景下,建议不要配置为2。

    由于算子kernel文件过大而无法编译的日志显示如下:

    message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o:(xxxx)

配置示例:

{ge::ir_option::OP_DEBUG_LEVEL, "1"}

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

OP_DEBUG_CONFIG

Global Memory内存检测功能开关。

参数取值:

取值为.cfg配置文件路径,配置文件内多个选项用英文逗号分隔:

  • oom:算子执行过程中,检测Global Memory是否内存越界。
    • 配置该选项,算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件)。
    • 使用该选项后,在算子编译过程中会加入如下的检测逻辑,用户可以通过再使用dump_cce参数,在生成的.cce文件中查看如下的代码。
      inline __aicore__ void  CheckInvalidAccessOfDDR(xxx) {
          if (access_offset < 0 || access_offset + access_extent > ddr_size) {
              if (read_or_write == 1) {
                  trap(0X5A5A0001);
              } else {
                  trap(0X5A5A0002);
              }
          }
      }

      实际执行过程中,如果确实内存越界,会抛出“EZ9999”错误码。

  • 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....

配置示例:/root/test0.cfg,其中,test0.cfg文件信息为:

{ge::ir_option::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参数指定的配置文件中。

配置示例如下:OP_DEBUG_CONFIG参数指定的配置文件(例如test0.cfg)中增加如下信息:

{ge::ir_option::OP_DEBUG_CONFIG, "ccec_g,oom"}
{ge::ir_option::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 ...

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

MODIFY_MIXLIST

混合精度场景下,通过此参数指定混合精度黑白灰名单的路径以及文件名,自行指定哪些算子允许降精度,哪些算子不允许降精度。配置为路径以及文件名,文件为json格式。黑白灰名单,可从“OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json”内置优化策略文件中查看“precision_reduce”参数下的flag参数值:

  • 若取值为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 200/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:不开启稀疏特性。默认为0。

配置示例:

{ge::ir_option::SPARSITY, "1"}

使用约束:使用该参数时,请确保模型是稀疏的模型,建议用户使用AMCT(TensorFlow)或AMCT(PyTorch)的组合压缩功能获取,且组合压缩只能是4选2结构化稀疏+量化感知训练模式。

支持情况

Atlas 200/500 A2推理产品,支持

Atlas A2训练系列产品/Atlas 800I A2推理产品,支持

Atlas 推理系列产品,不支持

Atlas 200/300/500 推理产品,不支持

Atlas 训练系列产品,不支持

EXTERNAL_WEIGHT

生成om模型文件时,是否将原始网络中的Const/Constant节点的权重外置,同时将节点类型转换为FileConstant类型。

离线场景,如果模型权重较大且环境对om大小有限制,建议开启外置权重将权重单独保存,来减小om大小。

参数取值:

  • 0:权重不外置,直接保存在om模型文件中。默认为0。
  • 1:权重外置,将网络中所有的Const/Constant节点的权重文件落盘,并将节点类型转换为FileConstant类型;权重文件以weight_+hash值命名。

配置示例

{ge::ir_option::EXTERNAL_WEIGHT, "1"}

使用约束:

  • 权重外置场景,在使用AscendCL接口开发推理应用、加载模型时:

    接口详细介绍请参见《AscendCL应用软件开发指南 (C&C++)》

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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 200/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 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

OPTION_HOST_ENV_CPU

若模型编译环境的操作系统及其架构与模型运行环境不一致时,则需使用本参数设置模型运行环境的操作系统架构。如果不设置,则默认取模型编译环境的操作系统架构。

与OPTION_HOST_ENV_OS参数配合使用。

参考取值:

  • “aarch64”
  • “x86_64”

配置示例:

{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 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

VIRTUAL_TYPE

是否支持离线模型在昇腾虚拟化实例特性生成的虚拟设备上运行。

当前芯片算力比较大,云端用户或者小企业完全不需要使用这么大算力,昇腾虚拟化实例特性支持对芯片的算力进行切分,可满足用户根据自己的业务按需申请算力的诉求。

虚拟设备是指按照指定算力在芯片上申请的虚拟加速资源。

参数取值:

  • 0:默认值,离线模型不在昇腾虚拟化实例特性生成的虚拟设备上运行。
  • 1:离线模型在不同算力的虚拟设备上运行。

配置示例:

{ge::ir_option::VIRTUAL_TYPE, "1"}

使用约束

  1. 参数取值为1时,进行模型转换,则转换后离线模型的NPU运行核数(blockdim)可能比实际aicore_num核数大,为aicore_num支持配置范围的最小公倍数:

    例如aicore_num支持配置范围为{1,2,4,8},参数取值为1转换后的离线模型,NPU运行核数可能为8。

  2. 参数取值为1时,转换后的模型,如果包括如下算子,会默认使用单核,该场景下,将会导致转换后的模型推理性能下降。
    • DynamicRNN
    • PadV2D
    • SquareSumV2
    • DynamicRNNV2
    • DynamicRNNV3
    • DynamicGRUV

支持情况

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/500 A2推理产品:支持

Atlas A2训练系列产品/Atlas 800I A2推理产品:支持

Atlas 200/300/500 推理产品:不支持

COMPRESSION_OPTIMIZE_CONF

压缩优化功能配置文件路径以及文件名,通过该参数使能配置文件中指定的压缩优化特性,从而提升网络性能。例如:/home/test/compression_optimize.cfg。

文件内容配置示例如下:

enable_first_layer_quantization:true
  • 当前配置文件仅支持配置enable_first_layer_quantization特性,用于控制AIPP首层卷积是否进行优化(AIPP会与量化后模型首层卷积CONV2D前的Quant算子进行融合)。

    使能enable_first_layer_quantization特性时,只有网络结构中存在AIPP+CONV2D结构,并且模型编译时ENABLE_SMALL_CHANNEL参数设置为1时,才有可能获得性能收益。由于量化后的模型存在一定程度上的精度损失,用户根据实际情况决定是否使能该特性。

  • 配置文件中冒号前面表示压缩优化特性名称,冒号后面表示是否使能该特性,true表示使能,false表示不使能,默认不使能。

支持情况

Atlas 推理系列产品:支持

Atlas 200/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
    {
    	"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个数必须保持一致。
    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 200/500 A2推理产品:不支持

OPTION_SCREEN_PRINT_MODE

控制图编译过程是否打屏。

参数取值:

  • enable:打屏,默认为enable。
  • disable:不打屏。

配置示例:

{ge::ir_option::OPTION_SCREEN_PRINT_MODE, "disable"}

支持情况

Atlas 200/300/500 推理产品:支持

Atlas 推理系列产品:支持

Atlas 训练系列产品:支持

Atlas 200/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 200/500 A2推理产品:不支持

TILING_SCHEDULE_OPTIMIZE

Tiling下沉调度优化开关。

由于NPU中AI Core内部存储无法完全容纳算子输入输出的所有数据,需要每次搬运一部分输入数据进行计算然后搬出,再搬运下一部分输入数据进行计算,该过程称之为Tiling;根据算子的shape等信息来确定数据切分算法相关参数(比如每次搬运的块大小,以及总共循环多少次)的计算程序,称之为Tiling实现。由于Tiling实现中完成的均为标量计算,AI Core并不擅长,故一般在Host侧CPU上执行,但是满足下述条件Tiling实现会下沉到Device侧执行:

  1. 模型为静态shape。
  2. 模型中的算子支持Tiling下沉,比如FusedInferAttentionScore、IncreFlashAttention等融合算子。
  3. 支持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 200/500 A2推理产品:不支持

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词