From 8494ad5408c572063b5f351605004de0e469ed7d Mon Sep 17 00:00:00 2001 From: zhai-code Date: Fri, 15 Sep 2023 16:47:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[att\debug\accuracy=5Ftools\api=5Faccuracy?= =?UTF-8?q?=5Fchecker]=E8=B5=84=E6=96=99=E8=A1=A5=E5=85=85=E9=9D=9Edataloa?= =?UTF-8?q?der=E5=8A=A0=E8=BD=BD=E6=95=B0=E6=8D=AE=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=B7=BB=E5=8A=A0=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cluster_kernels_analysis/README.md | 78 ++++++++++--------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/profiler/cluster_analyse/cluster_kernels_analysis/README.md b/profiler/cluster_analyse/cluster_kernels_analysis/README.md index 15b051d5c1..46bdf67fa2 100644 --- a/profiler/cluster_analyse/cluster_kernels_analysis/README.md +++ b/profiler/cluster_analyse/cluster_kernels_analysis/README.md @@ -6,56 +6,60 @@ cluster_op_summary_analysis.py脚本基于多卡性能数据的op_summary信息 ### cluster_op_time_ analysis.csv 将算子以op_name、input_shape、input_size、output_shape进行分类,统计每一类算子,在不同节点(node)的不同卡(device)上,执行时间的最大、最小、方差、平均时间以及范围。 ### xxx_info.html -主要是各个特性(time\ratio)的html文件,以html方式展示top_n算子的箱线图 -xxx表示AI Core和AI Vector Core算子性能指标中的耗时(time)和占比(ratio)字段。 +主要是各个特性(time和ratio)的html文件,以html方式展示top_n算子的箱线图。 + +time和ratio表示AI Core和AI Vector Core算子性能指标中的耗时和占比字段。 + 以html文件展示TopN算子执行耗时和占比的箱线图。 + 有TopN个算子就会有TopN个坐标系,每个坐标系表示一个算子的特性,以total_time的平均值从左向右依次向下排序。 -横坐标:node_device表示第几个node的第几张卡,从小到大排序。 -纵坐标:时间。 -坐标名:在坐标下方,以op_name-input_shape拼接展示。 +- 横坐标:node_device表示第几个node的第几张卡,从小到大排序。 +- 纵坐标:时间。 +- 坐标名:在坐标下方,以op_name-input_shape拼接展示。 + # 操作指导 -- 1、准备性能数据 -拷贝所有node上的性能数据到一个环境里,性能数据必须包含在node*目录下,例如当前集群场景为2机16卡,那么就是两个node分别有八个device,拷贝性能数据目录如下: +1. 准备性能数据 + 拷贝所有node上的性能数据到一个环境里,性能数据必须包含在node*目录下,例如当前集群场景为2机16卡,那么就是两个node分别有八个device,拷贝性能数据目录如下: - ├── node0 // 可以是node0或nodeo_xxx,表示某个节点 - - │ ├── PROF_XXXXX // 单个device的性能数据,须完成msprof性能数据解析 - + ```bash + ├── node0 # 可以是node0或nodeo_xxx,表示某个节点 + │ ├── PROF_XXXXX # 单个device的性能数据,须完成msprof性能数据解析 │ ├── SUMMARY - │ ├── op_summary_XX.csv - - | ...... // 一共八张卡的性能数据 - - ├── node1 // 可以是node1 或者node1_xxx表示某个节点 - - │ ├── PROF_XXXXX // 单个device的profiling数据 - + | ...... # 一共八张卡的性能数据 + ├── node1 # 可以是node1 或者node1_xxx表示某个节点 + │ ├── PROF_XXXXX # 单个device的profiling数据 │ ├── SUMMARY - - │ ├── op_summary_XX.csv // 用来做解析的op_summary表格 - + │ ├── op_summary_XX.csv # 用来做解析的op_summary表格 | ...... + ``` + +2. 拷贝脚本准备环境 -- 2、拷贝脚本准备环境 -将cluster_prof_Info_analysis.py脚本拷贝到一个文件夹里,并安装对应的Python库: + 将cluster_prof_Info_analysis.py脚本拷贝到一个文件夹里,并安装对应的Python库。 -> pip install pandas + ```bash + pip install pandas + pip install ploty + ``` -> pip install ploty +3. 运行脚本 -- 3、运行脚本 -> python3 cluster_prof_Info_analysis.py –d {data_path} -t {type} -n {top_n} --d 集群场景性能数据目录,输入node的上一级目录。 --t 获取分析信息结果文件类型,可取值:html、csv、all,默认html。 --n html分析独有,表示需要展示的是平均时间top_n的算子,默认10,配置超过30时需要一定时间。 + ```bash + python3 cluster_prof_Info_analysis.py –d data_path -t type -n top_n + ``` + + - -d:集群场景性能数据目录,输入node的上一级目录。 + - -t:获取分析信息结果文件类型,可取值:html、csv、all,默认html。 + - -n:html分析独有,表示需要展示的是平均时间top_n的算子,默认10,配置超过30时需要一定时间。 异常情况处理: --n参数必须大于0,如果输入<=0, 默认只导出一个算子的数据。 -配置-n参数值大于算子总数时,按等于算子数处理。 -部分没有op_summary的,不显示也不报错。 -目录下不存在op_summary时,执行报错无法找到数据文件。 -op_summary列数据错误或读不到数据时,提示具体出错文件。 --t参数配置错误时,提示输入错误,并提示正确的配置。 + +- -n参数必须大于0,如果输入<=0, 默认只导出一个算子的数据。 +- 配置-n参数值大于算子总数时,按等于算子数处理。 +- 部分没有op_summary的,不显示也不报错。 +- 目录下不存在op_summary时,执行报错无法找到数据文件。 +- op_summary列数据错误或读不到数据时,提示具体出错文件。 +- -t参数配置错误时,提示输入错误,并提示正确的配置。 -- Gitee From f653b2f148b93782f2609fab0353b8d610c860c9 Mon Sep 17 00:00:00 2001 From: zhai-code Date: Fri, 15 Sep 2023 16:58:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[att\debug\accuracy=5Ftools\api=5Faccuracy?= =?UTF-8?q?=5Fchecker]=E8=B5=84=E6=96=99=E8=A1=A5=E5=85=85=E9=9D=9Edataloa?= =?UTF-8?q?der=E5=8A=A0=E8=BD=BD=E6=95=B0=E6=8D=AE=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=B7=BB=E5=8A=A0=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api_accuracy_checker/README.md | 23 +++--- .../cluster_kernels_analysis/README.md | 78 +++++++++---------- 2 files changed, 47 insertions(+), 54 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/README.md b/debug/accuracy_tools/api_accuracy_checker/README.md index b52a6e1e15..9520b74b75 100644 --- a/debug/accuracy_tools/api_accuracy_checker/README.md +++ b/debug/accuracy_tools/api_accuracy_checker/README.md @@ -29,10 +29,19 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 2. 在训练脚本(如main.py)中加入以下代码导入工具dump模块,启动训练即可自动抓取网络所有API信息 - ```bash + ```python import api_accuracy_checker.dump ``` + 若训练脚本中的代码不是通过dataloader来加载数据或在部分流水并行、张量并行场景下,工具的开关无法在每张卡上自动打开,导致多卡训练dump结果只有一组json,那么需要在训练代码中添加打开工具开关的调用: + + ```Python + import api_accuracy_checker.dump as DP + DP.dump.set_dump_switch("ON") + ``` + + 上述代码要添加在迭代前向的代码段中,或者说是遍历数据集循环的代码段中。如对于GPT-3可以添加在pretrain_gpt.py 的forward_step函数中。之后工具会适配这个场景开关的自动打开。 + 工具默认抓取训练的**第二个迭代**并且在第二个迭代后会报错退出训练进程,可通过target_iter参数配置。报错信息如下,这个报错仅用于停止训练,属于正常现象: ```bash @@ -86,18 +95,6 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 ``` 数据默认会存盘到'./ut_error_data'路径下(相对于启动run_ut的路径),有需要的话,用户可以通过msCheckerConfig.update_config来配置保存路径,参数为error_data_path -## FAQ - -多卡训练dump结果只有一组json,是否为正常现象? -答:正常来说,多卡训练应该能dump下来与卡数相当的数组json文件,每组都包含forward backward和stack信息。目前在部分流水并行、张量并行场景下,工具的开关无法在每张卡上自动打开,用户需要在训练代码中添加打开工具开关的调用: - - ```Python -import api_accuracy_checker.dump as DP -DP.dump.set_dump_switch("ON") - ``` - - 上述代码要添加在迭代前向的代码段中,或者说是遍历数据集循环的代码段中。如对于GPT-3可以添加在pretrain_gpt.py 的forward_step函数中。之后工具会适配这个场景开关的自动打开。 - # 溢出API解析工具 针对训练过程中的溢出检测场景,对于输入正常但输出存在溢出的API,会在训练执行目录下将溢出的API信息按照前向和反向分类,dump并保存为`forward_info_{pid}.json`和`backward_info_{pid}.json`,前向过程溢出的API可通过该工具对`forward_info_{pid}.json`进行解析,输出溢出API为正常溢出还是非正常溢出,从而帮助用户快速判断。 diff --git a/profiler/cluster_analyse/cluster_kernels_analysis/README.md b/profiler/cluster_analyse/cluster_kernels_analysis/README.md index 46bdf67fa2..15b051d5c1 100644 --- a/profiler/cluster_analyse/cluster_kernels_analysis/README.md +++ b/profiler/cluster_analyse/cluster_kernels_analysis/README.md @@ -6,60 +6,56 @@ cluster_op_summary_analysis.py脚本基于多卡性能数据的op_summary信息 ### cluster_op_time_ analysis.csv 将算子以op_name、input_shape、input_size、output_shape进行分类,统计每一类算子,在不同节点(node)的不同卡(device)上,执行时间的最大、最小、方差、平均时间以及范围。 ### xxx_info.html -主要是各个特性(time和ratio)的html文件,以html方式展示top_n算子的箱线图。 - -time和ratio表示AI Core和AI Vector Core算子性能指标中的耗时和占比字段。 - +主要是各个特性(time\ratio)的html文件,以html方式展示top_n算子的箱线图 +xxx表示AI Core和AI Vector Core算子性能指标中的耗时(time)和占比(ratio)字段。 以html文件展示TopN算子执行耗时和占比的箱线图。 - 有TopN个算子就会有TopN个坐标系,每个坐标系表示一个算子的特性,以total_time的平均值从左向右依次向下排序。 -- 横坐标:node_device表示第几个node的第几张卡,从小到大排序。 -- 纵坐标:时间。 -- 坐标名:在坐标下方,以op_name-input_shape拼接展示。 - +横坐标:node_device表示第几个node的第几张卡,从小到大排序。 +纵坐标:时间。 +坐标名:在坐标下方,以op_name-input_shape拼接展示。 # 操作指导 -1. 准备性能数据 - 拷贝所有node上的性能数据到一个环境里,性能数据必须包含在node*目录下,例如当前集群场景为2机16卡,那么就是两个node分别有八个device,拷贝性能数据目录如下: +- 1、准备性能数据 +拷贝所有node上的性能数据到一个环境里,性能数据必须包含在node*目录下,例如当前集群场景为2机16卡,那么就是两个node分别有八个device,拷贝性能数据目录如下: - ```bash - ├── node0 # 可以是node0或nodeo_xxx,表示某个节点 - │ ├── PROF_XXXXX # 单个device的性能数据,须完成msprof性能数据解析 + ├── node0 // 可以是node0或nodeo_xxx,表示某个节点 + + │ ├── PROF_XXXXX // 单个device的性能数据,须完成msprof性能数据解析 + │ ├── SUMMARY + │ ├── op_summary_XX.csv - | ...... # 一共八张卡的性能数据 - ├── node1 # 可以是node1 或者node1_xxx表示某个节点 - │ ├── PROF_XXXXX # 单个device的profiling数据 - │ ├── SUMMARY - │ ├── op_summary_XX.csv # 用来做解析的op_summary表格 - | ...... - ``` -2. 拷贝脚本准备环境 + | ...... // 一共八张卡的性能数据 - 将cluster_prof_Info_analysis.py脚本拷贝到一个文件夹里,并安装对应的Python库。 + ├── node1 // 可以是node1 或者node1_xxx表示某个节点 + + │ ├── PROF_XXXXX // 单个device的profiling数据 + + │ ├── SUMMARY + + │ ├── op_summary_XX.csv // 用来做解析的op_summary表格 - ```bash - pip install pandas - pip install ploty - ``` + | ...... -3. 运行脚本 +- 2、拷贝脚本准备环境 +将cluster_prof_Info_analysis.py脚本拷贝到一个文件夹里,并安装对应的Python库: - ```bash - python3 cluster_prof_Info_analysis.py –d data_path -t type -n top_n - ``` +> pip install pandas - - -d:集群场景性能数据目录,输入node的上一级目录。 - - -t:获取分析信息结果文件类型,可取值:html、csv、all,默认html。 - - -n:html分析独有,表示需要展示的是平均时间top_n的算子,默认10,配置超过30时需要一定时间。 +> pip install ploty -异常情况处理: +- 3、运行脚本 +> python3 cluster_prof_Info_analysis.py –d {data_path} -t {type} -n {top_n} +-d 集群场景性能数据目录,输入node的上一级目录。 +-t 获取分析信息结果文件类型,可取值:html、csv、all,默认html。 +-n html分析独有,表示需要展示的是平均时间top_n的算子,默认10,配置超过30时需要一定时间。 -- -n参数必须大于0,如果输入<=0, 默认只导出一个算子的数据。 -- 配置-n参数值大于算子总数时,按等于算子数处理。 -- 部分没有op_summary的,不显示也不报错。 -- 目录下不存在op_summary时,执行报错无法找到数据文件。 -- op_summary列数据错误或读不到数据时,提示具体出错文件。 -- -t参数配置错误时,提示输入错误,并提示正确的配置。 +异常情况处理: +-n参数必须大于0,如果输入<=0, 默认只导出一个算子的数据。 +配置-n参数值大于算子总数时,按等于算子数处理。 +部分没有op_summary的,不显示也不报错。 +目录下不存在op_summary时,执行报错无法找到数据文件。 +op_summary列数据错误或读不到数据时,提示具体出错文件。 +-t参数配置错误时,提示输入错误,并提示正确的配置。 -- Gitee