性能调优

基础配置

配置项

说明

使用场景

iterations_per_loop

sess.run模式下通过set_iteration_per_loop配置小循环次数,即每次sess.run(),在Device侧执行训练迭代的次数。

此处的配置参数和set_iteration_per_loop设置的iterations_per_loop值保持一致,用于功能校验。

配置示例:

custom_op.parameter_map["iterations_per_loop"].i = 10

训练

高级配置

配置项

说明

使用场景

hcom_parallel

分布式训练场景下,可通过此开关控制是否启用Allreduce梯度更新和前后向并行执行。

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

默认值为“True”,针对小网络(例如:Resnet18),可配置为“False”。

配置示例:

custom_op.parameter_map["hcom_parallel"].b = True

训练

enable_small_channel

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

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

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

配置示例:

custom_op.parameter_map["enable_small_channel"].i = 1

在线推理/训练

op_precision_mode

设置具体某个算子的高精度或高性能模式,通过该参数传入自定义的模式配置文件op_precision.ini,可以为不同的算子设置不同的模式。

支持按照算子类型或者按照节点名称设置,按节点名称设置的优先级高于算子类型,样例如下:

[ByOpType]
optype1=high_precision
optype2=high_performance
[ByNodeName]
nodename1=high_precision
nodename2=high_performance

该参数不能与op_select_implmode、optypelist_for_implmode参数同时使用,若三个参数同时配置,则只有op_precision_mode参数指定的模式生效。

一般场景下该参数不建议配置。若使用高性能或者高精度模式,网络性能或者精度不是最优,则可以使用该参数,通过配置ini文件调整某个具体算子的精度模式。

配置示例:

custom_op.parameter_map["op_precision_mode"].s = tf.compat.as_bytes("/home/test/op_precision.ini")

训练/在线推理

enable_scope_fusion_passes

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

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

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

配置示例:

custom_op.parameter_map["enable_scope_fusion_passes"].s = tf.compat.as_bytes("ScopeLayerNormPass,ScopeClipBoxesPass")

训练/在线推理

stream_max_parallel_num

此配置项仅适用于NMT网络。

用于指定AI CPU/AI Core引擎的并行度,从而实现AI CPU/AI Core算子间的并行执行。

DNN_VM_AICPU为AI CPU引擎名称,本示例指定了AI CPU引擎的并发数为10;

AIcoreEngine为AI Core引擎名称,本示例指定了AI Core引擎的并发数为1。

AI CPU/AI Core引擎的并行度默认为1,取值不能超过AI Core的最大核数。

配置示例:

custom_op.parameter_map["stream_max_parallel_num"].s = tf.compat.as_bytes("DNN_VM_AICPU:10,AIcoreEngine:1")

训练/在线推理

is_tailing_optimization

此配置项仅适用于Bert网络。

分布式训练场景下,是否开启通信拖尾优化,用于提升训练性能。通信拖尾优化即,通过计算依赖关系的改变,将不依赖于最后一个AR(梯度聚合分片)的计算操作调度到和最后一个AR并行进行,以达到优化通信拖尾时间的目的。取值:

  • True:开启通信拖尾优化。
  • False:不开启通信拖尾优化,默认为False。

必须和NPUOptimizer配合使用,且要求和NPUOptimizer中的is_tailing_optimization值保持一致。

配置示例:

custom_op.parameter_map["is_tailing_optimization"].b = True

训练