下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

设置混合精度模式

本节以将“precision_mode_v2”参数配置为“mixed_float16”为例,说明如何设置混合精度模式。

Estimator模式下设置精度模式

  • 自动迁移场景
    1. 检查迁移后的脚本是否存在“init_resource”。
      • 如果存在,则需要参考下面示例,在init_resource函数中传入session_config的配置,并在session_config配置中添加“precision_mode_v2”参数。
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        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"
          custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
        
          (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_resource函数的config中进行配置,若需配置其他功能,请在npu_run_config_init函数的run_config中进行配置。

      • 如果不存在,则执行下一步。
    2. 在迁移后的脚本中查找“npu_run_config_init”,找到运行配置函数,例如示例中的“run_config”。
      如果运行配置函数中未传入session_config参数,则需要按照下面示例添加;如果已经传入了session_config参数,则进行下一步。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      session_config = tf.ConfigProto(allow_soft_placement=True)
      
      run_config = tf.estimator.RunConfig(
        train_distribute=distribution_strategy,
        session_config=session_config,
        save_checkpoints_secs=60*60*24)
      
      classifier = tf.estimator.Estimator(
        model_fn=model_function, model_dir=flags_obj.model_dir, config=npu_run_config_init(run_config=run_config))
      
    3. 修改session_config配置,添加“precision_mode_v2”。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      session_config = tf.ConfigProto(allow_soft_placement=True)
      custom_op = session_config.graph_options.rewrite_options.custom_optimizers.add()
      custom_op.name = 'NpuOptimizer'
      custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
      
      run_config = tf.estimator.RunConfig(
        train_distribute=distribution_strategy,
        session_config=session_config,
        save_checkpoints_secs=60*60*24)
      
      classifier = tf.estimator.Estimator(
        model_fn=model_function, model_dir=flags_obj.model_dir, config=npu_run_config_init(run_config=run_config))
      
  • 手工迁移场景
    Estimator模式下,通过NPURunConfig中的precision_mode_v2参数设置精度模式:
    1
    2
    3
    4
    5
    6
    7
    8
    from npu_bridge.npu_init import *
    
    npu_config=NPURunConfig(
      model_dir=FLAGS.model_dir,
      save_checkpoints_steps=FLAGS.save_checkpoints_steps,
      session_config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=False),
      precision_mode_v2="mixed_float16"
      )
    

sess.run模式下设置精度模式

  • 自动迁移场景
    1. 检查迁移后的脚本是否存在“init_resource”。
      • 如果存在,则需要参考下面示例,在init_resource函数中传入session_config配置,并在session_config中添加“precision_mode_v2”参数。
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        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'
          custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
        
          (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_resource函数的session_config中进行配置,若需配置其他功能,请在npu_config_proto函数的config_proto中进行配置。

      • 如果不存在,则执行下一步。
    2. 在迁移后的脚本中查找“npu_config_proto”,找到运行配置参数(例如下面示例中的“session_config”),在运行配置参数中添加“precision_mode_v2”,如下所示。
      1
      2
      3
      4
      5
      6
      7
      8
      session_config = tf.ConfigProto(allow_soft_placement=True)
      custom_op = session_config.graph_options.rewrite_options.custom_optimizers.add()
      custom_op.name = 'NpuOptimizer'
      custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
      config = npu_config_proto(config_proto=session_config)
      with tf.Session(config=config) as sess:
        sess.run(tf.global_variables_initializer())
        interaction_table.init.run()
      
  • 手工迁移场景
    sess.run模式下,通过session配置项precision_mode_v2参数设置精度模式:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    import tensorflow as tf
    from npu_bridge.npu_init import *
    
    config = tf.ConfigProto(allow_soft_placement=True)
    
    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["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
    config.graph_options.rewrite_options.remapping = RewriterConfig.OFF
    config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF
    
    with tf.Session(config=config) as sess:
      print(sess.run(cost))
    

Keras模式下设置精度模式

  • 自动迁移场景
    1. 检查迁移后的脚本是否存在“init_resource”。
      • 如果存在,则需要参考下面示例,在init_resource函数中传入session_config配置,并在session_config中添加“precision_mode_v2”参数。
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12
        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" 
          custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
          ... ...
        
          (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_resource函数的config中进行配置,若需配置其他功能,请在“set_keras_session_npu_config”函数的config中进行配置。

      • 如果不存在,则执行下一步。
    2. 在脚本中查找“set_keras_session_npu_config”函数,找到运行配置,例如config_proto,然后在运行配置中添加“precision_mode_v2”,如下所示。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      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'
      custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("mixed_float16")
      npu_keras_sess = set_keras_session_npu_config(config=config_proto)
      
      #数据预处理...
      #模型搭建...
      #模型编译...
      #模型训练...
      
  • 手工迁移场景

    与sess.run的手工迁移场景配置方式类似,请参见sess.run模式下设置精度模式

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词