From bcacf99d4d7dbe339c9fd34884ef11b2647f7729 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Tue, 3 Dec 2024 11:18:06 +0800 Subject: [PATCH] =?UTF-8?q?[maprof-analyze]=E5=B7=A5=E5=85=B7=E9=80=82?= =?UTF-8?q?=E9=85=8DMindSpore=EF=BC=8C=E8=B5=84=E6=96=99=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/advisor/README.md | 23 +++++++++++---------- profiler/cluster_analyse/README.md | 10 +++++++--- profiler/compare_tools/README.md | 32 +++++++++++++++++------------- 3 files changed, 37 insertions(+), 28 deletions(-) diff --git a/profiler/advisor/README.md b/profiler/advisor/README.md index 78e90a192f..91d280129c 100644 --- a/profiler/advisor/README.md +++ b/profiler/advisor/README.md @@ -1,15 +1,14 @@ # advisor -msprof-analyze的advisor功能是将Ascend PyTorch Profiler或者msprof采集的性能数据进行分析,并输出性能调优建议。 +msprof-analyze的advisor功能是将Ascend PyTorch Profiler、msprof或者MindSpore Profiler采集的性能数据进行分析,并输出性能调优建议。 -性能数据采集方法请参见《[性能分析工具](https://www.hiascend.com/document/detail/zh/mindstudio/70RC1/mscommandtoolug/mscommandug/atlasprofiling_16_0001.html)》。 +Ascend PyTorch Profiler、msprof采集方法请参见《[性能调优工具](https://www.hiascend.com/document/detail/zh/mindstudio/70RC3/T&ITools/Profiling/atlasprofiling_16_0001.html)》,MindSpore Profiler采集方法请参见《[性能调试](https://www.mindspore.cn/mindinsight/docs/zh-CN/r2.3/performance_profiling_ascend.html)》。 ## 工具使用(命令行方式方式) ### 约束 -- 不支持对db格式文件分析。 -- 不支持分析MindSpore场景采集的性能数据。 +不支持对db格式文件分析。 ### 操作步骤 @@ -37,7 +36,7 @@ msprof-analyze的advisor功能是将Ascend PyTorch Profiler或者msprof采集的 以上命令更多参数介绍请参见“**命令详解**”。 - 单卡场景需要指定到性能数据文件`*_ascend_pt`目录;多卡或集群场景需要指定到`*_ascend_pt`目录的父目录层级。 + 单卡场景需要指定到性能数据文件`*_ascend_pt`或`*_ascend_ms`目录;多卡或集群场景需要指定到`*_ascend_pt`或`*_ascend_ms`目录的父目录层级。 3. 查看结果。 @@ -86,27 +85,27 @@ msprof-analyze advisor命令行包含如下三个参数: | dimension | mode | 参数释义 | | ---------- |---------------------------------------| ------------------------------------ | | overall | overall summary | 计算、通信、空闲等维度对性能数据进行拆解 | -| | environment_variable_analysis | 环境变量设置推荐 | +| | environment_variable_analysis | 环境变量设置推荐
MindSpore场景不适配该功能 | | cluster | slow rank | 慢卡识别 | | | slow link | 慢链路识别 | | computing | AICPU operator | AI CPU调优 | -| | Dynamic shape operator | 识别动态Shape算子 | +| | Dynamic shape operator | 识别动态Shape算子
MindSpore场景不适配该功能 | | | block dim | block dim算子调优 | -| | operator no bound | 算子瓶颈分析 | +| | operator no bound | 算子瓶颈分析
MindSpore场景不适配该功能 | | | fusion issue | 融合算子图调优 | | | AI Core Frequency | AI Core算子降频分析 | |communication| Packet analysis |通信小包检测 | || bandwidth contention analysis |通信计算带宽抢占检测 | || Communication retransmission analysis |通信重传检测 | | scheduling | Affinity apis | 亲和API替换调优 | -| | Operator dispatch | 识别算子下发问题(路径3/路径5) | +| | Operator dispatch | 识别算子下发问题(路径3/路径5)
MindSpore场景不适配该功能 | | | SyncBatchNorm | BatchNorm同步检测 | | | SynchronizeStream | 流同步检测 | | | Slow dataloader | 异常dataloader检测 | -| | gc | 识别异常垃圾回收事件。需要Ascend PyTorch Profiler采集时开启experimental_config下的gc_delect_threshold功能 | +| | gc | 识别异常垃圾回收事件。需要Ascend PyTorch Profiler采集时开启experimental_config下的gc_delect_threshold功能
MindSpore场景不适配该功能 | | memory | Memory | 识别异常的内存申请释放操作 | | comparison | Kernel compare of Rank\* Step\* and Rank\* Step\* | 识别标杆和待比对性能数据的Kernel数据(无标杆场景是集群内部快慢卡的性能数据对比,有标杆场景是两个集群之间存在明显耗时差异的相同卡之间的性能数据对比) | -| | API compare of Rank\* Step\* and Rank\* Step\* | 识别标杆和待比对性能数据的API数据(无标杆场景是集群内部快慢卡的性能数据对比,有标杆场景是两个集群之间存在明显耗时差异的相同卡之间的性能数据对比) | +| | API compare of Rank\* Step\* and Rank\* Step\* | 识别标杆和待比对性能数据的API数据(无标杆场景是集群内部快慢卡的性能数据对比,有标杆场景是两个集群之间存在明显耗时差异的相同卡之间的性能数据对比)
MindSpore场景不适配该功能 | 集群场景时自动进行cluster和overall的environment_variable_analysis解析,单卡时自动进行overall解析。 @@ -314,6 +313,8 @@ comparison模块内容如下图示例,识别标杆和待比对性能数据的K ## 工具使用(Jupyter Notebook方式) +MindSpore场景不支持该方式。 + Jupyter Notebook使用方式如下: 下列以Windows环境下执行为例介绍。 diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index 8217b6c163..1a9af98d51 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -2,7 +2,11 @@ cluster_analyse(集群分析工具)是在集群场景下,通过此工具来进行集群数据的分析,当前主要对基于通信域的迭代内耗时分析、通信时间分析以及通信矩阵分析为主, 从而定位慢卡、慢节点以及慢链路问题。 ## 性能数据采集 -当前集群调优工具主要支持Ascend PyTorch Profiler采集方式下的集群数据。采集方式参考:[Profiling数据采集](https://gitee.com/ascend/mstt/tree/master/profiler),此工具只需要通过Ascend PyTorch Porfiler工具采集NPU的性能数据即可。 +当前集群调优工具主要支持PyTorch场景的Ascend PyTorch Profiler采集方式和MindSpore场景的MindSpore Profiler采集方式下的集群数据。 + +此工具只需要NPU的性能数据作为输入。 + +Ascend PyTorch Profiler采集方法请参见《[NPU性能数据采集](https://gitee.com/ascend/mstt/tree/master/profiler)》,MindSpore Profiler采集方法请参见《[性能调试](https://www.mindspore.cn/mindinsight/docs/zh-CN/r2.3/performance_profiling_ascend.html)》。 我们要求至少是L1级别的数据。 ```python @@ -12,7 +16,7 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( ``` ### 确认数据是否可用 -打开采集到的某张卡数据(*ascend_pt结尾的文件夹),可用的数据应该具备: +打开采集到的某张卡数据(\*ascend_pt、\*ascend_ms结尾的文件夹),可用的数据应该具备: - ./profiler_info_x.json, - ./ASCEND_PROFILER_OUTPUT/step_trace_time.csv, @@ -26,7 +30,7 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( - analysis.db - ascend_pytorch_profiler_{rank_id}.db -以上csv、json文件与db文件只能存在一类,否则集群分析工具解析异常。 +以上csv、json文件与db文件只能存在一类,否则集群分析工具解析异常。MindSpore场景暂不支持以上db文件。 确认这几个文件生成后,继续下面的集群分析。 diff --git a/profiler/compare_tools/README.md b/profiler/compare_tools/README.md index daca4bb554..1145ba3290 100644 --- a/profiler/compare_tools/README.md +++ b/profiler/compare_tools/README.md @@ -119,8 +119,8 @@ MindSpore性能调试工具采集结果数据目录结构如下: msprof-analyze compare -d [比对性能数据文件所在路径] -bp [基准性能数据文件所在路径] --output_path=[比对结果文件存放路径] ``` - - --profiling_path或-d(必选):比对性能数据文件所在路径。可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 - - --benchmark_path或-bp(必选):基准性能数据文件所在路径。基准性能数据文件若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件与-d一致。 + - --profiling_path或-d(必选):比对性能数据文件所在路径。可以指定以“ascend_pt”或“ascend_ms”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 + - --benchmark_path或-bp(必选):基准性能数据文件所在路径。基准性能数据文件若以GPU为基准,指定到以“.pt.trace”结尾的json文件;若以NPU不同版本为基准,指定文件与-d一致。 - --output_path或-o(可选):性能比对结果存放的路径,默认保存在当前目录。 #### 脚本方式 @@ -135,23 +135,23 @@ python performance_compare.py [基准性能数据文件所在路径] [比对性 ``` - 基准性能数据文件所在路径(必选):若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件参考**比对性能数据文件所在路径**。 -- 比对性能数据文件所在路径(必选):可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 +- 比对性能数据文件所在路径(必选):可以指定以“ascend_pt”或“ascend_ms”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 - --output_path或-o(可选):性能比对结果存放的路径,默认保存在当前目录。 #### 通用参数说明 -| 参数名 | 说明 | 是否必选 | -| ------------------------------ |--------------------------------------------------------------------------------------------------------------------------| -------- | -| --enable_profiling_compare | 开启总体性能比对。 | 否 | -| --enable_operator_compare | 开启算子性能比对。MindSpore场景暂不支持。该开关较耗时,建议只采集一个step的性能数据。 | 否 | -| --enable_communication_compare | 开启通信性能比对。 | 否 | -| --enable_memory_compare | 开启算子内存比对。MindSpore场景暂不支持。该开关较耗时,建议只采集一个step的性能数据。 | 否 | -| --enable_kernel_compare | 开启kernel性能比对。仅针对NPU与NPU比对的场景。需要使用性能数据中的kernel_details.csv文件。 | 否 | -| --enable_api_compare | 开启API性能比对。需要使用性能数据中的trace_view.csv文件。 | 否 | -| --disable_details | 隐藏明细比对,只进行统计级比对。 | 否 | +| 参数名 | 说明 | 是否必选 | +| ------------------------------ | ------------------------------------------------------------ | -------- | +| --enable_profiling_compare | 开启总体性能比对。 | 否 | +| --enable_operator_compare | 开启算子性能比对。MindSpore场景暂不支持。该开关较耗时,建议只采集一个step的性能数据。 | 否 | +| --enable_communication_compare | 开启通信性能比对。 | 否 | +| --enable_memory_compare | 开启算子内存比对。MindSpore场景暂不支持。该开关较耗时,建议只采集一个step的性能数据。 | 否 | +| --enable_kernel_compare | 开启kernel性能比对。仅针对NPU与NPU比对的场景。需要使用性能数据中的kernel_details.csv文件。 | 否 | +| --enable_api_compare | 开启API性能比对。MindSpore场景暂不支持。需要使用性能数据中的trace_view.csv文件。 | 否 | +| --disable_details | 隐藏明细比对,只进行统计级比对。 | 否 | | --base_step | 基准性能数据step ID,配置后使用基准性能数据对应step的数据进行比对。为整数,需配置实际数据存在的step ID,默认未配置,比对所有性能数据,需要与--comparison_step同时配置。配置示例:--base_step=1。 | 否 | | --comparison_step | 比对性能数据step ID,配置后使用比对性能数据对应step的数据进行比对。为整数,需配置实际数据存在的step ID,默认未配置,比对所有性能数据,需要与--base_step同时配置。配置示例:--comparison_step=1。 | 否 | -| --force | 强制跳过用户属主(文件是否属于当前用户)及文件大小(csv文件小于5G,json文件小于10G,db文件小于8G)校验开关。配置示例:--force | 否 | +| --force | 强制跳过用户属主(文件是否属于当前用户)及文件大小(csv文件小于5G,json文件小于10G,db文件小于8G)校验开关。配置示例:--force | 否 | 说明:以上开关均不设置的情况下,**工具默认开启所有的性能比对**,当用户设置了以上开关,则按照用户设置的开关进行性能比对,示例如下: @@ -169,6 +169,8 @@ python performance_compare.py [基准性能数据文件] [比对性能数据文 #### 算子性能比对特有参数说明 +MindSpore场景暂不支持。 + | 参数名 | 说明 | 是否必选 | | ----------------- | ------------------------------------------------------------ | -------- | | --gpu_flow_cat | 配置GPU trace中CPU侧算子与device kernel的连线标识,当GPU的Device Duration(us)均为0时设置。使用chrome://tracing打开GPU的json,右上角Flow events找到连线标识,将标识配置进该参数。使用示例:--gpu_flow_cat=async_gpu | 否 | @@ -178,7 +180,7 @@ python performance_compare.py [基准性能数据文件] [比对性能数据文 ## 比对结果说明 -MindSpore场景仅支持**总体性能**和**通信性能**的对比。 +MindSpore场景仅支持**总体性能**、**通信性能**和**kernel性能**的对比。 比对结果分为打屏和performance_comparison_result_{timestamp}.csv两种形式输出,其中打屏输出为概要信息,csv文件保存详细结果。 @@ -378,6 +380,8 @@ kernel比对结果在performance_comparison_result_*.xlsx中KernelCompare页呈 ### API性能 +MindSpore场景暂不支持。 + API比对结果在performance_comparison_result_*.xlsx中ApiCompare页呈现。 按照api name(API名称)组统计,统计信息包括: -- Gitee