diff --git a/profiler/cluster_analyse/README.md b/profiler/cluster_analyse/README.md index f6dba924b6998b9d4a533653d9b2693922a63227..6352130c03aa215f13ba6fd972e75c5753613374 100644 --- a/profiler/cluster_analyse/README.md +++ b/profiler/cluster_analyse/README.md @@ -5,31 +5,40 @@ 当前集群调优工具主要支持Ascend Pytorch Profiler采集方式下的集群数据。 我们要求至少是L1级别的数据。 -experimental\_config = torch\_npu.profiler.\_ExperimentalConfig( - -​ profiler\_level=torch\_npu.profiler.ProfilerLevel.**Level1** -​ ) -##### 确认数据是否可用 +```python +experimental_config = torch_npu.profiler._ExperimentalConfig( + profiler_level=torch_npu.profiler.ProfilerLevel.**Level1** +) +``` +### 确认数据是否可用 打开采集到的某张卡数据(*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,** -./ASCEND_PROFILER_OUTPUT/communication.json, -./ASCEND_PROFILER_OUTPUT/communication_matrix.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 确认这几个文件生成后,继续下面的集群分析。 # 数据汇聚与集群解析 -将所有卡的数据汇集到一个目录下,使用本目录下的 -python3 cluster_analysis.py -d {cluster profiling data path}, 即可生成cluster_analysis_output文件夹。 +将所有卡的数据汇集到一个目录下,在本目录下运行以下命令即可生 cluster_analysis_output文件夹。 + +```shell +python3 cluster_analysis.py -d {cluster profiling data path} +``` +### 参数说明 + +| 参数名 | 说明 | +| ---------------------- | --------------------------------------- | +| --collection_path (-d) | profiling数据汇集目录,运行分析脚本之后会在该目录下自动创建cluster_analysis_output文件夹,保存分析数据 | # 交付件 -#### 首先需要看 cluster_step_trace_time.csv +### 首先需要看 cluster_step_trace_time.csv A列: Step数,是采集profiling是设置的,一般来说集群profiling采集一个step足够,如果采集多个step,需要先筛选一下。 @@ -53,7 +62,7 @@ J列:Bubble时间,指receive时间的总和。 K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算子外的并且不被掩盖的通信时间。 -tips: +**Tips**: 先筛选B列type为stage, 看stage间是否有问题,再筛选B列type为rank吗,看rank是否有问题,根据以下几点排查。 * 根据Computing的时间差异判断是否有慢卡,或者有负载不均衡的现象。 @@ -64,21 +73,22 @@ tips: * 根据Bubble时间的占比和理论计算公式判断bubble设置是否合理,是否stage间有不均衡现象。 -#### cluster_communication_matrix.json +### cluster_communication_matrix.json 直接打开json(vscode或json查看器), 搜索"Total", 会有多个搜索结果, 一般来说链路带宽信息的结构: -“{src_rank}-{dst_rank}”:{ +``` +{src_rank}-{dst_rank}: { "Transport Type": "LOCAL", "Transit Time(ms)": 0.02462, "Transit Size(MB)": 16.777216, "Bandwidth(GB/s)": 681.4466 } -tips: -可以根据rank互联的带宽以及链路类型,判断是否有慢链路的问题。 +``` +**Tips**: 可以根据rank互联的带宽以及链路类型,判断是否有慢链路的问题。 - "LOCAL"是片内拷贝,速率非常快,不需要考虑。 - “HCCS”或“PCIE”是节点内片间拷贝,速度在18GB左右或以上比较正常。 diff --git a/profiler/cluster_analyse/cluster_analysis.py b/profiler/cluster_analyse/cluster_analysis.py index 67f3256eebb2bfe965ec2838b10c44a317caf555..58f1e4bc6ad779e1ced82ecf84e31b0bf17031aa 100644 --- a/profiler/cluster_analyse/cluster_analysis.py +++ b/profiler/cluster_analyse/cluster_analysis.py @@ -55,6 +55,5 @@ class Interface: if __name__ == "__main__": parser = argparse.ArgumentParser(description="cluster analysis module") parser.add_argument('-d', '--collection_path', type=str, required=True, help="profiling data path") - parser.add_argument('-o', '--output_path', type=str, help="analysis result output path") args = parser.parse_args() Interface(args).run() diff --git a/profiler/compare_tools/README.md b/profiler/compare_tools/README.md index 84dafd90c459140702617eaf7b82ea9be8fd5b44..8ff48187f0cb77e6d4f9cad9cd8d7196155cec99 100644 --- a/profiler/compare_tools/README.md +++ b/profiler/compare_tools/README.md @@ -74,9 +74,9 @@ cd att/profiler/compare_tools # 执行最简比对命令 python performance_compare.py [基准性能数据文件] [比对性能数据文件] --output_path=./result_dir ``` -- 基准性能数据文件:若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件参考**比对性能数据文件**。 -- 比对性能数据文件:可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 -- --output_path:性能比对结果存放的路径,默认保存在当前目录。 +- 基准性能数据文件(必选):若以GPU为基准,指定到以".pt.trace"结尾的json文件;若以NPU不同版本为基准,指定文件参考**比对性能数据文件**。 +- 比对性能数据文件(必选):可以指定以“ascend_pt”结尾的目录、ASCEND_PROFILER_OUTPUT目录或trace_view.json文件,指定trace_view.json无法显示算子的内存占用。 +- --output_path(可选):性能比对结果存放的路径,默认保存在当前目录。 工具将总体性能拆解为训练耗时和内存占用,其中训练耗时可拆分为算子、通信、调度三个维度,以打屏的形式输出总体指标,帮助用户定界劣化的方向。与此同时,工具还会生成performance_comparison_result_*.xlsl,展示每个算子在执行耗时、通信耗时、内存占用的优劣,可通过DIFF列大于0筛选出劣化算子。详细介绍请参见“**比对结果说明**”。