配置参数说明
基础功能
| 参数名 | 描述 | 
|---|---|
| graph_run_mode | 图执行模式,取值: 
 配置示例: npu.global_options().graph_run_mode=1 | 
| deterministic | 是否开启确定性计算,开启确定性开关后,算子在相同的硬件和输入下,多次执行将产生相同的输出。 此配置项有以下两种取值: 
 默认情况下,无需开启确定性计算。因为开启确定性计算后,算子执行时间会变慢,导致性能下降。在不开启确定性计算的场景下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。 但当发现模型执行多次结果不同,或者精度调优时,可以通过此配置开启确定性计算辅助进行调试调优。需要注意,如果希望有完全确定的结果,在训练脚本中需要设置确定的随机数种子,保证程序中产生的随机数也都是确定的。 配置示例: npu.global_options().deterministic=1 | 
内存管理
动态shape
| 参数名 | 描述 | 
|---|---|
| ac_parallel_enable | 动态shape图中,是否允许AI CPU算子和AI Core算子并行运行。 
          动态shape图中,开关开启时,系统自动识别图中可以和AI Core并发的AI CPU算子,不同引擎的算子下发到不同流上,实现多引擎间的并行,从而提升资源利用效率和动态shape执行性能。
           
 配置示例: npu.global_options().ac_parallel_enable="1" | 
| compile_dynamic_mode | 
          是否需要泛化图中所有的输入shape。
           
 配置示例: npu.global_options().compile_dynamic_mode=True | 
功能调试
精度调优
| 参数名 | 描述 | 
|---|---|
| precision_mode | 算子精度模式,配置要求为string类型。 
 针对Atlas 训练系列产品,默认配置项为“allow_fp32_to_fp16”。 针对Atlas A2 训练系列产品,默认配置项为“must_keep_origin_dtype”。 配置示例: npu.global_options().precision_mode="allow_mix_precision" 
           说明: 
           
 | 
| precision_mode_v2 | 算子精度模式,配置要求为string类型。 
 配置示例: npu.global_options().precision_mode_v2="origin" 
           说明: 
           
 | 
