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