参数名 |
描述 |
---|---|
iterations_per_loop |
针对一次session.run调用,在昇腾AI处理器执行训练迭代的次数,默认为1,且用户设置的训练迭代总次数必须为iterations_per_loop的整数倍。昇腾AI处理器会运行iterations_per_loop指定迭代次数,然后再返回到Host侧,该参数可以减少Host与Device间的交互次数,缩短训练时长。 混合计算模式(mix_compile_mode为True)下,iterations_per_loop必须为1。 说明:当iterations_per_loop大于1时,由于循环下沉和LossScale溢出等问题,用户设置的训练迭代总次数和实际的迭代总次数可能会有差异。 配置示例: config = NPURunConfig(iterations_per_loop=1000) |
参数名 |
描述 |
---|---|
hcom_parallel |
分布式训练场景下,可通过此开关控制是否启用Allreduce梯度更新和前后向并行执行。
默认值为“True”,针对小网络(例如:Resnet18),可配置为“False”。 配置示例: config = NPURunConfig(hcom_parallel=True) |
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文件调整某个具体算子的精度模式。 配置示例: config = NPURunConfig(op_precision_mode="/home/test/op_precision.ini") |
enable_scope_fusion_passes |
指定编译时需要生效的融合规则列表。此处传入注册的融合规则名称,允许传入多个,用“,”隔开。 无论是内置还是用户自定义的Scope融合规则,都分为如下两类:
配置示例: config = NPURunConfig(enable_scope_fusion_passes="ScopeLayerNormPass,ScopeClipBoxesPass") |
stream_max_parallel_num |
此配置仅适用于NMT网络。 用于指定AICPU/AICORE引擎的并行度,从而实现AICPU/AICORE算子间的并行执行。 配置示例: config = NPURunConfig(stream_max_parallel_num="DNN_VM_AICPU:10,AIcoreEngine:1") DNN_VM_AICPU为AICPU引擎名称,本示例指定了AICPU引擎的并发数为10; AIcoreEngine为AICORE引擎名称,本示例指定了AICORE引擎的并发数为1。 AICPU/AICORE引擎的并行度默认为1,取值不能超过AI Core的最大核数。 |
is_tailing_optimization |
此配置仅用于Bert网络。 分布式训练场景下,是否开启通信拖尾优化,用于提升训练性能。通信拖尾优化即,通过计算依赖关系的改变,将不依赖于最后一个AR(梯度聚合分片)的计算操作调度到和最后一个AR并行进行,以达到优化通信拖尾时间的目的。取值:
必须和NPUOptimizer构造函数配合使用,且要求和NPUOptimizer构造函数中的is_tailing_optimization值保持一致。 配置示例: config = NPURunConfig(is_tailing_optimization=True) |
enable_small_channel |
当前版本暂不支持。 |