Profiling简介

Profiling性能分析工具用于采集和分析运行在昇腾AI处理器上的推理业务(应用或算子)各个运行阶段的关键性能指标,可根据输出的性能数据针对关键性能瓶颈做出优化以实现产品的极致性能。
Profiling性能分析工具针对APP工程运行过程中的硬件和软件以及Host侧性能数据进行采集、分析并汇总展示:

  • 硬件的性能数据包括:AI Core等模块的PMU指标及系统硬件性能指标。
  • 软件的性能数据包括:AscendCL、GE、RTS等模块的性能指标数据。
  • Host侧性能数据包括:CPU、Memory、Disk、Network、pthread和system call模块的性能指标数据。

Profiling还可以采集Host与Device之间、Device间的同步异步内存复制时延,在AscendCL和Runtime接口数据中体现。

Profiling的部分

Profiling

调优步骤

调优主要分为三步

  1. 性能数据采集、解析、分析
  2. 性能问题定位,发现性能瓶颈点
  3. 采取性能优化措施

Profiling流程

  1. 推理

    infer
    infer

  2. 训练

    train
    train

数据采集方式

  1. 推理场景
    • msprof命令行方式
    • acl.json配置文件方式
    • 调用AscendCL API方式
    • 调用pyACL API方式
  2. 训练场景
    • msprof命令行方式
    • Ascend Graph开发方式
    • 环境变量方式
    • 训练脚本方式

注意:同时启用多种采集方式时,有且仅有一种使能方式可以生效。但为了避免不必要的错误,不建议同时使用多种不同的采集方式。

msprof命令行

msprof

acl.json

acl.json

API接口

API
API

Mindspore

Mindspore

环境变量设置和脚本设置

  1. TensorFlow
    env

  2. PyTorch侧
    pytorch

  3. CANN侧
    cann

  4. PyTorch侧和CANN侧
    two

采集epoch耗时

  1. 对比不同epoch
    db
  2. 仅采集需要的epoch
    need

数据说明

step trace timeline

stt

step trace timeline of epoch

stt

HCCL timeline

hccl

组件接口耗时

api

算子统计表

op

算子融合优化

在整网性能调优过程中,通过算子融合的方式,将算子融合后,调度到Aicore上执行,减少数据的搬运,提升整网性能。

例如,对于网络结构中大量的Conv2D+BN+SCALE算子,开启算子融合后融合为Conv2D算子,采集性能数据进行对比。
merge

总结

本文简要介绍了使用Profiling工具分析模型的性能,这里包含MsprofTX、AscendCL、Ge、Runtime、AI CPU和TaskScheduler五个层次,可以通过Profiling查看耗时较长的接口和算子,可以通过算子融合提升整网性能。

Profiling也支持多卡场景下的性能分析进行集群优化。