| modify_mixlist | 开启混合精度的场景下,开发者可通过此参数指定混合精度黑白灰名单的路径以及文件名,自行指定哪些算子允许降精度,哪些算子不允许降精度。 用户可以在脚本中通过配置“precision_mode”参数或者“precision_mode_v2”参数开启混合精度。 
          黑白灰名单存储文件为json格式,配置示例如下:
           npu.global_options().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"
     ]
  }
}说明:上述配置文件样例中展示的算子仅作为参考,请基于实际硬件环境和具体的算子内置优化策略进行配置。 混合精度场景下算子的内置优化策略可在“CANN软件安装目录/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json”文件中查询,例如: "Conv2D":{
    "precision_reduce":{
        "flag":"true"
},
 | 
| customize_dtypes | 使用precision_mode参数设置整个网络的精度模式时,可能会存在个别算子存在精度问题,此种场景下,可以使用customize_dtypes参数配置个别算子的精度模式,而模型中的其他算子仍以precision_mode指定的精度模式进行编译。需要注意,当precision_mode取值为“must_keep_origin_dtype”时,customize_dtypes参数不生效。 该参数需要配置为配置文件路径及文件名,例如:/home/test/customize_dtypes.cfg。 配置示例: npu.global_options().customize_dtypes = "/home/test/customize_dtypes.cfg" 配置文件中列举需要自定义计算精度的算子名称或算子类型,每个算子单独一行,且算子类型必须为基于Ascend 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 
           说明: 
           
 | 
精度比对
| 参数名 | 描述 | 
|---|---|
| fusion_switch_file | 融合开关配置文件路径以及文件名。 格式要求:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。 系统内置了一些图融合和UB融合规则,均为默认开启,可以根据需要关闭指定的融合规则。 
          配置示例:
           npu.global_options().fusion_switch_file="/home/test/fusion_switch.cfg" 配置文件fusion_switch.cfg样例如下,on表示开启,off表示关闭。 {
    "Switch":{
        "GraphFusion":{
            "RequantFusionPass":"on",
            "ConvToFullyConnectionFusionPass":"off",
            "SoftmaxFusionPass":"on",
            "NotRequantFusionPass":"on",
            "ConvConcatFusionPass":"on",
            "MatMulBiasAddFusionPass":"on",
            "PoolingFusionPass":"on",
            "ZConcatv2dFusionPass":"on",
            "ZConcatExt2FusionPass":"on",
            "TfMergeSubFusionPass":"on"
        },
        "UBFusion":{
            "TbePool2dQuantFusionPass":"on"
        }
    }
}同时支持用户一键关闭融合规则: {
    "Switch":{
        "GraphFusion":{
            "ALL":"off"
        },
        "UBFusion":{
            "ALL":"off"
         }
    }
}需要注意的是: 
 | 
| dump_config.enable_dump | 是否开启Data Dump功能,默认值:False。 
 
          配置示例:
           npu.global_options().dump_config.enable_dump=True | 
| dump_config.dump_path | Dump文件保存路径。enable_dump或enable_dump_debug为true时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。 
 
          配置示例:
           npu.global_options().dump_config.dump_path = "/home/HwHiAiUser/output" | 
| dump_config.dump_step | 指定采集哪些迭代的Data Dump数据。 多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。 若不配置该参数,表示采集所有迭代的dump数据。 
          配置示例:
           npu.global_options().dump_config.dump_step="0|5" | 
| dump_config.dump_mode | Data Dump模式,用于指定dump算子输入还是输出数据,默认为output。取值如下: 
 
           说明: 
           配置为all时,由于部分算子在执行过程中会修改输入数据,例如集合通信类算子HcomAllGather、HcomAllReduce等,因此系统在进行dump时,会在算子执行前dump算子输入,在算子执行后dump算子输出,这样,针对同一个算子,算子输入、输出的dump数据是分开落盘,会出现多个dump文件,在解析dump文件后,用户可通过文件内容判断是输入还是输出。 
          配置示例:
           npu.global_options().dump_config.dump_mode="all" | 
| dump_config.dump_data | 指定算子dump内容类型,取值: 
 大规模训练场景下,通常dump数据量太大并且耗时长,可以先dump所有算子的统计数据,根据统计数据识别可能异常的算子,然后再指定dump异常算子的input或output数据。 配置示例: npu.global_options().dump_config.dump_data = "stats" | 
| dump_config.dump_layer | 指定需要dump的算子。取值为算子名,多个算子名之间使用空格分隔。若不配置此字段,默认dump全部算子。 若指定的算子其输入涉及data算子,会同时将data算子信息dump出来。 配置示例: npu.global_options().dump_config.dump_layer = "nodename1 nodename2 nodename3" | 
| dump_config.enable_dump_debug | 
          溢出检测场景下,是否开启溢出数据采集功能,默认值:False。
           
 
           说明: 
           
 
          配置示例:
           npu.global_options().dump_config.enable_dump_debug=True | 
| dump_config.dump_debug_mode | 
          溢出检测模式,取值如下:
           
 
          配置示例:
           npu.global_options().dump_config.dump_debug_mode="aicore_overflow" | 
| quant_dumpable | 
          如果TensorFlow网络是经过AMCT工具量化后的网络,可通过此参数控制是否采集量化前的dump数据,默认值为“0”。
           
 配置示例: npu.global_options().quant_dumpable="1" 
           说明: 
           此参数仅适用于在线推理场景下使用。 开启Data Dump的场景下,可通过将此配置项配置为“1”,确保可以采集量化前的dump数据。 | 
性能调优
| 参数名 | 描述 | 
|---|---|
| hcom_parallel | 是否启用Allreduce梯度更新和前后向并行执行。 
 默认值为“True”,配置示例: npu.global_options().hcom_parallel=True 针对小网络(例如:Resnet18),建议配置为False。 | 
| enable_small_channel | 是否使能small channel的优化,使能后在channel<=4的卷积层会有性能收益。 
 配置示例: npu.global_options().enable_small_channel=1 | 
| op_precision_mode | 设置具体某个算子的高精度或高性能模式,通过该参数传入自定义的模式配置文件op_precision.ini,可以为不同的算子设置不同的模式。 支持按照算子类型或者按照节点名称设置,按节点名称设置的优先级高于算子类型,样例如下: [ByOpType] optype1=high_precision optype2=high_performance optype3=support_out_of_bound_index [ByNodeName] nodename1=high_precision nodename2=high_performance nodename3=support_out_of_bound_index 
 具体某个算子支持配置的精度/性能模式取值,可通过CANN软件安装后文件存储路径的“opp/built-in/op_impl/ai_core/tbe/impl_mode/all_ops_impl_mode.ini”文件查看。 该参数不能与op_select_implmode、optypelist_for_implmode参数同时使用,若三个参数同时配置,则只有op_precision_mode参数指定的模式生效。 一般场景下该参数无需配置。若使用高性能或者高精度模式,网络性能或者精度不是最优,则可以使用该参数,通过配置ini文件调整某个具体算子的精度模式。 配置示例: npu.global_options().op_precision_mode="/home/test/op_precision.ini" | 
| stream_max_parallel_num | 此参数仅适用于NMT网络。 指定AICPU/AICORE引擎的并行度,从而实现AICPU/AICORE算子间的并行执行。 DNN_VM_AICPU为AICPU引擎名称,本示例指定了AICPU引擎的并发数为10; AIcoreEngine为AICORE引擎名称,本示例指定了AICORE引擎的并发数为1。 AICPU/AICORE引擎的并行度默认为1,取值范围为:[1,13]。 配置示例: npu.global_options().stream_max_parallel_num="DNN_VM_AICPU:10,AIcoreEngine:1" | 
| is_tailing_optimization | 此参数仅适用于Bert网络。 分布式训练场景下,是否开启通信拖尾优化,用于提升训练性能。通信拖尾优化即,通过计算依赖关系的改变,将不依赖于最后一个AR(梯度聚合分片)的计算操作调度到和最后一个AR并行进行,以达到优化通信拖尾时间的目的。取值: 
 配置示例: npu.global_options().is_tailing_optimization=True | 
| enable_scope_fusion_passes | 指定编译时需要生效的融合规则列表。此处传入注册的融合规则名称,允许传入多个,用“,”隔开。 无论是内置还是用户自定义的Scope融合规则,都分为如下两类: 
 配置示例: npu.global_options().enable_scope_fusion_passes="ScopeLayerNormPass,ScopeClipBoxesPass" | 
Profiling
AOE
算子编译
| 参数名 | 描述 | 
|---|---|
| op_compiler_cache_mode | 用于配置算子编译磁盘缓存模式。默认值为enable。 
 使用说明: 
 
 
          配置示例:
           npu.global_options().op_compiler_cache_mode="enable" | 
| op_compiler_cache_dir | 用于配置算子编译磁盘缓存的目录。 路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。 如果参数指定的路径存在且有效,则在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。 算子编译缓存文件存储优先级为: 配置参数“op_compiler_cache_dir” > ${ASCEND_CACHE_PATH}/kernel_cache_host标识 > 默认路径($HOME/atc_data)。 关于环境变量ASCEND_CACHE_PATH的详细说明可参见《环境变量参考》。 
          配置示例:
           npu.global_options().op_compiler_cache_dir="/home/test/kernel_cache" | 
异常补救
试验参数
试验参数为调试功能扩展参数,后续版本可能会存在变更,不支持应用于商用产品中。
| 参数名 | 描述 | 
|---|---|
| jit_compile | 模型编译时是否优先在线编译。 
 默认值:auto。 配置示例: npu.global_options().jit_compile = "auto" 
           须知: 
           该参数仅受限于大型推荐类型网络使用。 | 
后续版本废弃配置
| 参数名 | 描述 | 
|---|---|
| op_select_implmode | 昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括: 
 默认值为None,代表不使能此配置。 
          配置示例:
           npu.global_options().op_select_implmode="high_precision" | 
| optypelist_for_implmode | 列举算子optype的列表,该列表中的算子使用op_select_implmode参数指定的模式,当前支持的算子为Pooling、SoftmaxV2、LRN、ROIAlign,多个算子以“,”分隔。 该参数需要与op_select_implmode参数配合使用,配置示例: npu.global_options().op_select_implmode="high_precision" npu.global_options().optypelist_for_implmode="Pooling,SoftmaxV2" 默认值为None,代表不使能此配置。 | 
| variable_format_optimize | 是否开启变量格式优化。 
 为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式。但在用户特殊要求场景下,可以选择关闭该功能开关。 默认值为None,代表不使能此配置。 配置示例: npu.global_options().variable_format_optimize=True | 
| op_debug_level | 算子debug功能开关,取值: 
 默认值为None,代表不使能此配置。 配置示例: npu.global_options().op_debug_level=0 | 
| graph_memory_max_size | 历史版本,该参数用于指定网络静态内存和最大动态内存的大小。 当前版本,该参数不再生效。系统会根据网络使用的实际内存大小动态申请。 | 
| variable_memory_max_size | 历史版本,该参数用于指定变量内存的大小。 当前版本,该参数不再生效。系统会根据网络使用的实际内存大小动态申请。 |