文档首页 > > 模型开发> 网络模型移植训练指南> 接口参考> TF Adapter接口参考>

sess.run模式下的session配置

sess.run模式下的session配置

分享
更新时间:2020/11/28 GMT+08:00

昇腾AI处理器上通过sess.run模式执行训练脚本时,支持如下配置项。

表1 session配置项

配置项

说明

use_off_line

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

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

enable_data_pre_proc

是否开启数据预处理。

  • True:开启,默认开启。
  • False:关闭。

iterations_per_loop

sess.run模式下通过set_iteration_per_loop配置小循环次数,即每次sess.run(),在Device侧执行训练迭代的次数。

此处的配置参数和set_iteration_per_loop设置的iterations_per_loop值保持一致,用于功能校验。

profiling_mode

是否开启Profiling功能。

  • True:开启Profiling功能,从enable_options读取Profiling的采集选项。
  • False:关闭Profiling功能,默认关闭。

profiling_options

Profiling采集选项,取值如下。

  • training_trace:采集迭代轨迹数据,即训练任务及AI软件栈的软件信息,实现对训练任务的性能分析,重点关注数据增强、前后向计算、梯度聚合更新等相关数据。
  • task_trace:采集任务轨迹数据,即昇腾AI处理器HWTS/AICore的硬件信息,分析任务开始、结束等信息。
  • op_trace:采集单算子性能数据。如需采集单算子性能数据,需要构造单算子网络并执行训练脚本。该参数不能和training_trace和task_trace同时配置。

支持采集多项数据,多个采集项中间用冒号分开,例如配置为"traing_trace:task_trace”。

enable_dump

是否开启dump功能。

  • True:开启,从dump_path读取dump文件保存路径。dump_path为None时会产生异常。
  • False:关闭,默认关闭。

dump_path

dump文件保存路径,默认值:None

说明:

配置dump_path参数值时,输入的最后一层目录名后面不能加“/”字符,否则会造成该目录下生成的Dump数据没有时间戳目录。

dump_step

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

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

dump_mode

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

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

precision_mode

算子精度模式,配置要求为string类型。

  • allow_fp32_to_fp16或None:算子不支持float32类型时,直接选择float16。默认选择此种模式。
  • force_fp16:算子既支持float16又支持float32数据类型时,强制选择float16。
  • must_keep_origin_dtype:保持原图精度。
  • allow_mix_precision:开启自动混合精度功能,针对全网中float32数据类型的算子,系统会按照内置优化策略自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。开启该功能开关后,用户可以同时使能Loss Scaling,从而补偿降低精度带来的精度损失,相关接口请参考NPULossScaleOptimizer构造函数

enable_reduce_precision

当前版本暂不支持该参数。

variable_format_optimize

是否开启变量格式优化。

  • True:开启,默认开启。
  • False:关闭。

为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式,例如进行NCHW到NC1HWC0的数据格式转换。但在用户特殊要求场景下,可以选择关闭该功能开关。

mix_compile_mode

是否开启混合计算模式。

  • True:开启。
  • False:关闭,默认关闭。

计算全下沉模式即所有的计算类算子全部在Device侧执行,混合计算模式作为计算全下沉模式的补充,将部分不可离线编译下沉执行的算子留在前端框架中在线执行,提升昇腾AI处理器支持Tensorflow的适配灵活性。

hcom_parallel

是否启用Allreduce梯度更新和前后向并行执行。

  • True:开启Allreduce并行。
  • False:关闭Allreduce并行,默认关闭。

graph_memory_max_size

网络静态内存和最大动态内存,可根据网络大小指定。单位:Byte,取值范围:[0, 256*1024*1024*1024]或[0, 274877906944]。当前受芯片硬件限制,graph_memory_max_size和variable_memory_max_size总和最大支持31G。如果不设置,默认为26GB。

variable_memory_max_size

