云优采集接口(训练网络精度未达预期时如何采集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。此目录中的文件是您需要的转储数据文件。