采集解析性能数据【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs本节介绍推理场景下使用msprof命令行方式采集和解析性能数据、并通过生成的结果文件分析性能瓶颈的基本方法。在使用msprof命令行前您需要先参见《性能调优工具》准备好环境、了解使用约束以及基本的参数使用方法。采集、解析并导出性能数据登录装有Toolkit软件包的运行环境执行如下命令可一键式采集、解析并导出性能数据msprof --output/home/HwHiAiUser/profiling_output /home/HwHiAiUser/HIAI_PROJECTS/MyAppname/out/main表 1参数说明参数描述可选/必选--output收集到的Profiling数据的存放路径默认为AI任务文件所在目录。路径中不能包含特殊字符\n, \f, \r, \b, \t, \v, \u007F。可选命令执行完成后在output指定的目录下生成PROF___XXX目录存放自动解析后的性能数据以下仅展示性能数据。├── device_{id} //保存原始数据用户无需关注 │ └── data └── mindstudio_profiler_output ├── msprof_{timestamp}.json ├── step_trace_{timestamp}.json ├── xx_*.csv ... └── README.txt进入mindstudio_profiler_output目录查看性能数据文件。默认情况下采集到的文件如表2所示。表 2msprof默认配置采集的性能数据文件文件名说明msprof_*.jsontimeline数据总表。step_trace_*.json迭代轨迹数据每轮迭代的耗时。单算子场景下无此性能数据文件。op_summary_*.csvAI Core和AI CPU算子数据。op_statistic_*.csvAI Core和AI CPU算子调用次数及耗时统计。step_trace_*.csv迭代轨迹数据。单算子场景下无此性能数据文件。task_time_*.csvTask Scheduler任务调度信息。fusion_op_*.csv模型中算子融合前后信息。单算子场景下无此性能数据文件。api_statistic_*.csv用于统计CANN层的API执行耗时信息。prof_rule_0_*.json调优建议。注“*”表示{timestamp}时间戳。json文件需要在Chrome浏览器中输入chrome://tracing将文件拖到空白处进行打开通过键盘上的快捷键w放大s缩小a左移d右移。通过该文件可查看当前AI任务运行的时序信息比如运行过程中接口调用时间线如图1所示。图 1查看json文件![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/查看json文件.png 查看json文件?utm_sourcegitcode_repo_files)csv文件可直接打开查看。通过该文件可以看到AI任务运行时的软硬件数据比如各算子在AI处理器软硬件上的运行耗时通过字段排序等可以快速找出需要的信息如图2所示。图 2查看csv文件![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/查看csv文件.png 查看csv文件?utm_sourcegitcode_repo_files)性能分析从上文我们可以看到性能数据文件较多分析方法也较灵活以下介绍几个重要文件及分析方法。通过msprof_*.json文件从整体角度查看AI任务运行的时序信息进而分析出可能存在的瓶颈点。图 3msprof_*.json文件示例![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/msprof_-json文件示例.png msprof_-json文件示例?utm_sourcegitcode_repo_files)区域1CANN层数据主要包含Runtime等组件以及Node算子的耗时数据。区域2底层NPU数据主要包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、AI处理器系统数据等。区域3展示timeline中各算子、接口的详细信息单击各个timeline色块展示。从上图可以大致分析出耗时较长的API、算子、任务流等并且根据对应的箭头指向找出对应的下发关系分析执行推理过程中下层具体耗时较长的任务查看区域3的耗时较长的接口和算子再结合csv文件进行量化分析定位出具体的性能瓶颈。通过op_statistic_*.csv文件分析各类算子的调用总时间、总次数等排查某类算子总耗时是否较长进而分析这类算子是否有优化空间。图 4op_statistic_*.csv文件示例![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/op_statistic_-csv文件示例.png op_statistic_-csv文件示例?utm_sourcegitcode_repo_files)可以按照Total Time排序找出哪类算子耗时较长。通过op_summary_*.csv文件分析具体某个算子的信息和耗时情况从而找出高耗时算子进而分析该算子是否有优化空间。图 5op_summary_*.csv文件示例![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/op_summary_-csv文件示例.png op_summary_-csv文件示例?utm_sourcegitcode_repo_files)Task Duration字段为算子耗时信息可以按照Task Duration排序找出高耗时算子也可以按照Task Type排序查看不同核AI Core和AI CPU上运行的高耗时算子。【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考