集群性能数据细粒度拆解

简介

大集群场景涉及多个计算节点,数据量大,单卡维度的性能数据统计与分析无法评估整体集群运行情况。

原有的cluster_step_trace_time.csv交付件没有单独的执行命令,导致用户使用不便,且不能涵盖内存拷贝等指标项,需要增强。

集群性能数据细粒度拆解(cluster_time_summary)提供了集群训练过程中迭代耗时的拆解,包括计算、通信和内存拷贝等各部分的时间消耗,帮助用户找到性能瓶颈。

使用前准备

环境准备

完成msprof-analyze工具安装,具体请参见《msprof-analyze工具安装指南》。

数据准备

msprof-analyze需要传入采集的性能数据文件夹,如何采集性能数据请参见数据准备章节。

集群性能数据细粒度拆解

功能说明

使用msprof-analyze工具的集群性能数据细粒度拆解功能,对采集到的集群数据进行分析。

命令格式

msprof-analyze -m cluster_time_summary -d <cluster_data> [-o <output_path>]

参数说明

参数 可选/必选 说明
-m 必选 设置为cluster_time_summary,集群性能数据细粒度拆解能力。
-d 必选 集群性能数据文件夹路径。
-o 可选 指定输出文件路径,默认为-d参数指定的路径。

更多参数详细介绍请参见msprof-analyze的参数说明

使用示例

执行集群性能数据细粒度拆解。

msprof-analyze -m cluster_time_summary -d ./xxx/cluster_data -o ./xxx/output_path

输出说明

  • 存储位置:导出类型设置为db时,在输出路径下生成cluster_analysis_output/cluster_analysis.db;导出类型设置为text时,在输出路径下生成cluster_analysis_output/ClusterTimeSummary/cluster_time_summary_{timestamp}.csv。

  • 数据表名:ClusterTimeSummary

    输出结果展示

输出结果文件说明

ClusterTimeSummary表字段如下:

字段名称 类型 说明
rank INTEGER 卡号。
step INTEGER 迭代编号。
stepTime REAL 迭代总耗时。
computation REAL NPU上算子的计算总时间。
communicationNotOverlapComputation REAL 未被计算掩盖的通信耗时。
communicationOverlapComputation REAL 计算和通信重叠的时间。
communication REAL NPU上算子的通信总时间。
free REAL 空闲时间,迭代总时间减去计算、通信、拷贝时间。
communicationWaitStageTime REAL 通信中的总等待耗时。
communicationTransmitStageTime REAL 通信中的总传输耗时。
memory REAL 拷贝耗时。
memoryNotOverlapComputationCommunication REAL 未被计算、通信掩盖的拷贝耗时。

上表中时间相关字段,统一使用微秒(us)。

cluster_time_summary_{timestamp}.csv除了表头格式有所调整,数据和db保持一致。

输出结果分析:

  • 通过分析计算、通信、内存拷贝、空闲时间占比,找到性能瓶颈。
  • 通过比较集群内各卡耗时指标差异,定位性能问题。例如,computing计算耗时波动显著,通常表明存在卡间不同步、计算卡性能不均的情况,而通信传输耗时差异过大时,则需优先排查参数面网络是否存在拥塞或配置异常。
  • 配合使用cluster_time_compare_summary功能,可有效定位集群性能劣化根因。