精度比对

配置项

说明

使用场景

enable_dump

是否开启Data Dump功能,默认值:False。

  • True:开启Data Dump功能,从dump_path读取Dump文件保存路径,dump_path为None时会产生异常。
  • False:关闭Data Dump功能。
配置示例:
custom_op.parameter_map["enable_dump"].b = True

训练/在线推理

dump_path

Dump文件保存路径。enable_dump或enable_dump_debug为true时,该参数必须配置。

该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。

  • 绝对路径配置以“/”开头,例如:/home/HwHiAiUser/output。
  • 相对路径配置直接以目录名开始,例如:output。

配置示例:

custom_op.parameter_map["dump_path"].s = tf.compat.as_bytes("/home/HwHiAiUser/output")  

训练/在线推理

dump_step

指定采集哪些迭代的Data Dump数据。默认值:None,表示所有迭代都会产生dump数据。

多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。

配置示例:

custom_op.parameter_map["dump_step"].s = tf.compat.as_bytes("0|5|10")

训练

dump_mode

Data Dump模式,用于指定dump算子输入还是输出数据。取值如下:

  • input:仅Dump算子输入数据
  • output:仅Dump算子输出数据,默认为output。
  • all:Dump算子输入和输出数据

配置示例:

custom_op.parameter_map["dump_mode"].s = tf.compat.as_bytes("all") 

训练/在线推理

dump_data

指定算子dump内容类型,取值:

  • tensor: dump算子数据,默认为tensor。
  • stats: dump算子统计数据,结果文件为csv格式。

大规模训练场景下,通常dump数据量太大并且耗时长,可以先dump所有算子的统计数据,根据统计数据识别可能异常的算子,然后再指定dump异常算子的input或output数据。

配置示例:

custom_op.parameter_map["dump_data"].s = tf.compat.as_bytes("stats") 

训练/在线推理

dump_layer

指定需要dump的算子。取值为算子名,多个算子名之间使用空格分隔。若不配置此字段,默认dump全部算子。

配置示例:

custom_op.parameter_map["dump_layer"].s = tf.compat.as_bytes("nodename1 nodename2 nodename3") 

训练/在线推理

enable_dump_debug

是否开启溢出检测功能,默认值:False。

  • True:开启溢出检测功能,从dump_path读取Dump文件保存路径,dump_path为None时会产生异常。
  • False:关闭溢出检测功能。

配置示例:

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

训练

dump_debug_mode

溢出检测模式,取值如下:

  • aicore_overflow:AI Core算子溢出检测,检测在算子输入数据正常的情况下,输出是否不正常的极大值(如float16下65500,38400,51200这些值)。一旦检测出这类问题,需要根据网络实际需求和算子逻辑来分析溢出原因并修改算子实现。
  • atomic_overflow:Atomic Add溢出检测,即除了AICore之外,还有其他涉及浮点计算的模块,比如SDMA,检测这些部分出现的溢出问题。
  • all:同时进行AI Core算子溢出检测和Atomic Add溢出检测。

配置示例:

custom_op.parameter_map["dump_debug_mode"].s = tf.compat.as_bytes("all") 

训练

fusion_switch_file

融合开关配置文件路径以及文件名。

格式要求:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

系统内置了一些图融合和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"
            }
        }
    }

配置示例:

custom_op.parameter_map["fusion_switch_file"].s = tf.compat.as_bytes("/home/test/fusion_switch.cfg")

训练/在线推理

buffer_optimize

高级开关,是否开启buffer优化。

  • l2_optimize:表示开启buffer优化,默认为l2_optimize。
  • off_optimize:表示关闭buffer优化。

配置示例:

custom_op.parameter_map["buffer_optimize"].s = tf.compat.as_bytes("l2_optimize")

在线推理

use_off_line

是否在昇腾AI处理器执行训练。

  • True:在昇腾AI处理器执行训练,默认为True。
  • False:在Host侧的CPU执行训练。

配置示例:

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

训练/在线推理