使用msprof-analyze工具分析性能数据

前提条件

  1. 完成性能数据采集,得到NPU环境的性能数据。
  2. 安装msprof-analyze,命令如下:
    pip3 install msprof-analyze

    提示如下信息则表示安装成功。

    1
    Successfully installed msprof-analyze-{version}
    

执行advisor分析

msprof-analyze的advisor功能是将Ascend PyTorch Profiler采集的性能数据进行分析,并输出性能调优建议。

命令如下:

msprof-analyze advisor all -d $HOME/profiling_data/

分析结果输出相关简略建议到执行终端中,并在命令执行目录下生成mstt_advisor_{timestamp}.html和mstt_advisor_{timestamp}.xlsx文件供用户查看。

advisor工具的分析结果主要提供可能存在性能问题的专家建议,示例如下:

图1 advisor

详细结果介绍请参见《advisor》中的“报告解析”。

执行compare_tools性能比对

compare_tools功能用于对比PyTorch训练工程从GPU迁移至NPU前后的性能差异,或不同版本的NPU性能数据之间的差异。

操作如下:

  1. 将GPU环境下的性能数据拷贝到NPU环境。
  2. 执行性能比对操作。
    msprof-analyze compare -d $HOME/profiling_data/ -bp HOME/gpu/profiling_data/ --output_path=./compare_result/profiler_compare

    分析结果输出到执行终端中,并在--output_path参数指定路径下生成performance_comparison_result_{timestamp}.xlsx文件供用户查看。

    性能比对工具将总体性能拆解为训练耗时和内存占用,其中训练耗时可拆分为算子(包括算子和nn.Module)、通信、调度三个维度,并打印输出总体指标,帮助用户定界劣化的方向。与此同时,工具还会生成performance_comparison_result_{timestamp}.xlsx,展示每个算子在执行耗时、通信耗时、内存占用的优劣,可通过DIFF列大于0筛选出劣化算子。此处不提供示例,详细结果介绍请参见《性能比对工具》中的“比对结果说明”。

执行cluster_analyse集群分析(可选)

由于本案例数据非集群场景数据,cluster_analyse工具无法分析,以下仅提供操作指导。

在集群场景下,通过cluster_analyse来进行集群数据的分析,当前主要对基于通信域的迭代内耗时分析、通信时间分析以及通信矩阵分析为主,从而定位慢卡、慢节点以及慢链路问题。

操作如下:

  1. 将GPU环境下的性能数据拷贝到NPU环境。
  2. 执行性能比对操作。
    msprof-analyze cluster -d $HOME/profiling_data/ -m all

    分析结果在-d参数指定目录下生成cluster_analysis_output文件夹并输出cluster_step_trace_time.csv、cluster_communication_matrix.json、cluster_communication.json文件。

    更多介绍请参见《集群分析工具》。

    集群分析工具的交付件通过MindStudio Insight工具展示,详细操作请参见使用MindStudio Insight工具可视化性能数据