云优采集接口(训练网络精度未达预期时如何采集Dump数据数据? )

优采云 发布时间: 2021-12-24 15:05

  云优采集接口(训练网络精度未达预期时如何采集Dump数据数据?

)

  更新时间:2021-10-26 GMT+08:00

  查看PDF

  链接复制成功!

  启用转储数据采集

  概述

  当训练网络的准确率达不到预期时,可以使用训练过程中各个算子的计算结果(即Data Dump数据),然后使用准确率对比工具和行业标准算子(如TensorFlow)对计算结果进行数据偏差对比,帮助开发者快速解决算子精度问题。目前支持采集的operator数据主要有:

  

  默认训练过程中,没有采集算子的dump数据。如果需要采集并分析数据,可以选择以下两种方式之一:

  使用注意事项

  采集在 Estimator 模式下转储数据

  在Estimator模式下,通过NPUrunConfig中的dump_config采集Dump data,在创建NPUrunConfig之前,先实例化一个DumpConfig类进行dump配置(包括配置dump路径,哪些迭代数据要dump,dump算子的输入或输出)数据等)。

  DumpConfig类的构造函数中各个字段的详细解释请参考对应的接口说明。

  from npu_bridge.npu_init import *

# dump_path:dump数据存放路径,该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限

# enable_dump:是否开启Dump功能

# dump_step:指定采集哪些迭代的Dump数据

# dump_mode:Dump模式,取值:input/output/all

dump_config = DumpConfig(enable_dump=True, dump_path = "/home/HwHiAiUser/output", dump_step="0|5|10", dump_mode="all")

session_config=tf.ConfigProto()

config = NPURunConfig(

dump_config=dump_config,

session_config=session_config

)

  采集在sess.run模式下转储数据

  在sess.run模式下,通过session配置项enable_dump、dump_path、dump_step、dump_mode配置相关参数。

  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

# enable_dump:是否开启Dump功能

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

# dump_path:dump数据存放路径,该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限

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

# dump_step:指定采集哪些迭代的Dump数据

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

# dump_mode:Dump模式,取值:input/output/all

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

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))

  执行训练并生成转储数据

  后续的精度对比工具不仅依赖Dump数据,还需要计算图结构。因此,在进行训练之前,需要配置环境变量转储图文件:

  export DUMP_GE_GRAPH=2

export DUMP_GRAPH_PATH=/home/dumpgraph # 指定dump图路径,如果不配置存储在训练脚本所在目录

  执行训练,生成转储图像文件和转储数据文件。

  由于“ge”开头的转储图文件很多,转储数据文件夹的model_name层可能有多个文件夹,所以实际上我们只需要找到计算图文件,只要找到model_name为计算图的名称。下面提供一些方法,帮助用户快速找到对应的文件。

  选择计算图文件,提供以下两种方法:

  选择转储数据文件。

  打开上一步找到的计算图文件,记录第一张图中name字段的值。在以下示例中,记录“ge_default_253_71”。

  graph {

name: "ge_default_20201209083353_71"

op {

name: "atomic_addr_clean0_71"

type: "AtomicAddrClean"

attr {

key: "_fe_imply_type"

value {

i: 6

}

}

  进入dump data文件夹,我们会看到model_name层有多个文件夹:

  

  找到名称为刚才记录的计算图的名称值的文件夹,如ge_default_253_71。此目录中的文件是您需要的转储数据文件。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线