变量内存,可根据网络大小指定。单位:Byte,取值范围:[0,256*1024*1024*1024]或[0, 274877906944]。当前受芯片硬件限制,graph_memory_max_size和variable_memory_max_size总和最大支持31G。如果不设置,默认为5GB。

auto_tune_mode

用户可以控制TBE算子编译时,是否通过Auto Tune工具对算子进行调优,以便在昇腾AI处理器上寻找最好的性能配置。

配置示例:auto_tune_mode = "RL,GA";若未配置该参数,则自动关闭自动调优功能。

关于Auto Tune工具的介绍和使用方法请参见《Auto Tune工具使用指导》

stream_max_parallel_num

指定AICPU/AICORE引擎的并行度,从而实现AICPU/AICORE算子间的并行执行。

配置示例:“DNN_VM_TF:10,DNN_V100:1”

DNN_VM_TF为AICPU引擎名称,本示例指定了AICPU引擎的并发数为10;

DNN_V100为AICORE引擎名称,本示例指定了AICORE引擎的并发数为1。

AICPU/AICORE引擎的并行度默认为1,取值范围为:[1,13]。

is_tailing_optimization

分布式训练场景下,是否开启通信拖尾优化,用于提升训练性能。通信拖尾优化即,通过计算依赖关系的改变,将不依赖于最后一个AR(梯度聚合分片)的计算操作调度到和最后一个AR并行进行,以达到优化通信拖尾时间的目的。取值:

  • True。
  • False:默认为False。

必须和NPUOptimizer构造函数配合使用,且要求和NPUOptimizer构造函数中的is_tailing_optimization值保持一致。

graph_run_mode

图执行模式,取值:

  • 0:在线推理场景下,请配置为0。
  • 1:训练场景下,请配置为1,默认为1。

调用示例

sess.run模式下调用示例:

import tensorflow as tf
from npu_bridge.estimator import npu_ops
from npu_bridge.estimator.npu import npu_scope
from tensorflow.core.protobuf.rewriter_config_pb2 import RewriterConfig

X = tf.random_normal([2,])
Y = tf.random_normal([2,])

with npu_scope.without_npu_compile_scope():
  pred = tf.add(tf.multiply(X, 1.), 0.)
cost = tf.reduce_sum(tf.abs(pred-Y))

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_data_pre_proc"].b = True
custom_op.parameter_map["profiling_mode"].b = True
custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes("task_trace") 
custom_op.parameter_map["precision_mode"].s = tf.compat.as_bytes("allow_mix_precision")
custom_op.parameter_map["variable_format_optimize"].b =  True
custom_op.parameter_map["mix_compile_mode"].b =  True
custom_op.parameter_map["enable_dump"].b = True
custom_op.parameter_map["dump_path"].s = tf.compat.as_bytes("/tmp/test")  
custom_op.parameter_map["dump_step"].s = tf.compat.as_bytes("0|5|10")
custom_op.parameter_map["dump_mode"].s = tf.compat.as_bytes("all") 
custom_op.parameter_map["hcom_parallel"].b = True
custom_op.parameter_map["graph_memory_max_size"].s = tf.compat.as_bytes(str(26*1024 * 1024 * 1024))
custom_op.parameter_map["variable_memory_max_size"].s = tf.compat.as_bytes(str(5*1024 * 1024 * 1024))
custom_op.parameter_map["iterations_per_loop"].i = 10
custom_op.parameter_map["auto_tune_mode"].s = tf.compat.as_bytes("RL,GA")
custom_op.parameter_map["stream_max_parallel_num"].s = tf.compat.as_bytes("DNN_VM_TF:10,DNN_V100:1")
custom_op.parameter_map["is_tailing_optimization"].b = True
custom_op.parameter_map["graph_run_mode"].i = 1

config.graph_options.rewrite_options.remapping = RewriterConfig.OFF  #关闭remap开关

with tf.Session(config=config) as sess:
  print(sess.run(cost))
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问