导入性能数据
概述
MindStudio Insight支持导入性能数据文件,并以图形化形式呈现相关内容。性能数据文件的采集方式请分别参见《性能调优工具指南》中的“PyTorch训练场景性能分析快速入门”、“TensorFlow训练场景性能分析快速入门”和“msprof采集通用命令”章节内容,以及《MindSpore Insight》中的“性能调试(Ascend)”章节内容。
单卡场景
在单卡场景下,性能数据可分为三大类型,如下所示:
- PyTorch训练/推理数据:支持导入以“ascend_pt”结尾的性能数据目录,性能数据文件详情请分别参见表2和表3。
表2 PyTorch训练/推理性能数据文件(TEXT) 文件名
说明
展示界面
trace_view.json
包括应用层数据、CANN层数据和底层NPU数据。
时间线(Timeline)
msprof_*.json
Timeline数据总表。如果存在变频数据(AI Core Freq)信息,会展示AI Core Freq层级。
时间线(Timeline)
operator_details.csv
统计PyTorch算子在Host侧(下发)和Device侧(执行)的耗时。
时间线(Timeline)
memory_record.csv
进程级内存申请情况信息。
内存(Memory)
operator_memory.csv
算子内存申请情况信息。
内存(Memory)
kernel_details.csv
NPU上执行的所有算子的信息。
算子(Operator)
step_trace_time.csv
迭代中计算和通信的时间统计。
概览(Summary)
communication.json
通信算子通信耗时、带宽等详细信息文件。
通信(Communication)
communication_matrix.json
通信小算子基本信息文件。
通信(Communication)
注:“*”表示{timestamp}时间戳。
表3 PyTorch训练/推理性能数据文件(DB) 文件名
说明
展示界面
ascend_pytorch_profiler_{rank_id}.db
Ascend PyTorch Profiler接口采集的性能数据文件。
时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)
analysis.db
多卡或集群等存在通信的场景下,采集到的数据文件。
- 表2中memory_record.csv和operator_memory.csv两个文件必须同时存在且保证在同一目录,导入成功后内存(Memory)界面才能正常展示。
- 支持导入算子打点数据文件,获取文件方式请参见《性能调优工具指南》中的“Ascend PyTorch Profiler”章节“msprof_tx”相关内容,导入成功后会在时间线(Timeline)界面展示打点数据。
- 导入单卡时,不展示概览(Summary)和通信(Communication)界面。
- MindSpore训练/推理数据:支持导入MindSpore框架性能数据,获取方式请参见《MindSpore Insight》中的“性能调试(Ascend)”章节。
MindStudio Insight工具支持导入以“ascend_ms”结尾的性能数据目录,性能数据文件详情请分别参见表4和表5。
表4 MindSpore训练/推理性能数据文件(TEXT) 文件名
说明
展示界面
msprof_*.json
Timeline数据总表。如果存在变频数据(AI Core Freq)信息,会展示AI Core Freq层级。
时间线(Timeline)
trace_view.json
包括应用层数据、CANN层数据和底层NPU数据。
时间线(Timeline)
memory_record.csv
进程级内存申请情况信息。
内存(Memory)
operator_memory.csv
算子内存申请情况信息。
内存(Memory)
static_op_mem.csv
静态图场景内存申请情况信息。
内存(Memory)
kernel_details.csv
NPU上执行的所有算子的信息。
算子(Operator)
step_trace_time.csv
迭代中计算和通信的时间统计。
概览(Summary)
communication.json
通信算子通信耗时、带宽等详细信息文件。
通信(Communication)
communication_matrix.json
通信小算子基本信息文件。
通信(Communication)
注:“*”表示{timestamp}时间戳。
表5 MindSpore训练/推理性能数据文件(DB) 文件名
说明
展示界面
ascend_mindspore_profiler_{rank_id}.db
Ascend MindSpore Profiler接口采集的性能数据文件。
时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)
communication_analyzer.db
多卡或集群等存在通信的场景下,采集到的数据文件。
- 表4中memory_record.csv和operator_memory.csv两个文件必须同时存在且保证在同一目录,导入成功后内存(Memory)界面才能正常展示。当static_op_mem.csv存在时,内存(Memory)界面会展示静态图模式。
- 导入单卡时,不展示概览(Summary)和通信(Communication)界面。
- 当在GRAPH模式下,编译优化等级参数jit_level设置为O2,且调用step接口方式采集的性能数据,在导入MindStudio Insight工具时,不支持展示通信(Communication)界面。
- 离线推理数据:支持导入mindstudio_profiler_output目录下性能数据,性能数据文件详情请分别参见表6和表7。
表6 离线推理性能数据文件(TEXT) 文件名
说明
展示界面
msprof_*.json
Timeline数据总表。
时间线(Timeline)
fusion_op_*.csv
模型中算子融合前后信息。单算子场景下无此性能数据文件。
时间线(Timeline)
api_statistic_*.csv
用于统计CANN层的API执行耗时信息。
时间线(Timeline)
memory_record_*.csv
进程级内存申请情况信息。
内存(Memory)
operator_memory_*.csv
算子内存申请情况信息。
内存(Memory)
op_summary_*.csv
AI Core和AI CPU算子数据。
算子(Operator)
op_statistic_*.csv
AI Core和AI CPU算子调用次数及耗时统计。
算子(Operator)
prof_rule_0_*.json
调优建议。
时间线(Timeline)
概览(Summary)
通信(Communication)
step_trace_*.csv
迭代轨迹数据。单算子场景下无此性能数据文件。
-
step_trace_*.json
迭代轨迹数据,每轮迭代的耗时。单算子场景下无此性能数据文件。
-
task_time_*.csv
Task Scheduler任务调度信息。
-
注:“*”表示{timestamp}时间戳。
表7 离线推理性能数据文件(DB) 文件名
说明
展示界面
msprof_*.db
统一DB文件。当前该格式数据与TEXT参数解析的数据信息量存在差异。
时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)
注:“*”表示{timestamp}时间戳。
- 表6中memory_record.csv和operator_memory.csv两个文件必须同时存在且保证在同一目录,导入成功后内存(Memory)界面才能正常展示。
- 对于未完成性能数据解析的PROF_XXX目录,需要先使用msprof命令行的export功能解析并导出性能数据文件后才可以使用MindStudio Insight工具展示,数据使用msprof命令行解析并导出的操作请参见《性能调优工具指南》中的“msprof模型调优工具 > 性能数据解析”章节。
集群场景
- 集群场景也称多卡场景,由多个单卡组成的集群数据,集群数据可分为小集群和大集群,MindStudio Insight工具导入不同场景的数据时,也有所不同,如表8所示。如果在大集群场景下,直接导入profiling全部原始数据,解析耗时较长,不建议直接导入。
- 当导入集群数据时,如果性能数据文件中包含cluster_analysis_output目录文件,导入成功后,概览(Summary)和通信(Communication)界面会根据cluster_analysis_output目录文件内容呈现相关信息;如果性能数据文件中不包含cluster_analysis_output目录文件,在MindStudio Insight工具中导入数据时,在性能数据文件中会生成对应的cluster_analysis_output目录文件。
- 使用Ascend PyTorch Profiler接口或者MindSpore Profiler接口采集到的性能数据,需要使用MindStudio Insight工具显示,则建议配置repeat = 1,不推荐配置为0。如果repeat > 1,则需要将采集的性能数据文件夹分为repeat等份,按照文件夹名称中的时间戳先后将文件分别放到不同文件夹下重新导入,才可正常展示。
- 在Linux环境下使用MindStudio Insight工具分析集群场景数据时,如果已经安装了msprof-analyze工具,请检查版本并将其升级至最新版本,最新版本的msprof-analyze工具安装可参考安装msprof-analyze。
表8 集群场景说明 场景
卡数量
导入数据
界面展示
小集群
小于32卡。
可导入profiling全部原始数据。
时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)
大集群
超过32卡,千卡,万卡等。
采用mstt工具集中的cluster_analyse(集群分析工具)工具预处理profiling的原始数据,可得到基于通信域的通信分析和迭代耗时分析,导入预处理后得到的数据。cluster_analyse(集群分析工具)的下载与使用请参见集群分析工具。
- 将所有以“ascend_pt”或“ascend_ms”结尾的目录汇总至同一文件夹。
- 使用cluster_analyse工具生成通信相关文件“cluster_analysis_output”目录,“cluster_analysis_output”目录中数据文件请参见表9。
- 将生成的“cluster_analysis_output”目录文件拷贝至本地,并导入MindStudio Insight工具。
- 可先前往通信(Communication)界面分析后,导入对应小集群数据或者单卡数据,再次仔细分析。
概览(Summary)
通信(Communication)
表9 cluster_analysis_output目录文件 文件名
说明
cluster_step_trace_time.csv
数据解析模式为communication_matrix、communication_time或all时均生成。
cluster_communication_matrix.json
数据解析模式为communication_matrix或all时生成。
cluster_communication.json
数据解析模式为communication_time或all时生成,主要为通信耗时数据。
cluster_analysis.db
解析analysis.db或ascend_pytorch_profiler_{rank_id}.db生成的文件。
- 集群精简数据,是基于ascend_pytorch_profiler_{rank_id}.db文件,提取通信类大算子数据,计算类关键函数和框架关键函数,将数据精简,节约内存,快速进行全局分析,导入集群精简数据后,MindStudio Insight工具只显示时间线(Timeline)界面。
集群数据精简可使用mstt工具集中的msprof-analyze工具,通过设置-m filter_db生成集群精简数据,msprof-analyze工具安装可参考安装msprof-analyze,设置-m filter_db可参考《recipe结果和cluster_analysis.db交付件表结构说明》中的“filter_db”内容,集群数据精简功能只支持统一DB场景。