昇腾社区首页
中文
注册

性能数据文件总体说明

用户采集性能原始数据,并解析导出成可视化的性能数据文件后,需要了解文件目录结构及主要文件。

目录结构及文件说明

性能数据目录结构示例如下(仅展示性能数据):

├── device_{id}
│   ├── summary
│   │   ├── xx_*.csv
...
│   └── timeline
│       ├── xx_*.json
...
│       └── msprof_*.json
├── host
│   ├── summary
│   │   ├── xx_*.csv
...
│   └── timeline
│       ├── xx_*.json
...
│       └── msprof_*.json
├── mindstudio_profiler_output
    ├── msprof_{timestamp}.json
    ├── step_trace_{timestamp}.json
...
    ├── xx_*.csv
...
    └── README.txt
└── timeline
    └── msprof_*.json
  • 一级目录说明:
    • device_{id}目录主要保存各个Device运行昇腾AI应用的性能数据和昇腾AI处理器系统数据。
    • host目录主要保存上层应用接口(msproftx)的昇腾AI应用运行性能数据和Host系统数据。
    • mindstudio_profiler_log目录主要保存Device和Host的运行日志。
    • mindstudio_profiler_output目录保存Host和各个Device的性能数据汇总(性能数据分析推荐查看该目录下文件)。

    该目录下的各个文件数据量较大,可能出现数据文件分片,若不需要切分文件,可参见性能数据文件分片修改分片容量上限。

    • timeline目录下保存timeline数据总表,为host和device目录下的timeline数据总表之和。需要device和host数据均存在情况下生成。
  • 二级目录说明:
    • summary目录保存Host和各个Device AI任务运行时的软硬件数据。
    • timeline目录保存Host和各个Device AI任务运行的时序信息。

默认采集的性能数据文件如表1所示。

表1 msprof默认配置采集的性能数据文件

文件夹

文件名

说明

timeline

msprof*.json

timeline数据总表。

step_trace_*.json

迭代轨迹数据,每轮迭代的耗时。单算子场景(如PyTorch场景)下无此性能数据文件。

task_time_*.json

Task Scheduler任务调度时序。

summary

op_summary_*.csv

AI Core和AI CPU算子数据。

op_statistic _*.csv

AI Core和AI CPU算子调用次数及耗时统计。

step_trace_*.csv

迭代轨迹数据。单算子场景(如PyTorch场景)下无此性能数据文件。

task_time_*.csv

Task Scheduler任务调度信息。

fusion_op_*.csv

模型中算子融合前后信息。单算子场景(如PyTorch场景)下无此性能数据文件。

prof_rule_0.json

调优建议。

文件命名格式说明

  • 性能数据结果文件命名格式为“模块名_{device_id}_{model_id}_{iter_id}_{timestamp}.{json/csv}”,其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID,{timestamp}表示时间戳,可以防止重复解析同一性能数据时,产生重名覆盖。这些字段可以在完成数据解析后,使用性能数据解析与导出(msprof命令)中的“查询性能数据文件信息”功能对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。
  • 仅执行采集昇腾AI处理器系统数据时,生成的文件名称格式为{name}_{device_id}_{iter_id}_{timestamp}.json和{name}_{device_id}_{iter_id}_{timestamp}.csv。
  • 单算子场景的性能数据结果文件名格式为:“模块名_{device_id}_{iter_id}_{timestamp}.{json/csv}”。
  • host目录的性能数据结果文件名格式为:“模块名_{model_id}_{iter_id}_{timestamp}.{json/csv}”。
  • 由于性能数据结果文件名中{device_id}、{model_id}或{iter_id}可能为空,故下文中的文件名展示为“模块名_*.json”或“模块名_*.csv”。
  • mindstudio_profiler_output目录下的结果文件不区分{model_id}和{iter_id}且{device_id}会在文件内显示,命名格式为:“模块名_{timestamp}.{json/csv}”。

如何查看timeline文件

使用Perfetto UI打开:在Chrome浏览器中输入“https://ui.perfetto.dev/”地址,将.json文件拖到空白处打开,通过键盘上的快捷键(w:放大,s:缩小,a:左移,d:右移)进行查看。

使用tracing打开:在Chrome浏览器中输入“chrome://tracing”地址,将.json文件拖到空白处打开,通过键盘上的快捷键(w:放大,s:缩小,a:左移,d:右移)进行查看。

超大文件推荐使用Perfetto UI打开。

summary文件说明

  • 生成的summary数据文件使用excel打开时,会出现字段值为科学计数的情况,例如“1.00159E+12”。此时可选中该单元格,然后右键>设置单元格格式,在弹出的对话框中“数字”标签下选择“数值”,单击“确定”就能正常显示。
  • 生成的summary数据文件中某些字段值为“N/A”时,表示此时该值不存在。

集群分析工具

集群场景下,基于通信域的通信分析和迭代耗时分析,可以通过cluster_analysis工具的cluster_analysis.py脚本将数据进行汇总后分析。

集群场景多卡间算子性能统计

集群场景下,多卡间的算子情况,只能通过查看每张卡各自的性能数据来了解,不能直观的对比各卡之间算子的性能差异。为了直观查看格卡之间算子的性能差异,请通过cluster_kernels_analysis工具的cluster_op_summary_analysis.py脚本,快速统计并展示各卡之间TopN算子的性能数据。