本快速入门以离线推理场景为例,介绍msprof命令行采集和解析性能数据,并通过生成的结果文件分析性能瓶颈。
下文根据昇腾AI处理器的PCIe工作模式区分为Ascend EP和Ascend RC两种操作步骤,Ascend EP和Ascend RC详细介绍请参见《》。
登录装有CANN Toolkit开发套件包和ops算子包的运行环境,执行如下命令,可一键式采集、解析并导出性能数据:
[object Object]命令示例:
[object Object]表1 参数说明
[object Object]undefined
[object Object]
命令执行完成后,在--output指定的目录下生成PROF*_*XXX目录,存放自动解析后的性能数据(以下仅展示性能数据)。
[object Object]进入mindstudio_profiler_output目录,查看性能数据文件。
默认情况下采集到的文件如下表所示。
表2 msprof默认配置采集的性能数据文件
[object Object]undefined
[object Object]
从上文我们可以看到,性能数据文件较多,分析方法也较灵活,以下介绍几个重要文件及分析方法。
通过msprof_*.json文件从整体角度查看AI任务运行的时序信息,进而分析出可能存在的瓶颈点。
图5 msprof_*.json文件示例
- 区域1:CANN层数据,主要包含Runtime等组件以及Node(算子)的耗时数据。
- 区域2:底层NPU数据,主要包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、昇腾AI处理器系统数据等。
- 区域3:展示timeline中各算子、接口的详细信息(单击各个timeline色块展示)。
从上图可以大致分析出耗时较长的API、算子、任务流等,并且根据对应的箭头指向找出对应的下发关系,分析执行推理过程中下层具体耗时较长的任务,查看区域3的耗时较长的接口和算子,再结合csv文件进行量化分析,定位出具体的性能瓶颈。
通过op_statistic_*.csv文件分析各类算子的调用总时间、总次数等,排查某类算子总耗时是否较长,进而分析这类算子是否有优化空间。
图6 op_statistic_*.csv文件示例
可以按照Total Time排序,找出哪类算子耗时较长。
通过op_summary_*.csv文件分析具体某个算子的信息和耗时情况,从而找出高耗时算子,进而分析该算子是否有优化空间。
图7 op_summary_*.csv文件示例
Task Duration字段为算子耗时信息,可以按照Task Duration排序,找出高耗时算子;也可以按照Task Type排序,查看不同核(AI Core和AI CPU)上运行的高耗时算子。