性能调优

参数名

描述

op_select_implmode

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

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

variable_format_optimize

是否开启变量格式优化。

  • True:开启,默认开启。
  • False:关闭。

为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式。但在用户特殊要求场景下,可以选择关闭该功能开关。

配置示例:

npu.global_options().variable_format_optimize=True

hcom_parallel

是否启用Allreduce梯度更新和前后向并行执行。

  • True:开启Allreduce并行。
  • False:关闭Allreduce并行。

默认值为“True”,配置示例:

npu.global_options().hcom_parallel=True

enable_small_channel

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

  • 0:关闭。训练(graph_run_mode为1)场景下默认关闭,且训练场景下不建议用户开启。
  • 1:使能。在线推理(graph_run_mode为0)场景下默认开启。
    说明:

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

配置示例:

npu.global_options().enable_small_channel=1

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并行进行,以达到优化通信拖尾时间的目的。取值:

  • True。
  • False:默认为False。

配置示例:

npu.global_options().is_tailing_optimization=True

enable_scope_fusion_passes

指定编译时需要生效的融合规则列表。此处传入注册的融合规则名称,允许传入多个,用“,”隔开。

无论是内置还是用户自定义的Scope融合规则,都分为如下两类:

  • 通用融合规则(General):各网络通用的Scope融合规则;默认生效,不支持用户指定失效。
  • 定制化融合规则(Non-General):特定网络适用的Scope融合规则;默认不生效,用户可以通过enable_scope_fusion_passes指定生效的融合规则列表。

配置示例:

npu.global_options().enable_scope_fusion_passes="ScopeLayerNormPass,ScopeClipBoxesPass"