性能分析思路
Profiling系统调优的目的是通过分析AI任务运行时采集的性能数据,判断AI任务运行时的软硬件性能瓶颈。可以根据图1来对数据进行分析。
为了保证Profiling执行时不占用过多的设备资源,导致采集性能数据不准确,以下为推荐的操作步骤:
- 根据推理或训练场景选择Profiling采集的方式。
- 执行一次默认采集项的Profiling采集、解析并导出timeline和summary数据。
表1 msprof默认配置采集的性能数据文件 文件夹
文件名
说明
timeline
msprof*.json
timeline数据总表。
acl_*.json
AscendCL接口调用时序。
ai_stack_time_*.json
昇腾AI软件栈各组件(AscendCL,GE,Runtime,Task Scheduler等)运行时序。
ge_*.json
GE接口耗时数据。
step_trace_*.json
迭代轨迹数据,每轮迭代的耗时。
task_time_*.json
Task Scheduler任务调度时序。
thread_group_*.json
AscendCL,GE,Runtime组件耗时数据。
summary
acl_*.csv
AscendCL API调用过程。
acl_statistic_*.csv
AscendCL API数据统计。
op_summary_*.csv
AI Core和AI CPU算子数据。
op_statistic _*.csv
AI Core和AI CPU算子调用次数及耗时统计。
step_trace_*.csv
迭代轨迹数据。
task_time_*.csv
Task Scheduler任务调度信息。
ai_stack_time_*.csv
昇腾AI软件栈各组件(AscendCL,GE,Runtime,Task Scheduler等)信息。
fusion_op_*.csv
模型中算子融合前后信息。
prof_rule_0.json
调优建议。
注:“*”表示{device_id}_{model_id}_{iter_id},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID。这些字段可以使用数据解析与导出完成数据解析后,使用数据解析与导出中的“Profiling数据文件信息查询”功能对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。
- 查看所有迭代轨迹(step_trace_*.json)耗时数据的timeline文件,观察并找出耗时长的迭代。
- 导出查看迭代轨迹数据中Top耗时的迭代汇总数据的timeline文件(msprof*.json)并进一步分析接口或算子内耗时长的信息。
- 针对耗时长的接口或算子找到对应summary数据文件查看详细信息,定位出最小粒度的事件。
- 最后针对最小粒度事件进行具体的优化。
- 重复执行1~6步,对比优化前后的性能数据,确认是否成功调优。

对于其他非默认数据比如采集昇腾AI处理器系统数据、msproftx数据等,可以单独采集并执行1~7步操作。