aclgrphBuildInitialize支持的配置参数

表1 aclgrphBuildInitialize支持的配置参数

参数

说明

CORE_TYPE

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

  • VectorCore
  • AiCore,默认为AiCore。

芯片支持情况:

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

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

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

SOC_VERSION

该参数为必选配置。

昇腾AI处理器的版本,可以从Ascend-cann-toolkit安装目录/ascend-toolkit/latest/data/platform_config目录下查看,".ini"文件的文件名即为对应的${soc_version}

如果用户根据上述方法仍旧无法确定具体使用的${soc_version},则:
  1. 请参考《CANN Ascend-DMI工具使用指导》,完成使用工具>使用前准备,然后进入使用工具>设备实时状态查询章节。
  2. 使用相关命令查看芯片的详细信息,例如使用ascend-dmi -i -dt命令查看芯片的详细信息,返回信息中“Chip Name”对应取值,去掉空格后,即为具体使用的${soc_version}

芯片支持情况:

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

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

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

BUFFER_OPTIMIZE

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

芯片支持情况:

昇腾310 AI处理器

昇腾910 AI处理器

昇腾310P AI处理器

ENABLE_COMPRESS_WEIGHT

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

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

  • true:表示使能
  • false:表示关闭

芯片支持情况:

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

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

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

COMPRESS_WEIGHT_CONF

要压缩的node节点列表配置文件路径,node节点主要为conv算子、fc算子。

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

该参数不能与ENABLE_COMPRESS_WEIGHT参数同时使用。

Weight压缩配置文件由昇腾模型压缩工具输出,文件内容即为node名称列表,node名称之间以“;”间隔开。

例如,compress_weight_nodes.cfg文件内容为:conv1; fc1; conv2_2/x1; fc2; conv5_32/x2;fc6。

芯片支持情况:

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

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

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

PRECISION_MODE

选择算子精度模式。

  • force_fp16:表示算子支持float16和float32时,强制选择float16。默认为force_fp16。
  • force_fp32:既支持float16又支持float32数据类型时,强制选择float32。
  • allow_fp32_to_fp16:表示算子不支持fp32时,选择fp16。
  • must_keep_origin_dtype:表示保持原图精度。如果原图中部分算子精度为float16,但在网络模型中该部分算子的实现不支持float16、仅支持float32,则系统内部会自动采用高精度float32;如果原图中部分算子精度为float32,但在网络模型中该部分算子的实现不支持float32类型、仅支持float16类型,则不能使用该参数值,系统不支持使用低精度。
  • allow_mix_precision:表示使用混合精度模式。

芯片支持情况:

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

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

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

TUNE_DEVICE_IDS

当前版本暂不支持。

EXEC_DISABLE_REUSED_MEMORY

内存复用开关。

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

芯片支持情况:

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

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

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

ENABLE_SINGLE_STREAM

是否使能一个模型只能使用一条stream。

由于SoC的stream资源有限,在SoC场景下需要用户打开此开关。

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

芯片支持情况:

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

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

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

AICORE_NUM

设置编译时使用的AI Core数目,默认为10。

芯片支持情况:

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

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

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

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"
            }
        }
    }

芯片支持情况:

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

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

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

ENABLE_SMALL_CHANNEL

是否使能small channel的优化,使能后在channel<=4的卷积层会有性能收益。

建议用户在推理场景下打开此开关。

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

芯片支持情况:

昇腾310 AI处理器,支持该参数。该参数使能后,当前只在Resnet50、Resnet101、Resnet152、GoogleNet网络模型能获得性能收益。其他网络模型性能可能会下降,用户根据实际情况决定是否使能该参数。

昇腾910 AI处理器,支持该参数。该参数使能后,当前只在Resnet50、Resnet101、Resnet152网络模型能获得性能收益。其他网络模型性能可能会下降,用户根据实际情况决定是否使能该参数。

昇腾310P AI处理器,支持该参数。该参数使能后,当前只在Resnet50、Resnet101、Resnet152网络模型能获得性能收益。其他网络模型性能可能会下降,用户根据实际情况决定是否使能该参数。

OP_SELECT_IMPL_MODE

昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括:

  • high_precision:表示算子选择高精度实现。高精度实现算子是指在fp16输入的情况下,通过泰勒展开/牛顿迭代等手段进一步提升算子的精度。
  • high_performance:表示算子选择高性能实现。高性能实现算子是指在fp16输入的情况下,不影响网络精度前提的最优性能实现。默认为high_performance。

芯片支持情况:

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

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

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

OPTYPELIST_FOR_IMPLMODE

列举算子optype的列表,该列表中的算子使用OP_SELECT_IMPL_MODE参数指定的模式,当前支持的算子为Pooling、SoftmaxV2、LRN、ROIAlign。

该参数需要与OP_SELECT_IMPL_MODE参数配合使用,例如:

OP_SELECT_IMPL_MODE配置为high_precision

OPTYPELIST_FOR_IMPLMODE配置为Pooling。

芯片支持情况:

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

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

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

OP_COMPILER_CACHE_MODE

用于配置算子编译磁盘缓存模式。默认值为enable。

  • enable:启用算子编译缓存功能。启用后,算子编译信息缓存至磁盘,相同编译参数的算子无需重复编译,直接使用缓存内容,从而提升编译速度。
  • force:启用算子编译缓存功能,区别于enable模式,force模式下会强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。比如当用户的python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。
    说明:

    配置为force模式完成编译后,建议后续编译修改为enable模式,以避免每次编译时都强制刷新缓存。

  • disable:禁用算子编译缓存功能。

