当在MindStudio Insight工具中导入大集群场景数据,且大集群场景规模达到百卡、千卡级别时,如果直接导入profiling全部原始数据,解析耗时较长,所以需要采用mstt工具集中的cluster_analyse工具预处理下profiling的原始数据,将得到的集群相关通信数据导入MindStudio Insight工具,进行计算耗时及通信分析,定位慢卡问题,且针对慢卡进行Timeline视图分析,继而进行针对性调优。
前提条件
1. 已安装MindStudio Insight工具。
2. 已安装Python3,并完成执行环境的配置。
3.已获取采集到的原始集群数据,且单卡采集的数据中必须包含表1中的文件。
表1 单卡采集数据文件
4. 已获取mstt工具集中的cluster_analyse(集群分析)工具,可前往gitee开源站下载。cluster_analyse(集群分析)工具主要用于解析集群节点通信信息,生成相关通信数据。
操作步骤
1. 将所有以“ascend_pt”结尾的profiling原始数据汇总至同一个目录,如图1所示。
图1 数据汇总

2. 在集群分析工具目录下,执行以下命令,解析数据,如图2所示。
3. 将“cluster_analysis_output”目录导入MindStudio Insight工具进行分析。
定位慢卡问题
1. 在概览(Summary)界面,输入模型脚本对应的并行策略值,如图1所示。其中PP为流水线并行(Pipeline Parallelism),TP为张量并行(Tensor Parallelism),DP为数据并行(Data Parallelism)。
图1 输入并行策略值

2. 在“计算/通信概览”区域,分别选择“迭代ID”和“通信域”,查看柱状图,观察总计算时间和未被覆盖的通信时间时长,如图2所示。
慢卡通常表现为总计算耗时长,通信时间耗时短。
图2 查看计算与通信耗时

3. 在通信(Communication)界面,选择“通信耗时分析”,并选择需要查看的“迭代ID”和“通信域”,在“通信时长数据分析”区域,查看所选通信域的各卡的“总时间(ms)”耗时情况。
4. 单击“总时间(ms)”后的
,由大到小进行降序排序,如果发现时间差距很大的两张卡,那么耗时最短的卡即为慢卡,如图3所示。
图3 查看慢卡

5. 单击慢卡“通信算子详情”列的“查看更多”,可查看每个通信算子耗时。
6. 单击算子“总时间(ms)”后的
,进行降序排序,可以看到耗时最长的算子,如图4所示,复制该算子名称。
图4 查询算子

7. 在通信(Communication)界面,参数配置区域的“算子名称”选项中粘贴已复制的算子名称,在下拉框选择该算子。
8. 分别在“HCCL”和“通信时长”区域图表中,可看到该算子的耗时不对等,如图5所示,可判断是由慢卡引起的。获取图表中最快卡和最慢卡的原始数据目录,导入MindStudio Insight工具,在时间线(Timeline)界面进行具体分析。
图5 定位慢卡

分析数据
1. 将定位慢卡问题中8定位到的最快卡和最慢卡的原始数据汇总至同一目录,并导入MindStudio Insight工具。
2. 打开通信(Communication)界面,选择“通信耗时分析”,在“算子名称”选项中输入定位到的慢卡算子名称,选择该算子。
3. 在“HCCL”区域,分别找到该算子耗时最短和耗时最长的卡,在对应柱状图上右键单击“跳转至时间线页面”,跳转至时间线(Timeline)界面对应卡的算子上,如图6所示。
图6 跳转时间线页面

4. 单击
,分别将所属卡的泳道置顶,对该算子进行比较分析,如图7所示。
图7 分析算子信息

