keras模式

  1. 检查迁移后的脚本是否存在“init_resource”。
    • 如果存在,则需要参考下面示例进行修改;修改完后,执行下一步。
      if __name__ == '__main__':
      
        session_config = tf.ConfigProto(allow_soft_placement=True)
        custom_op = session_config.graph_options.rewrite_options.custom_optimizers.add()
        custom_op.name = "NpuOptimizer"
        # 开启profiling采集
        custom_op.parameter_map["profiling_mode"].b = True
        # 仅采集任务轨迹数据
        custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/home/HwHiAiUser/output","task_trace":"on"}')
        # 采集任务轨迹数据和迭代轨迹数据。可先仅采集任务轨迹数据,如果仍然无法分析到具体问题,可再采集迭代轨迹数据
        # custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/home/HwHiAiUser/output","task_trace":"on","training_trace":"on","aicpu":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}')
      
        (npu_sess, npu_shutdown) = init_resource(config=session_config)
        tf.app.run()
        shutdown_resource(npu_sess, npu_shutdown)
        close_session(npu_sess)

      需要注意,仅initialize_system中支持的配置项可在init_resoure函数的config中进行配置,若需配置其他功能,请在set_keras_session_npu_config函数的config中进行配置。

      • profiling_mode:是否开启profiling采集。
      • output:profiling数据存放路径,该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径
      • task_trace:是否采集任务轨迹数据
      • training_trace:是否采集迭代轨迹数据,此场景下同时需要配置fp_point和bp_point。
      • fp_point:指定训练网络迭代轨迹正向算子的开始位置,用于记录前向计算开始时间戳,可直接配置为空,由系统自动获取,或参考如何获取fp_point与bp_point
      • bp_point:指定训练网络迭代轨迹反向算子的结束位置,记录后向计算结束时间戳,可直接配置为空,由系统自动获取,或参考如何获取fp_point与bp_point
      • 相关接口详细介绍请参考ProfilingConfig构造函数
    • 如果不存在,则执行下一步。
  2. 在脚本中找到“set_keras_session_npu_config”,配置profiling相关参数。
    import tensorflow as tf
    import tensorflow.python.keras as keras
    from tensorflow.python.keras import backend as K
    from npu_bridge.npu_init import *
    
    config_proto = tf.ConfigProto(allow_soft_placement=True)
    custom_op = config_proto.graph_options.rewrite_options.custom_optimizers.add()
    custom_op.name = 'NpuOptimizer'
    # 开启profiling采集
    custom_op.parameter_map["profiling_mode"].b = True
    # 仅采集任务轨迹数据
    custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/home/HwHiAiUser/output","task_trace":"on"}')
    # 采集任务轨迹数据和迭代轨迹数据。可先仅采集任务轨迹数据,如果仍然无法分析到具体问题,可再采集迭代轨迹数据
    # custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/home/HwHiAiUser/output","task_trace":"on","training_trace":"on","aicpu":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}')
    npu_keras_sess = set_keras_session_npu_config(config=config_proto)
    
    #数据预处理...
    #模型搭建...
    #模型编译...
    #模型训练...