From a53d4e954a2492a944476310203a8cd8d0567bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E4=BC=9F=E4=BC=9F?= <734267852@qq.com> Date: Tue, 6 Feb 2024 10:12:41 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[att\profiler\cluster=5Fanalyse]=E6=96=B0?= =?UTF-8?q?=E5=A2=9Emode=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/cluster_analyse/README.md | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index f3a8b71cb9..e5850e4ad1 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -14,12 +14,12 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( 打开采集到的某张卡数据(*ascend_pt结尾的文件夹),可用的数据应该具备: -- **./profiler_info_x.json**, -- **./ASCEND_PROFILER_OUTPUT/step_trace_time.csv**, -- **./ASCEND_PROFILER_OUTPUT/trace_view.json**, -- **./ASCEND_PROFILER_OUTPUT/kernel_details.csv**, +- ./profiler_info_x.json, +- ./ASCEND_PROFILER_OUTPUT/step_trace_time.csv, +- ./ASCEND_PROFILER_OUTPUT/trace_view.json, +- ./ASCEND_PROFILER_OUTPUT/kernel_details.csv, - ./ASCEND_PROFILER_OUTPUT/communication.json, -- ./ASCEND_PROFILER_OUTPUT/communication_matrix.csv +- ./ASCEND_PROFILER_OUTPUT/communication_matrix.json 确认这几个文件生成后,继续下面的集群分析。 @@ -28,18 +28,21 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( 将所有卡的数据拷贝并汇集到一个目录下,在本目录下运行以下命令即可生成cluster_analysis_output文件夹。 ```shell -python3 cluster_analysis.py -d {cluster profiling data path} +python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} ``` ### 参数说明 -| 参数名 | 说明 | -| ---------------------- | --------------------------------------- | -| --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | +| 参数名 | 说明 | 是否必选 | +| ---------------------- | --------------------------------------- | --------------------------------------- | +| --collection_path或-d | 性能数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据。 | 是 | +| --mode或-m | 数据解析模式。取值为:communication_matrix(解析通信矩阵数据)、communication_time(解析通信耗时数据)、all(同时解析通信矩阵和通信耗时数据),默认值为all。 | 否 | ## 交付件 ### cluster_step_trace_time.csv +数据解析模式为communication_matrix、communication_time或all时均生成。 + A列: Step数,是采集性能数据时设置的,一般来说集群性能数据采集一个step足够,如果采集多个step,需要先筛选一下。 B列: Type,主要分两种,rank和stage, 和后面的index强相关,可以理解为一个是单卡rank,一个是rank group(pp 并行的stage),如果type为stage,则后面D-K列信息为rank group下的最大值。 @@ -76,6 +79,8 @@ K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算 ### cluster_communication_matrix.json +数据解析模式为communication_matrix或all时生成。 + 直接打开json(vscode或json查看器), 搜索"Total", 会有多个搜索结果,一般来说链路带宽信息的结构: ```bash @@ -91,3 +96,9 @@ K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算 - "LOCAL"是片内拷贝,速率非常快,不需要考虑。 - “HCCS”或“PCIE”是节点内片间拷贝,速度在18GB左右或以上比较正常。 - “RDMA”是节点间拷贝,910A速度在12GB左右或以上。 + +### cluster_communication.json + +数据解析模式为communication_time或all时生成。 + +待补充 -- Gitee From 9365b6068f422ddafb13201aa13b1f530801ac6e Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Tue, 6 Feb 2024 14:33:45 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[att\profiler\cluster=5Fanalyse]=E6=96=B0?= =?UTF-8?q?=E5=A2=9Emode=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/cluster_analyse/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index e5850e4ad1..7cdb2d2c1e 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -39,6 +39,8 @@ python3 cluster_analysis.py -d {cluster profiling data path} -m {mode} ## 交付件 +集群分析工具的交付件通过Ascend Insight工具展示,详见《MindStudio 可视化调优工具指南(Ascend Insight)》。 + ### cluster_step_trace_time.csv 数据解析模式为communication_matrix、communication_time或all时均生成。 @@ -101,4 +103,4 @@ K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算 数据解析模式为communication_time或all时生成。 -待补充 +主要为通信耗时数据。 -- Gitee From 304fadaefe9181e2031946ebef655069a67eb2f2 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Tue, 6 Feb 2024 14:56:00 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[att\profiler\advisor]=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=8C=87=E5=AF=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/advisor/README.md | 41 ++++++++++++++++++++++++ profiler/advisor/img/advisor_result.PNG | Bin 0 -> 53557 bytes profiler/advisor/img/jupyter_report.PNG | Bin 0 -> 34097 bytes 3 files changed, 41 insertions(+) create mode 100644 profiler/advisor/README.md create mode 100644 profiler/advisor/img/advisor_result.PNG create mode 100644 profiler/advisor/img/jupyter_report.PNG diff --git a/profiler/advisor/README.md b/profiler/advisor/README.md new file mode 100644 index 0000000000..5d9714869d --- /dev/null +++ b/profiler/advisor/README.md @@ -0,0 +1,41 @@ +# 专家系统工具 + +advisor(专家系统工具)是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议的工具 。使用方式如下: + +下列以Windows环境下执行为例介绍。 + +1. 在环境下安装jupyter notebook工具。 + + ```bash + pip install jupyter notebook + ``` + + jupyter notebook工具的具体安装和使用指导请至jupyter notebook工具官网查找。 + +2. 在环境下安装ATT工具。 + + ``` + git clone https://gitee.com/ascend/att.git + ``` + + 安装环境下保存Ascend PyTorch Profiler采集的性能数据。 + +3. 进入att\profiler\advisor目录执行如下命令启动jupyter notebook工具。 + + ```bash + jupyter notebook + ``` + + 执行成功则自动启动浏览器读取att\profiler\advisor目录,如下示例: + + ![jupyter_report](img/jupyter_report.PNG) + + 若在Linux环境下则回显打印URL地址,即是打开jupyter notebook工具页面的地址,需要复制URL,并使用浏览器访问(若为远端服务器则需要将域名“**localhost**”替换为远端服务器的IP),进入jupyter notebook工具页面。 + +4. 每个.ipynb文件为一项专家系统分析任务,选择需要的.ipynb打开,并在*_path参数下拷贝保存Ascend PyTorch Profiler采集的性能数据的路径。如下示例: + + ![advisor_result](img/advisor_result.PNG) + +5. 单击运行按钮执行专家系统分析。 + + 分析结果详细内容会在.ipynb页面下展示。 diff --git a/profiler/advisor/img/advisor_result.PNG b/profiler/advisor/img/advisor_result.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a9652f4ca53ff142a5ebd1033075aad54f8f0297 GIT binary patch literal 53557 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 L(Y>-ePhS2vl3w>? literal 0 HcmV?d00001 diff --git a/profiler/advisor/img/jupyter_report.PNG b/profiler/advisor/img/jupyter_report.PNG new file mode 100644 index 0000000000000000000000000000000000000000..baa860a7893e1801337916aea37475ea69bbaf04 GIT binary patch literal 34097 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 eUblT{W0&d5Yu16Ir2_E9E@ Date: Thu, 8 Feb 2024 09:18:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[att\profiler\advisor]advisor=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E5=90=8D=E7=A7=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profiler/advisor/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/profiler/advisor/README.md b/profiler/advisor/README.md index 5d9714869d..722243cdc2 100644 --- a/profiler/advisor/README.md +++ b/profiler/advisor/README.md @@ -1,6 +1,6 @@ -# 专家系统工具 +# 性能分析工具 -advisor(专家系统工具)是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议的工具 。使用方式如下: +性能分析工具是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议的工具 。使用方式如下: 下列以Windows环境下执行为例介绍。 @@ -32,10 +32,10 @@ advisor(专家系统工具)是将Ascend PyTorch Profiler采集的性能数 若在Linux环境下则回显打印URL地址,即是打开jupyter notebook工具页面的地址,需要复制URL,并使用浏览器访问(若为远端服务器则需要将域名“**localhost**”替换为远端服务器的IP),进入jupyter notebook工具页面。 -4. 每个.ipynb文件为一项专家系统分析任务,选择需要的.ipynb打开,并在*_path参数下拷贝保存Ascend PyTorch Profiler采集的性能数据的路径。如下示例: +4. 每个.ipynb文件为一项性能数据分析任务,选择需要的.ipynb打开,并在*_path参数下拷贝保存Ascend PyTorch Profiler采集的性能数据的路径。如下示例: ![advisor_result](img/advisor_result.PNG) -5. 单击运行按钮执行专家系统分析。 +5. 单击运行按钮执行性能数据分析。 分析结果详细内容会在.ipynb页面下展示。 -- Gitee