数据准备

推理场景

  1. 当推理过程中发现AI Core Error问题时,用户需在重新执行ATC模型转换前导入如下环境变量。
    export DUMP_GE_GRAPH=1  # 控制dump图的内容多少,取值为1,全量dump
    export DUMP_GRAPH_LEVEL=1  # 控制dump图的个数,取值为1,dump所有图
    export ASCEND_GLOBAL_LOG_LEVEL=1  # 设置全局日志级别,取值为1,代表INFO

    环境变量详细介绍请参见ATC工具使用指南日志参考

  2. 在重新执行ATC模型转换时,需配置op_debug_level参数(例如:--op_debug_level=2)。

    p_debug_level参数详细介绍请参见ATC工具使用指南

    表1 op_debug_level参数取值说明

    取值

    说明

    0

    不开启算子debug功能,默认为0。

    1

    生成TBE指令映射文件(在命令执行目录下kernel_meta文件夹中生成算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续工具进行AI Core Error问题定位。

    2

    生成TBE指令映射文件(在命令执行目录下kernel_meta文件夹中生成算子cce文件*.cce和python-cce映射文件*_loc.json),并关闭编译优化开关(开启ccec编译器选项-O0-g),用于后续工具进行AI Core Error问题定位。

    3

    不开启算子debug功能,且保留.o和.json文件。

  3. 重新执行模型转换后,会在执行目录下生成指令映射文件。

训练场景

  1. 当训练过程中发现AI Core Error问题时,用户需在重新执行训练前导入如下环境变量。

    具体细节请参见ATC工具使用指南日志参考

    export DUMP_GE_GRAPH=1  # 控制dump图的内容多少,取值为1,全量dump
    export DUMP_GRAPH_LEVEL=1  # 控制dump图的个数,取值为1,dump所有图
    export ASCEND_GLOBAL_LOG_LEVEL=1  # 设置全局日志级别,取值为1,代表INFO
  2. 当训练过程中发现AI Core Error问题时,用户可参考如下步骤,配置开启op_debug_level和enable_exception_dump参数功能。以TensorFlow 1.x和2.x训练为例。
    • TensorFlow 1.x
      • Estimator模式:
        from npu_bridge.estimator.npu.npu_config import NPURunConfig
        from npu_bridge.estimator.npu.npu_config import DumpConfig
        
        session_config=tf.ConfigProto()
        
        config = NPURunConfig(
          op_debug_level = 2,            # 开启算子debug功能
          session_config=session_config,
          enable_exception_dump=1       # Dump AI Core Error算子的输入和输出信息,dump信息生成在当前脚本执行目录。不支持dump动态shape算子
          )
      • sess.run模式:
        import tensorflow as tf
        from npu_bridge.estimator import npu_ops
        from tensorflow.core.protobuf.rewriter_config_pb2 import RewriterConfig
        
        config = tf.ConfigProto()
        
        custom_op =  config.graph_options.rewrite_options.custom_optimizers.add()
        custom_op.name =  "NpuOptimizer" 
        custom_op.parameter_map["use_off_line"].b = True
        custom_op.parameter_map["enable_exception_dump"].i = 1   # Dump AI Core Error算子的输入和输出信息,dump信息生成在当前脚本执行目录。不支持dump动态shape算子
        custom_op.parameter_map["op_debug_level"].i = 2          # 开启算子debug功能
        config.graph_options.rewrite_options.remapping = RewriterConfig.OFF  # 关闭remap开关
        
        with tf.Session(config=config) as sess:
          print(sess.run(cost))
    • TensorFlow 2.x
          import npu_device as npu	
          ...
          npu.global_options().op_debug_level=2            # 开启算子debug功能
          npu.global_options().enable_exception_dump=1      # Dump AI Core Error算子的输入和输出信息,dump信息生成在当前脚本执行目录。不支持dump动态shape算子
          npu.global_options().precision_mode = 'allow_mix_precision'
          ...
          npu_device.open().as_default()

      表2 op_debug_level参数取值说明

      取值

      说明

      0

      不开启算子debug功能,默认为0。

      1

      开启算子debug功能,在训练脚本执行目录下的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),用于后续工具进行AI Core Error问题定位。

      2

      开启算子debug功能,在训练脚本执行目录下的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),并关闭编译优化开关(开启ccec编译器选项-O0-g),用于后续工具进行AI Core Error问题定位,可定位到出错算子的代码行号。

  3. 重新执行训练后,会在训练执行目录下生成指令映射文件和异常算子dump文件。