From cee0905b5e509d7518394190a092b77749f94836 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Tue, 7 May 2024 17:10:33 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[profiler]=E5=B7=A5=E5=85=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E8=BF=AD=E4=BB=A3=E4=BA=8C=E9=9C=80=E6=B1=82=E5=90=88?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/README.md | 66 ++++++++++++++++++++++--- profiler/advisor/README.md | 44 ++++++++++++++++- profiler/cluster_analyse/README.md | 58 +++++++++++++++++----- profiler/compare_tools/README.md | 78 ++++++++++++++++++++++++------ 4 files changed, 212 insertions(+), 34 deletions(-) diff --git a/profiler/README.md b/profiler/README.md index e010c2c3cf..fbebde011f 100644 --- a/profiler/README.md +++ b/profiler/README.md @@ -2,13 +2,13 @@ ATT工具针对训练&大模型场景,提供端到端调优工具:用户采集到性能数据后,由ATT工具提供统计、分析以及相关的调优建议。 -### NPU Profiling数据采集 +## NPU性能数据采集 -目前ATT工具主要支持Ascend PyTorch Profiler接口的性能数据采集,请参考官方文档:[Ascend PyTorch Profiler数据采集与分析](https://www.hiascend.com/document/detail/zh/canncommercial/70RC1/modeldevpt/ptmigr/AImpug_0067.html)。 +目前ATT工具主要支持Ascend PyTorch Profiler接口的性能数据采集,请参考官方文档:[Ascend PyTorch Profiler数据采集与分析](https://www.hiascend.com/document/detail/zh/canncommercial/80RC1/devaids/auxiliarydevtool/atlasprofiling_16_0006.html)。 -Ascend PyTorch Profiler接口支持AscendPyTorch 5.0.RC2或更高版本,支持的PyThon和CANN软件版本配套关系请参见《CANN软件安装指南》中的“[安装PyTorch](https://www.hiascend.com/document/detail/zh/canncommercial/63RC2/envdeployment/instg/instg_000041.html)”。 +Ascend PyTorch Profiler接口支持AscendPyTorch 5.0.RC2或更高版本,支持的PyThon和CANN软件版本配套关系请参见“[安装PyTorch框架](https://www.hiascend.com/document/detail/zh/Pytorch/60RC1/configandinstg/instg/insg_0006.html)”。 -#### 采集方式一:通过with语句进行采集 +### 采集方式一:通过with语句进行采集 ```python import torch_npu @@ -35,7 +35,7 @@ with torch_npu.profiler.profile( prof.step() ``` -#### 采集方式二:start,stop方式进行采集 +### 采集方式二:start,stop方式进行采集 ```python import torch_npu @@ -64,7 +64,7 @@ for epoch, data in enumerate(dataloader): prof.stop() ``` -#### NPU性能数据目录结构 +### NPU性能数据目录结构 ascend pytorch profiler数据目录结构如下: @@ -79,7 +79,59 @@ ascend pytorch profiler数据目录结构如下: |- * _ascend_pt ``` -### 子功能介绍 +## 工具安装 + +1. whl包获取。 + + 请通过下表链接下载profiler工具whl包。 + + | profiler版本 | 发布日期 | 支持PyTorch版本 | 下载链接 | 校验码 | + | ------------ | ---------- | ------------------ | --------------------------------------- | ------ | + | 1.0 | 2024-05-09 | 1.11.0/2.0/2.1/2.2 | [msprof_analyze-1.0-py3-none-any.whl]() | | + + + +2. whl包校验。 + + 1. 根据以上下载链接下载whl包到Linux安装环境。 + + 2. 进入whl包所在目录,执行如下命令。 + + ``` + sha256sum {name}.whl + ``` + + {name}为whl包名称。 + + 若回显呈现对应版本whl包一致的**校验码**,则表示下载了正确的ptdbg_ascend精度工具whl安装包。示例如下: + + ``` + sha256sum msprof_analyze-1.0-py3-none-any.whl + xx *msprof_analyze-1.0-py3-none-any.whl + ``` + +3. whl包安装。 + + 执行如下命令进行安装。 + + ``` + pip3 install ./msprof_analyze-{version}-py3-none-any.whl + ``` + + 若为覆盖安装,请在命令行末尾增加“--force-reinstall”参数强制安装,例如: + + ``` + pip3 install ./msprof_analyze-{version}-py3-none-any.whl --force-reinstall + ``` + + 提示如下信息则表示安装成功。 + + ``` + Successfully installed msprof_analyze-{version} + ``` + +## 工具使用 + | 工具名称 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | | [compare_tools(性能比对工具)](https://gitee.com/ascend/att/tree/master/profiler/compare_tools) | 提供NPU与GPU性能拆解功能以及算子、通信、内存性能的比对功能。 | diff --git a/profiler/advisor/README.md b/profiler/advisor/README.md index 722243cdc2..8fc5544a61 100644 --- a/profiler/advisor/README.md +++ b/profiler/advisor/README.md @@ -1,6 +1,46 @@ # 性能分析工具 -性能分析工具是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议的工具 。使用方式如下: +性能分析工具是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议的工具 。 + +## 工具使用(命令行方式方式) + +1. 参见《[性能工具](../README.md)》完成工具安装。 + +2. 执行分析。 + + - 总体性能瓶颈 + + ```bash + msprof-analyze advisor all -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] + ``` + + - 计算瓶颈 + + ```bash + msprof-analyze advisor computation -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] + ``` + + - 通信瓶颈 + + ```bash + msprof-analyze advisor communication -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] + ``` + + - 调度瓶颈 + + ```bash + msprof-analyze advisor schedule -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] + ``` + + -d(必选):待分析性能数据文件所在路径。 + + -bp(可选):基准性能数据文件所在路径。 + +3. 查看结果。 + + 分析结果打屏展示并生成html和csv文件。 + +## 工具使用(jupyter notebook工具方式) 下列以Windows环境下执行为例介绍。 @@ -14,7 +54,7 @@ 2. 在环境下安装ATT工具。 - ``` + ```bash git clone https://gitee.com/ascend/att.git ``` diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index f7646f67c4..b6347b085e 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -29,23 +29,35 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( 确认这几个文件生成后,继续下面的集群分析。 -## 数据汇聚与集群解析 +## 数据汇聚与解析 -将所有卡的数据拷贝并汇集到一个目录下,在本目录下运行以下命令即可生成cluster_analysis_output文件夹。 +### 操作步骤 -```shell -python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} -``` -### 参数说明 +1. 参见《[性能工具](../README.md)》完成工具安装。 + +2. 将所有卡的数据拷贝并汇集到一个目录下,在本目录下运行以下命令即可生成cluster_analysis_output文件夹。 + + ```shell + msprof-analyze cluster -d {cluster profiling data path} -m {mode} + ``` -| 参数名 | 说明 | 是否必选 | -| ---------------------- | --------------------------------------- | --------------------------------------- | -| --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | -| --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、all(同时解析通信矩阵和通信耗时数据),默认值为all。 | 否 | + 或 + + ```shell + python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} + ``` + 参数说明: + + | 参数名 | 说明 | 是否必选 | + | --------------------- | ------------------------------------------------------------ | -------- | + | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | + | --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、default(同时解析通信矩阵和通信耗时数据)、recipe(),默认值为default。 | 否 | + | --parallel_mode | 设置收集多卡db数据时的并发方式。取值为concurrent(使用xxx进程池实现并发)和single(),默认值为concurrent。 | 否 | + | --output_type | 设置到处的数据形式。取值为db()和notebook(),默认值为xxx。 | 否 | ### 交付件 -集群分析工具的交付件通过Ascend Insight工具展示,详见《MindStudio 可视化调优工具指南(Ascend Insight)》。 +集群分析工具的交付件通过Ascend Insight工具展示,详见《MindStudio Ascend Insight用户指南》。 #### cluster_step_trace_time.csv @@ -73,6 +85,8 @@ J列:Bubble时间,指receive时间的总和。 K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算子外的并且不被掩盖的通信时间。 +L列:Preparing,指迭代开始到首个计算或通信算子运行的时间。 + **Tips**:先筛选B列type为stage, 看stage间是否有问题,再筛选B列type为rank,看rank是否有问题,根据以下几点排查。 * 根据Computing的时间差异判断是否有慢卡,或者有负载不均衡的现象。 @@ -121,5 +135,27 @@ K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算 - CommunicationGroup:通信组信息。 - ClusterStepTraceTime:集群迭代轨迹数据。 +#### cann_api_stats + +--output_type=db时cluster_analysis_output目录下生成cann_api_stats.db文件,--output_type=notebook时cluster_analysis_output目录下生成cann_api_stats.ipynb文件。文件内容如下: + +| 字段 | 说明 | +| ---------- | -------------- | +| Name | API名称 | +| Time | 耗时占比 | +| Total Time | 总耗时 | +| Num Calls | AIP调用次数 | +| Avg | 平均耗时 | +| Q1 | Q1分位数 | +| Med | 中位数 | +| Q3 | Q3分位数 | +| Min | 最小耗时 | +| Max | 最大耗时 | +| StdDcv | 标准差 | +| Min Rank | 耗时最小的Rank | +| Max Rank | 耗时最大的Rank | + + + diff --git a/profiler/compare_tools/README.md b/profiler/compare_tools/README.md index 014fa36e4e..6d2073b0c4 100644 --- a/profiler/compare_tools/README.md +++ b/profiler/compare_tools/README.md @@ -84,21 +84,39 @@ ascend pytorch profiler数据目录结构如下: ### 性能数据比对 -将att代码仓下载到本地,执行以下命令: +性能比对工具将总体性能拆解为训练耗时和内存占用,其中训练耗时可拆分为算子(包括算子和nn.Module)、通信、调度三个维度,以打屏的形式输出总体指标,帮助用户定界劣化的方向。与此同时,工具还会生成performance_comparison_result_*.xlsl,展示每个算子在执行耗时、通信耗时、内存占用的优劣,可通过DIFF列大于0筛选出劣化算子。详细介绍请参见“**比对结果说明**”。 + +性能比对工具支持使用**命令行**和**脚本**两种方式执行性能数据比对操作,这两种方式均支持**通用参数**和**算子性能比对特有参数**。 + +#### 命令行方式 + +1. 参见《[性能工具](../README.md)》完成工具安装。 + +2. 执行如下命令进行性能数据比对: + + ``` + msprof-analyze compare -d [比对性能数据文件所在路径] -bp [基准性能数据文件所在路径] --output_path=[比对结果文件存放路径] + ``` + + - -d(必选):比对性能数据文件所在路径。可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 + - -bp(必选):基准性能数据文件所在路径。基准性能数据文件若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件与-d一致。 + - --output_path(可选):性能比对结果存放的路径,默认保存在当前目录。 + +#### 脚本方式 + +将att代码仓下载到本地,执行如下命令: ```bash # 进入att代码仓目录下的compare_tools目录 cd att/profiler/compare_tools # 执行最简比对命令 -python performance_compare.py [基准性能数据文件] [比对性能数据文件] --output_path=./result_dir +python performance_compare.py [基准性能数据文件所在路径] [比对性能数据文件所在路径] --output_path=[比对结果文件存放路径] ``` -- 基准性能数据文件(必选):若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件参考**比对性能数据文件**。 -- 比对性能数据文件(必选):可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 +- 基准性能数据文件所在路径(必选):若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件参考**比对性能数据文件所在路径**。 +- 比对性能数据文件所在路径(必选):可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 - --output_path(可选):性能比对结果存放的路径,默认保存在当前目录。 -工具将总体性能拆解为训练耗时和内存占用,其中训练耗时可拆分为算子(包括算子和nn.Module)、通信、调度三个维度,以打屏的形式输出总体指标,帮助用户定界劣化的方向。与此同时,工具还会生成performance_comparison_result_*.xlsl,展示每个算子在执行耗时、通信耗时、内存占用的优劣,可通过DIFF列大于0筛选出劣化算子。详细介绍请参见“**比对结果说明**”。 - #### 通用参数说明 | 参数名 | 说明 | 是否必选 | @@ -110,6 +128,12 @@ python performance_compare.py [基准性能数据文件] [比对性能数据文 说明:以上4个开关均不设置的情况下,**工具默认开启所有的性能比对**,当用户设置了以上开关,则按照用户设置的开关进行性能比对,示例如下: +```bash +msprof-analyze compare -d [比对性能数据文件所在路径] -bp [基准性能数据文件所在路径] --output_path=./result_dir --enable_profiling_compare +``` + +或 + ```bash python performance_compare.py [基准性能数据文件] [比对性能数据文件] --output_path=./result_dir --enable_profiling_compare ``` @@ -135,9 +159,10 @@ python performance_compare.py [基准性能数据文件] [比对性能数据文 | --------------------------------------- | ------------------------------------------------------------ | | Cube Time(Num) | Cube算子总耗时,Num表示计算的次数。 | | Vector Time(Num) | Vector算子总耗时,Num表示计算的次数。 | -| Other Time | AI CPU、DSA等其他非cube vector算子耗时。 | -| Flash Attention Time(Forward) | Flash Attention算子前向耗时。 | -| Flash Attention Time(Backward) | Flash Attention算子反向耗时。 | +| Corv Time(Forward)(Num) | | +| Corv Time(Backward)(Num) | | +| Flash Attention Time(Forward)(Num) | Flash Attention算子前向耗时。 | +| Flash Attention Time(Backward)(Num) | Flash Attention算子反向耗时。 | | Computing Time | 计算流耗时,计算流所有event耗时总和。如果有多条并发计算,计算流耗时对重叠部分只会计算一次。 | | Mem Usage | 内存使用。GPU上的内存使用可以使用nvidia-smi查看,NPU上的内存使用可以使用npu-smi查看,Profiling信息采集时打开profile_memory=True开关,mem usage显示的是memory_record里面的最大resevered值,一般来说是进程级内存。 | | Uncovered Communication Time(Wait Time) | 通信未掩盖耗时,包含Wait Time(只有采集性能数据的Level等级为L1以上并且采集NPU数据时才会存在)为同步时间。 | @@ -167,6 +192,8 @@ activities配置仅采集NPU数据,不配置experimental_config参数以及其 ### 算子性能 +#### 比对数据无Python Function + 算子性能比对结果在performance_comparison_result_*.xlsl中OperatorCompare和OperatorCompareStatistic的sheet页呈现。 - OperatorCompareStatistic:算子为粒度的统计呈现,按照算子在device上的总耗时与基准算子的差距值(Diff Duration(ms)列)进行逆序。 @@ -177,13 +204,11 @@ activities配置仅采集NPU数据,不配置experimental_config参数以及其 步骤1:查看OperatorCompareStatistic页,找出耗时差距TOP的算子。 步骤2:查看OperatorCompare页,搜索耗时差距TOP的算子,查看具体执行的kernel耗时,寻找可优化点。 -### nn.Module性能 +#### 比对数据有Python Function -nn.Module是所有神经网络模块的基类,使用PyTorch构建神经网络需要继承nn.Module类来实现,性能比对工具支持模块级的比对(包含优化器和nn.Module),帮助优化模型结构。 +算子性能比对结果在performance_comparison_result_*.xlsl中ModuleCompareStatistic、ModuleCompare的sheet页呈现。 -当用户采集时开启with_stack开关,会上报python function事件,当比对的双方数据都存在python function的事件时,可进行模块级别的比对。 - -nn.Module性能比对结果在performance_comparison_result_*.xlsl中ModuleCompareStatistic的sheet页呈现。 +ModuleCompareStatistic:模块及模块下算子为力度的统计呈现,按照模块的执行顺序进行排序。 - Module Class:Module名,如nn.Module: Linear。 - Module Level:Module的层级。 @@ -199,6 +224,31 @@ nn.Module性能比对结果在performance_comparison_result_*.xlsl中ModuleCompa - Base Call Stack:基准文件模块的调用栈。 - Comparison Call Stack:比较文件模块的调用栈。 +ModuleCompare:模块及模块下算子比对的明细展示,可以查看每一个算子对应的kernel详情。 + +- Module Class:Module名,如nn.Module: Linear。 +- Module Level:Module的层级。 +- Module Name:Module唯一标识名,如/ DynamicNet_0/ Linear_0。 +- Operator Name:框架侧算子名,如aten::add。字段为[ TOTAL ]代表该module的总体情况。 +- Kernel Detail:算子详细信息。 +- Device Self Time(us):该模块调用的算子(排除子模块)在device侧执行的总耗时,单位us。 +- Device Total Time(us):该模块调用的算子(包含子模块)在device侧执行的总耗时,单位us。 +- Device Total Time Diff(us):GPU与NPU的Device Total Time(us)差值。 +- Device Self Time Diff(us):GPU与NPU的Device Self Time(us)差值。 +- Total Time Ratio:GPU与NPU的Device Total Time(us)比值。 +- Base Call Stack:有劣化的模块或算子,基准文件模块的调用栈。 +- Comparison Call Stack:有劣化的模块或算子,比较文件模块的调用栈。 + +步骤1:查看ModuleCompareStatistic页,找出耗时差距TOP的模块。 + +​ 筛选Operator Name字段为[ TOTAL ],将模块总体情况按照Device Self Time(ms)字段逆序,可识别出耗时差距TOP的模块。 + +​ 恢复数据,可按照Order Id字段升序。 + +步骤2:查看ModuleCompare页,查找耗时差距TOP模块下的劣化算子。 + +步骤3:通过调用栈找到对应的代码行。 + ### 通信性能 通信性能比对结果在performance_comparison_result_*.xlsl中CommunicationCompare的sheet页呈现。 -- Gitee From ab2bb4c06fe3e179dfec2db28ddabce0fa7e82a0 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Thu, 9 May 2024 16:25:11 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[profiler]=E5=B7=A5=E5=85=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E8=BF=AD=E4=BB=A3=E4=BA=8C=E9=9C=80=E6=B1=82=E5=90=88?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/README.md | 51 ++++++++++++++++++++++++++---- profiler/advisor/README.md | 40 ----------------------- profiler/cluster_analyse/README.md | 5 ++- profiler/compare_tools/README.md | 14 ++++---- 4 files changed, 52 insertions(+), 58 deletions(-) diff --git a/profiler/README.md b/profiler/README.md index fbebde011f..7461fa4b3b 100644 --- a/profiler/README.md +++ b/profiler/README.md @@ -1,6 +1,6 @@ # 性能工具 -ATT工具针对训练&大模型场景,提供端到端调优工具:用户采集到性能数据后,由ATT工具提供统计、分析以及相关的调优建议。 +ATT工具针对训练&大模型场景,提供端到端性能调优工具:用户采集到性能数据后,由ATT性能工具提供统计、分析以及相关的调优建议。 ## NPU性能数据采集 @@ -81,13 +81,17 @@ ascend pytorch profiler数据目录结构如下: ## 工具安装 +性能工具的安装方式包括:**下载whl包安装**和**源代码编译安装**。 + +#### 下载whl包安装 + 1. whl包获取。 请通过下表链接下载profiler工具whl包。 - | profiler版本 | 发布日期 | 支持PyTorch版本 | 下载链接 | 校验码 | - | ------------ | ---------- | ------------------ | --------------------------------------- | ------ | - | 1.0 | 2024-05-09 | 1.11.0/2.0/2.1/2.2 | [msprof_analyze-1.0-py3-none-any.whl]() | | + | profiler版本 | 发布日期 | 支持PyTorch版本 | 下载链接 | 校验码 | + | ------------ | ---------- | ------------------ | ----------------------------------------- | ------ | + | 0.0.2 | 2024-05-09 | 1.11.0/2.0/2.1/2.2 | [msprof_analyze-0.0.2-py3-none-any.whl]() | | @@ -103,11 +107,11 @@ ascend pytorch profiler数据目录结构如下: {name}为whl包名称。 - 若回显呈现对应版本whl包一致的**校验码**,则表示下载了正确的ptdbg_ascend精度工具whl安装包。示例如下: + 若回显呈现对应版本whl包一致的**校验码**,则表示下载了正确的性能工具whl安装包。示例如下: ``` - sha256sum msprof_analyze-1.0-py3-none-any.whl - xx *msprof_analyze-1.0-py3-none-any.whl + sha256sum msprof_analyze-0.0.2-py3-none-any.whl + xx *msprof_analyze-0.0.2-py3-none-any.whl ``` 3. whl包安装。 @@ -130,6 +134,39 @@ ascend pytorch profiler数据目录结构如下: Successfully installed msprof_analyze-{version} ``` +#### 源代码编译安装 + +1. 安装依赖。 + + 编译前需要安装wheel。 + + ```bash + pip3 install wheel + ``` + +2. 下载源码。 + + ```bash + git clone https://gitee.com/ascend/att.git + ``` + +3. 编译whl包。 + + ```bash + cd att/profiler + python3 setup.py bdist_wheel + ``` + + 以上命令执行完成后在att/profiler/dist目录下生成性能工具whl安装包`msprof_analyze-{version}-py3-none-any.whl`。 + +4. 安装。 + + 执行如下命令进行性能工具安装。 + + ```bash + pip3 install /msprof_analyze-{version}-py3-none-any.whl --upgrade --force-reinstall + ``` + ## 工具使用 | 工具名称 | 说明 | diff --git a/profiler/advisor/README.md b/profiler/advisor/README.md index 8fc5544a61..1898c1d377 100644 --- a/profiler/advisor/README.md +++ b/profiler/advisor/README.md @@ -2,46 +2,6 @@ 性能分析工具是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议的工具 。 -## 工具使用(命令行方式方式) - -1. 参见《[性能工具](../README.md)》完成工具安装。 - -2. 执行分析。 - - - 总体性能瓶颈 - - ```bash - msprof-analyze advisor all -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] - ``` - - - 计算瓶颈 - - ```bash - msprof-analyze advisor computation -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] - ``` - - - 通信瓶颈 - - ```bash - msprof-analyze advisor communication -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] - ``` - - - 调度瓶颈 - - ```bash - msprof-analyze advisor schedule -d [待分析性能数据文件所在路径] -bp [基准性能数据文件所在路径] - ``` - - -d(必选):待分析性能数据文件所在路径。 - - -bp(可选):基准性能数据文件所在路径。 - -3. 查看结果。 - - 分析结果打屏展示并生成html和csv文件。 - -## 工具使用(jupyter notebook工具方式) - 下列以Windows环境下执行为例介绍。 1. 在环境下安装jupyter notebook工具。 diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index b6347b085e..2bfcfd1aaa 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -51,9 +51,8 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( | 参数名 | 说明 | 是否必选 | | --------------------- | ------------------------------------------------------------ | -------- | | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | - | --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、default(同时解析通信矩阵和通信耗时数据)、recipe(),默认值为default。 | 否 | - | --parallel_mode | 设置收集多卡db数据时的并发方式。取值为concurrent(使用xxx进程池实现并发)和single(),默认值为concurrent。 | 否 | - | --output_type | 设置到处的数据形式。取值为db()和notebook(),默认值为xxx。 | 否 | + | --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、all(同时解析通信矩阵和通信耗时数据)、cann_api_sum(多节点汇总分析),默认值为all。 | 否 | + | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。-m参数配置为cann_api_sum时可配置此参数。 | 否 | ### 交付件 diff --git a/profiler/compare_tools/README.md b/profiler/compare_tools/README.md index 3f42e33fc5..16eaeaccd7 100644 --- a/profiler/compare_tools/README.md +++ b/profiler/compare_tools/README.md @@ -12,7 +12,7 @@ compare_tools(性能比对工具)支持比较GPU与NPU之间、NPU与NPU之 ### 环境依赖 -使用本工具前需要安装的依赖包:prettytable、xlsxwriter、pandas、numpy +使用本工具前需要安装的依赖包: ```bash pip3 install prettytable @@ -84,7 +84,7 @@ ascend pytorch profiler数据目录结构如下: ### 性能数据比对 -性能比对工具将总体性能拆解为训练耗时和内存占用,其中训练耗时可拆分为算子(包括算子和nn.Module)、通信、调度三个维度,以打屏的形式输出总体指标,帮助用户定界劣化的方向。与此同时,工具还会生成performance_comparison_result_*.xlsl,展示每个算子在执行耗时、通信耗时、内存占用的优劣,可通过DIFF列大于0筛选出劣化算子。详细介绍请参见“**比对结果说明**”。 +性能比对工具将总体性能拆解为训练耗时和内存占用,其中训练耗时可拆分为算子(包括算子和nn.Module)、通信、调度三个维度,以打屏的形式输出总体指标,帮助用户定界劣化的方向。与此同时,工具还会生成performance_comparison_result_*.xlsx,展示每个算子在执行耗时、通信耗时、内存占用的优劣,可通过DIFF列大于0筛选出劣化算子。详细介绍请参见“**比对结果说明**”。 性能比对工具支持使用**命令行**和**脚本**两种方式执行性能数据比对操作,这两种方式均支持**通用参数**和**算子性能比对特有参数**。 @@ -159,8 +159,8 @@ python performance_compare.py [基准性能数据文件] [比对性能数据文 | --------------------------------------- | ------------------------------------------------------------ | | Cube Time(Num) | Cube算子总耗时,Num表示计算的次数。 | | Vector Time(Num) | Vector算子总耗时,Num表示计算的次数。 | -| Corv Time(Forward)(Num) | | -| Corv Time(Backward)(Num) | | +| Corv Time(Forward)(Num) | conv前向算子耗时,Num表示计算的次数。 | +| Corv Time(Backward)(Num) | conv反向算子耗时,Num表示计算的次数。 | | Flash Attention Time(Forward)(Num) | Flash Attention算子前向耗时。 | | Flash Attention Time(Backward)(Num) | Flash Attention算子反向耗时。 | | Computing Time | 计算流耗时,计算流所有event耗时总和。如果有多条并发计算,计算流耗时对重叠部分只会计算一次。 | @@ -194,7 +194,7 @@ activities配置仅采集NPU数据,不配置experimental_config参数以及其 #### 比对数据无Python Function -算子性能比对结果在performance_comparison_result_*.xlsl中OperatorCompare和OperatorCompareStatistic的sheet页呈现。 +算子性能比对结果在performance_comparison_result_*.xlsx中OperatorCompare和OperatorCompareStatistic的sheet页呈现。 - OperatorCompareStatistic:算子为粒度的统计呈现,按照算子在device上的总耗时与基准算子的差距值(Diff Duration(ms)列)进行逆序。 - OperatorCompare:算子比对的明细展示,可以查看每一个算子对应的kernel详情。 @@ -206,12 +206,10 @@ activities配置仅采集NPU数据,不配置experimental_config参数以及其 #### 比对数据有Python Function -算子性能比对结果在performance_comparison_result_*.xlsl中ModuleCompareStatistic、ModuleCompare的sheet页呈现。 +算子性能比对结果在performance_comparison_result_*.xlsx中ModuleCompareStatistic、ModuleCompare的sheet页呈现。 当用户采集时开启with_stack开关,会上报python function事件,当比对的双方数据都存在python function的事件时,可进行模块级别的比对。 -nn.Module性能比对结果在performance_comparison_result_*.xlsx中ModuleCompareStatistic的sheet页呈现。 - - Module Class:Module名,如nn.Module: Linear。 - Module Level:Module的层级。 - Module Name:Module唯一标识名,如/ DynamicNet_0/ Linear_0。 -- Gitee From e5a9955f2018bceeb81d01b3458db74bf9455531 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Fri, 10 May 2024 14:14:44 +0800 Subject: [PATCH 3/7] =?UTF-8?q?[profiler]=E8=BF=AD=E4=BB=A3=E4=BA=8C?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/profiler/README.md b/profiler/README.md index 7461fa4b3b..e297e1e128 100644 --- a/profiler/README.md +++ b/profiler/README.md @@ -89,9 +89,9 @@ ascend pytorch profiler数据目录结构如下: 请通过下表链接下载profiler工具whl包。 - | profiler版本 | 发布日期 | 支持PyTorch版本 | 下载链接 | 校验码 | - | ------------ | ---------- | ------------------ | ----------------------------------------- | ------ | - | 0.0.2 | 2024-05-09 | 1.11.0/2.0/2.1/2.2 | [msprof_analyze-0.0.2-py3-none-any.whl]() | | + | profiler版本 | 发布日期 | 下载链接 | 校验码 | + | ------------ | ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ | + | 1.0 | 2024-05-10 | [msprof_analyze-1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.0/msprof_analyze-1.0-py3-none-any.whl) | bcded626f639cea32ba814f88cbc563b48609d2c832a9f9b12c455c0626137ed | @@ -110,8 +110,8 @@ ascend pytorch profiler数据目录结构如下: 若回显呈现对应版本whl包一致的**校验码**,则表示下载了正确的性能工具whl安装包。示例如下: ``` - sha256sum msprof_analyze-0.0.2-py3-none-any.whl - xx *msprof_analyze-0.0.2-py3-none-any.whl + sha256sum msprof_analyze-1.0-py3-none-any.whl + xx *msprof_analyze-1.0-py3-none-any.whl ``` 3. whl包安装。 @@ -164,7 +164,8 @@ ascend pytorch profiler数据目录结构如下: 执行如下命令进行性能工具安装。 ```bash - pip3 install /msprof_analyze-{version}-py3-none-any.whl --upgrade --force-reinstall + cd dist + pip3 install ./msprof_analyze-{version}-py3-none-any.whl --force-reinstall ``` ## 工具使用 -- Gitee From e385b97884c89e04cc94b2bd5231ed6840e97e1c Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Fri, 10 May 2024 14:27:19 +0800 Subject: [PATCH 4/7] =?UTF-8?q?[profiler]=E8=BF=AD=E4=BB=A3=E4=BA=8C?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/cluster_analyse/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index 2bfcfd1aaa..71c4ac7a03 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -56,7 +56,7 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( ### 交付件 -集群分析工具的交付件通过Ascend Insight工具展示,详见《MindStudio Ascend Insight用户指南》。 +集群分析工具的交付件通过Ascend Insight工具展示,详见《[MindStudio Ascend Insight用户指南](https://www.hiascend.com/document/detail/zh/mindstudio/70RC1/GUI-baseddevelopmenttool/msascendinsightug/AscendInsight_0002.html)》。 #### cluster_step_trace_time.csv -- Gitee From 4e169a649b0cc92969a9e17e84f4986c559dc194 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Mon, 13 May 2024 10:45:08 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[Profiler]=E5=B7=A5=E5=85=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E5=BC=80=E5=8F=91=E6=84=8F=E8=A7=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/cluster_analyse/README.md | 56 +++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index 71c4ac7a03..925235ad70 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -37,22 +37,46 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( 2. 将所有卡的数据拷贝并汇集到一个目录下,在本目录下运行以下命令即可生成cluster_analysis_output文件夹。 - ```shell - msprof-analyze cluster -d {cluster profiling data path} -m {mode} - ``` - - 或 - - ```shell - python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} - ``` - 参数说明: - - | 参数名 | 说明 | 是否必选 | - | --------------------- | ------------------------------------------------------------ | -------- | - | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | - | --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、all(同时解析通信矩阵和通信耗时数据)、cann_api_sum(多节点汇总分析),默认值为all。 | 否 | - | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。-m参数配置为cann_api_sum时可配置此参数。 | 否 | + 支持解析通信数据和集群汇总分析功能: + + - 解析通信数据 + + ```bash + msprof-analyze cluster -d {cluster profiling data path} -m {mode} + ``` + + 或 + + ```bash + python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} + ``` + + 参数说明: + + | 参数名 | 说明 | 是否必选 | + | --------------------- | ------------------------------------------------------------ | -------- | + | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | + | --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、all(同时解析通信矩阵和通信耗时数据),默认值为all。 | 否 | + + - 集群汇总分析 + + ```bash + msprof-analyze cluster -d {cluster profiling data path} -m cann_api_sum --parallel_mode concurrent + ``` + + 或 + + ```bash + python3 cluster_analysis.py -d {cluster profiling data path} -m cann_api_sum --parallel_mode concurrent + ``` + + 参数说明: + + | 参数名 | 说明 | 是否必选 | + | --------------------- | ------------------------------------------------------------ | -------- | + | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | + | --mode或-m | 数据解析模式。取值为:cann_api_sum(多节点汇总分析)。 | 否 | + | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。配置-m参数时可配置此参数。 | 否 | ### 交付件 -- Gitee From b5caf25b751a1e52c623f5c75d2d100449779d90 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Mon, 13 May 2024 15:54:27 +0800 Subject: [PATCH 6/7] =?UTF-8?q?[Profiler]=E5=B7=A5=E5=85=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E5=BC=80=E5=8F=91=E6=84=8F=E8=A7=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/cluster_analyse/README.md | 79 +++++++++++++++--------------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index 925235ad70..354e518ca3 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -37,46 +37,45 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( 2. 将所有卡的数据拷贝并汇集到一个目录下,在本目录下运行以下命令即可生成cluster_analysis_output文件夹。 - 支持解析通信数据和集群汇总分析功能: - - - 解析通信数据 - - ```bash - msprof-analyze cluster -d {cluster profiling data path} -m {mode} - ``` - - 或 - - ```bash - python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} - ``` - - 参数说明: - - | 参数名 | 说明 | 是否必选 | - | --------------------- | ------------------------------------------------------------ | -------- | - | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | - | --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、all(同时解析通信矩阵和通信耗时数据),默认值为all。 | 否 | - - - 集群汇总分析 - - ```bash - msprof-analyze cluster -d {cluster profiling data path} -m cann_api_sum --parallel_mode concurrent - ``` - - 或 - - ```bash - python3 cluster_analysis.py -d {cluster profiling data path} -m cann_api_sum --parallel_mode concurrent - ``` - - 参数说明: - - | 参数名 | 说明 | 是否必选 | - | --------------------- | ------------------------------------------------------------ | -------- | - | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | - | --mode或-m | 数据解析模式。取值为:cann_api_sum(多节点汇总分析)。 | 否 | - | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。配置-m参数时可配置此参数。 | 否 | + ```bash + msprof-analyze cluster -d {cluster profiling data path} -m {mode} + ``` + + 或 + + ```bash + python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} + ``` + + 参数说明: + + | 参数名 | 说明 | 是否必选 | + | --------------------- | ------------------------------------------------------------ | -------- | + | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | + | --mode或-m | 数据解析模式,取值详见“**--mode参数说明**”表。 | 否 | + + --mode参数说明: + + | 参数名 | 说明 | 是否必选 | + | -------------------- | ------------------------------------------------------------ | -------- | + | communication_matrix | 解析通信矩阵数据。 | 否 | + | communication_time | 解析通信耗时数据。 | 否 | + | all | 同时解析通信矩阵communication_matrix和通信耗时数据communication_time,--mode参数默认值为all。 | 否 | + | cann_api_sum | 集群汇总数据分析。该参数暂无交付件,待后续补充。 | 否 | + | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。
**只有配置cann_api_sum时可配置此参数。** | 否 | + + --parallel_mode参数示例如下: + + ```bash + msprof-analyze cluster -d {cluster profiling data path} -m cann_api_sum --parallel_mode concurrent + ``` + + 或 + + ```bash + python3 cluster_analysis.py -d {cluster profiling data path} -m cann_api_sum --parallel_mode concurrent + ``` + ### 交付件 -- Gitee From a0dee9b1cd5fcfc857c4660e50e094ec0a1373b6 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Mon, 13 May 2024 16:52:15 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[Profiler]=E5=B7=A5=E5=85=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E5=BC=80=E5=8F=91=E6=84=8F=E8=A7=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/cluster_analyse/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index 354e518ca3..8983bd65fb 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -53,6 +53,7 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( | --------------------- | ------------------------------------------------------------ | -------- | | --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | | --mode或-m | 数据解析模式,取值详见“**--mode参数说明**”表。 | 否 | + | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。
**只有-m配置cann_api_sum时可配置此参数。** | 否 | --mode参数说明: @@ -62,7 +63,6 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( | communication_time | 解析通信耗时数据。 | 否 | | all | 同时解析通信矩阵communication_matrix和通信耗时数据communication_time,--mode参数默认值为all。 | 否 | | cann_api_sum | 集群汇总数据分析。该参数暂无交付件,待后续补充。 | 否 | - | --parallel_mode | 设置收集多卡、多节点db数据时的并发方式。取值为concurrent(使用concurrent.feature进程池实现并发)。
**只有配置cann_api_sum时可配置此参数。** | 否 | --parallel_mode参数示例如下: -- Gitee