文档
注册

端到端性能分析流程

性能调优的目的是使用性能分析工具分析AI任务运行时采集的性能数据,判断AI任务运行时的软硬件性能瓶颈,基本的分析思路如图1所示。

性能分析工具(Profiling)的具体使用指导请参见CANN 性能分析工具指南PyTorch训练/在线推理场景性能分析章节。

图1 性能分析流程

基础的性能分析主要围绕两部分展开:

  • Timeline:基于TensorBoard可视化或者基于Chrome插件打开(在Chrome浏览器中输入chrome://tracing,然后将文件拖入空白处)。
  • Summary:主要为*.csv文件,可以获取到详细的算子执行耗时信息。

以ChatGLM模型为例,先基于Profiling工具得到Timeline流水文件(msprof*.json)和对应算子耗时统计信息文件(op_statistic_*.csv/op_summary_*.csv)。性能分析基本流程如下:

  1. 分析前后处理时间。

    大模型推理端到端的时间主要包括前后处理和模型推理时间。大模型的核心推理部分为Transformer结构,前后处理通常是一系列简单小算子的计算,如输入Mask生成,后处理Sample/Beam_Search等。通常前后处理小算子在torch/torch_npu上执行,对于小算子数目较多的情况下,会存在调度时间过长的问题,如图2 模型处理以及推理时间所示,需要将前后处理操作合并到加速库Model层来减少调用时间。

    图2 模型处理以及推理时间
  2. 分析模型推理流水,主要围绕以下两点展开。
    • 确认整网是否存在算子调度瓶颈,常见问题有:Device侧算子空间过大/调度时间过长等,具体分析方法见调度性能分析及优化章节。
    • 确认多卡/多芯片之间调度流水同步,常见问题有:多线程间CPU耗时不一致,多芯片间算子/调度时间不一致等,具体分析方案见并行性能分析及优化章节。
  3. 分析算子执行耗时。
    基于op_statistic文件判断瓶颈算子类别(如MatMul算子等),如图3 op_statistic所示。基于op_summary文件判断具体瓶颈算子详细信息,如图4 op_summary所示。例如MatMul算子在大模型场景下受限于带宽,则mte2_ratio需要大于90%,否则需要优化具体Shape的算子性能,具体可参考单算子性能分析及优化章节。

    op_statistic样例如下:

    图3 op_statistic

    op_summary样例如下:

    图4 op_summary

    Task Duration字段为算子耗时信息,可以按照Task Duration排序,找出高耗时算子,也可以按照Task Type排序,查看不同核(AI Core和AI CPU)上运行的高耗时算子。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词