---
title: 使用TensorFlow框架接口采集性能数据
description: "--task-trace后续版本会废弃，请使用--task-time开关控制相关数据采集。"
url: https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/devaids/Profiling/atlasprofiling_16_0037.html
sourcePath: /source/zh/CANNCommunityEdition/920beta1/devaids/Profiling/atlasprofiling_16_0037.html
indexId: 71708958c49214316377d9cc6c3cd7a145110929ca4cc2d3c88826f6775bc4db86
---
# 使用TensorFlow框架接口采集性能数据

--task-trace后续版本会废弃，请使用--task-time开关控制相关数据采集。


#### 功能介绍

对于TensorFlow训练或在线推理场景，用户可以直接在训练脚本中调用TensorFlow框架相关接口开启性能数据采集，主要包括以下用法：

- 全局采集：采集图执行所有行为的性能数据，数据量比较庞大。
  用户可以通过修改训练脚本、配置“profiling_mode”参数的方式开启（本节重点介绍），也可以通过设置环境变量“PROFILING_MODE”的方式开启（参见使用环境变量采集性能数据），其中配置参数“profiling_mode”的优先级高于环境变量“PROFILING_MODE”。


- 局部采集：支持指定采集局部子图或者指定step的性能数据。通过with语句调用Profiler类，并将需要开启性能数据采集的操作放入Profiler类作用域内的方式实现。

本节将介绍最基础的全局采集性能数据的方法，了解更多信息，请参见《TensorFlow 1.15模型迁移》和《TensorFlow 2.6.5模型迁移》。


#### 前提条件

在开启性能采集之前，请确保训练或在线推理脚本可正常执行。


#### 操作步骤

1. 在训练脚本中配置如下信息，以TensorFlow 1.15手工迁移脚本为例：

  - Estimator模式下，您可以尝试先开启task_trace任务轨迹数据采集，代码示例如下：
    1 2 3 4 5 6 7 8 9 10 from npu_bridge.npu_init import * # enable_profiling：是否开启Profiling采集 # output：Profiling数据存放路径，该参数指定的目录需要在启动训练的环境上（容器或Host侧）提前创建且确保安装时配置的运行用户具有读写权限，支持配置绝对路径或相对路径 # task_trace：是否采集任务轨迹数据 profiling_options = '{"output":"/home/test/output","task_trace":"on"}' profiling_config = ProfilingConfig(enable_profiling=True, profiling_options= profiling_options) session_config=tf.ConfigProto() config = NPURunConfig(profiling_config=profiling_config, session_config=session_config)

    后续如果仍然无法分析到具体问题，可再开启training_trace迭代轨迹数据采集，代码示例如下：

    1 2 3 4 5 6 7 8 9 10 11 12 13 from npu_bridge.npu_init import * # enable_profiling：是否开启Profiling采集 # output：Profiling数据存放路径 # task_trace：是否采集任务轨迹数据 # training_trace：是否采集迭代轨迹数据 # fp_point：指定训练网络迭代轨迹正向算子的开始位置，用于记录前向计算开始时间戳 # bp_point：指定训练网络迭代轨迹反向算子的结束位置，记录后向计算结束时间戳，fp_point和bp_point可以计算出正反向时间 profiling_options = '{"output":"/home/test/output","task_trace":"on","training_trace":"on","aicpu":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}' profiling_config = ProfilingConfig(enable_profiling=True, profiling_options= profiling_options) session_config=tf.ConfigProto(allow_soft_placement=True) config = NPURunConfig(profiling_config=profiling_config, session_config=session_config)

  - sess.run模式下，您可以尝试先开启task_trace任务轨迹数据采集，代码示例如下：
    1 2 3 4 5 6 7 8 9 10 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["profiling_mode"].b = True custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/home/test/output","task_trace":"on"}') config.graph_options.rewrite_options.remapping = RewriterConfig.OFF config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run()

    后续如果仍然无法分析到具体问题，可再开启training_trace迭代轨迹数据采集，代码示例如下：

    1 2 3 4 5 6 7 8 9 10 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["profiling_mode"].b = True custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/home/test/output","task_trace":"on","training_trace":"on","aicpu":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}') config.graph_options.rewrite_options.remapping = RewriterConfig.OFF config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run()

- Profiling配置的详细介绍请参见  Profiling options参数解释
。
- 在Estimator模式下配置enable_profiling为true或在sess.run模式下配置profiling_mode为true的情况下。若未配置profiling_options，Profiling默认会执行training_trace、task_trace、hccl、aicpu和aic_metrics（PipeUtilization）采集并保存数据在当前AI任务所在目录。
- 配置fp_point和bp_point参数时，无论是用户指定了具体算子还是使用系统自动查找算法（fp_point和bp_point参数配置为空），均可能找不到数据，最终导致解析出的迭代轨迹数据中FP_BP、Grad_refresh Bound、Data_aug Bound均为空。


2. 重新执行训练脚本。
  训练结束后，在output参数指定的目录下生成PROF_XXX文件夹用于存放采集到的原始性能数据。

3. 使用msprof命令解析性能数据。

```
msprof --export
=on
--output
=/home/HwHiAiUser/profiling_output/PROF_XXX
```


  解析完成后，在PROF_XXX文件夹下生成mindstudio_profiler_output目录，用户可直接查看。