5. 并对所属卡其它进程的算子信息进行比较分析,定位慢卡原因,从而找到解决办法。
当在MindStudio Insight工具中导入大集群场景数据,且大集群场景规模达到百卡、千卡级别时,如果直接导入profiling全部原始数据,解析耗时较长,所以需要采用mstt工具集中的cluster_analyse工具预处理下profiling的原始数据,将得到的集群相关通信数据导入MindStudio Insight工具,进行计算耗时及通信分析,定位慢卡问题,且针对慢卡进行Timeline视图分析,继而进行针对性调优。
前提条件
1. 已安装MindStudio Insight工具。
2. 已安装Python3,并完成执行环境的配置。
3.已获取采集到的原始集群数据,且单卡采集的数据中必须包含表1中的文件。
表1 单卡采集数据文件
文件名
说明
profiler_info_x.json
Profiler相关的元数据。
communication.json
多卡通信或集群等存在通信的场景性能分析提供可视化数据基础。
communication_matrix.json
通信小算子基本信息文件。
kernel_details.csv
NPU上执行的所有算子的信息。
step_trace_time.csv
迭代中计算和通信的时间统计。
trace_view.json
包括应用层数据、CANN层数据和底层NPU数据。
4. 已获取mstt工具集中的cluster_analyse(集群分析)工具,可前往gitee开源站下载。cluster_analyse(集群分析)工具主要用于解析集群节点通信信息,生成相关通信数据。
操作步骤
1. 将所有以“ascend_pt”结尾的profiling原始数据汇总至同一个目录,如图1所示。
图1 数据汇总

2. 在集群分析工具目录下,执行以下命令,解析数据,如图2所示。
python3 cluster_analysis.py -d {原始数据存放路径}3. 将“cluster_analysis_output”目录导入MindStudio Insight工具进行分析。
定位慢卡问题
1. 在概览(Summary)界面,输入模型脚本对应的并行策略值,如图1所示。其中PP为流水线并行(Pipeline Parallelism),TP为张量并行(Tensor Parallelism),DP为数据并行(Data Parallelism)。
图1 输入并行策略值

2. 在“计算/通信概览”区域,分别选择“迭代ID”和“通信域”,查看柱状图,观察总计算时间和未被覆盖的通信时间时长,如图2所示。
慢卡通常表现为总计算耗时长,通信时间耗时短。
图2 查看计算与通信耗时

3. 在通信(Communication)界面,选择“通信耗时分析”,并选择需要查看的“迭代ID”和“通信域”,在“通信时长数据分析”区域,查看所选通信域的各卡的“总时间(ms)”耗时情况。
4. 单击“总时间(ms)”后的
,由大到小进行降序排序,如果发现时间差距很大的两张卡,那么耗时最短的卡即为慢卡,如图3所示。
图3 查看慢卡

5. 单击慢卡“通信算子详情”列的“查看更多”,可查看每个通信算子耗时。
6. 单击算子“总时间(ms)”后的
,进行降序排序,可以看到耗时最长的算子,如图4所示,复制该算子名称。
图4 查询算子

7. 在通信(Communication)界面,参数配置区域的“算子名称”选项中粘贴已复制的算子名称,在下拉框选择该算子。
8. 分别在“HCCL”和“通信时长”区域图表中,可看到该算子的耗时不对等,如图5所示,可判断是由慢卡引起的。获取图表中最快卡和最慢卡的原始数据目录,导入MindStudio Insight工具,在时间线(Timeline)界面进行具体分析。
图5 定位慢卡

分析数据
1. 将定位慢卡问题中8定位到的最快卡和最慢卡的原始数据汇总至同一目录,并导入MindStudio Insight工具。
2. 打开通信(Communication)界面,选择“通信耗时分析”,在“算子名称”选项中输入定位到的慢卡算子名称,选择该算子。
3. 在“HCCL”区域,分别找到该算子耗时最短和耗时最长的卡,在对应柱状图上右键单击“跳转至时间线页面”,跳转至时间线(Timeline)界面对应卡的算子上,如图6所示。
图6 跳转时间线页面

4. 单击
,分别将所属卡的泳道置顶,对该算子进行比较分析,如图7所示。
图7 分析算子信息

5. 并对所属卡其它进程的算子信息进行比较分析,定位慢卡原因,从而找到解决办法。