使用说明:

  • 该参数和OP_COMPILER_CACHE_DIR配合使用。
  • 启用算子编译缓存功能时,可以通过环境变量ASCEND_MAX_OP_CACHE_SIZE来限制某个芯片下缓存文件夹磁盘空间的大小;通过环境变量ASCEND_REMAIN_CACHE_SIZE_RATIO来设置编译缓存空间大小达到ASCEND_MAX_OP_CACHE_SIZE需要删除旧的kernel文件时,保留缓存的空间大小比例。上述环境变量的具体使用说明请参考ASCEND_MAX_OP_CACHE_SIZEASCEND_REMAIN_CACHE_SIZE_RATIO
  • 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型因使用的缓存内容被清除而编译失败。
  • 建议模型最终发布时设置编译缓存选项为disable或者force。
  • 如果算子调优后知识库变更,则需要通过设置为force来刷新缓存,以便应用新的调优知识库。
  • 注意,调试开关打开的场景下,即OP_DEBUG_LEVEL非0值或者OP_DEBUG_CONFIG配置非空时,会忽略算子编译磁盘缓存模式的配置,不启用算子编译缓存。主要基于以下两点考虑:
    • 启用算子编译缓存功能(enable或force模式)后,相同编译参数的算子无需重复编译,编译过程日志无法完整记录。
    • 受限于缓存空间大小,对调试场景的编译结果不做缓存。

芯片支持情况:

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

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

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

OP_COMPILER_CACHE_DIR

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

默认值:$HOME/atc_data

芯片支持情况:

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

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

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

DEBUG_DIR

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

默认生成在当前路径下。

芯片支持情况:

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

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

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

OP_DEBUG_LEVEL

算子debug功能开关,取值:

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

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

芯片支持情况:

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

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

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

MODIFY_MIXLIST

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

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

配置示例:
{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"
     ]
  }
}

上述配置文件样例中展示的算子仅作为参考,请基于实际硬件环境和具体的算子内置优化策略进行配置。混合精度场景下算子的内置优化策略可在“OPP安装目录/opp/built-in/op_impl/ai_core/tbe/config/${soc_version}/aic-${soc_version}-ops-info.json”文件中查询,例如:

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

芯片支持情况:

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

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

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

SPARSITY

使能全局稀疏特性。

昇腾模型压缩工具4选2结构化稀疏后输出的模型,可能存在weight连续4个Cin维度元素中至少有2个为0的场景,模型转换时通过使能全局稀疏开关,将该场景下的元素筛选成2个,从而节省后续推理的计算量,提高推理性能。

由于硬件约束,该参数不能与ENABLE_COMPRESS_WEIGHT、COMPRESS_WEIGHT_CONF同时使用。

参数值:

  • 1:表示开启4选2结构化稀疏。
  • 0:不开启稀疏特性。

参数默认值:0

芯片支持情况:

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

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

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

EXTERNAL_WEIGHT

是否将网络中Const/Constant节点的权重保存在单独的文件中,取值包括:

  • 0:不将原网络中的Const/Constant节点的权重保存在单独的文件中,而是直接保存在om模型文件中。默认为0。
  • 1:将原始网络中的Const/Constant节点的权重保存在单独的文件中,并将其类型转换为FileConstant且该文件保存在与om文件同级的weight目录下,权重文件以算子名称命名。

说明:当网络中weight占用内存较大且对模型大小有限制时,建议将此配置项设置为“1”。

芯片支持情况:

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

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

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

VIRTUAL_TYPE

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

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

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

参数取值:

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

使用约束

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

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

  2. 参数取值为1时,转换后的模型,如果包括如下算子,会默认使用单核,该场景下,将会导致转换后的模型推理性能下降。
    • ActULQClampMaxGrad
    • ActULQClampMinGrad
    • BiasAddGrad
    • BinaryCrossEntropy
    • Cdist
    • CdistGrad
    • Dot
    • DynamicRNN
    • GlobalLpPool
    • KLDiv
    • L2Loss
    • LayerNorm
    • LpLoss
    • LpNorm
    • LpNormReduce
    • MseLoss
    • PadV2
    • PadV2D
    • PadV3
    • ReduceAll
    • ReduceAllD
    • ReduceAny
    • ReduceAnyD
    • ReduceLogSum
    • ReduceLogSumExp
    • ReduceMax
    • ReduceMaxD
    • ReduceMean
    • ReduceMeanD
    • ReduceMeanWithCount
    • ReduceMin
    • ReduceMinD
    • ReduceProd
    • ReduceProdD
    • ReduceStdV2Update
    • ReduceStdWithMean
    • ReduceSum
    • ReduceSumD
    • SmoothL1LossV2
    • SquareSumV1
    • SquareSumV2
    • SyncBatchNormGatherStatsWithCounts
    • DynamicRNN
    • DynamicRNNV2
    • DynamicRNNV3
    • DynamicGRUV

    支持的产品形态:

    昇腾910 AI处理器

    昇腾310P AI处理器

COMPRESSION_OPTIMIZE_CONF

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

文件内容配置示例如下:

enable_first_layer_quantization:true
  • 当前配置文件仅支持配置enable_first_layer_quantization特性,用于控制AIPP首层卷积是否进行优化(AIPP会与量化后模型首层卷积CONV2D前的Quant算子进行融合)。
  • 配置文件中冒号前面表示压缩优化特性名称,冒号后面表示是否使能该特性,true表示使能,false表示不使能,默认不使能。