离线推理性能问题分析

111 阅读2分钟

概述

PTA性能调优参考指导:链接

性能问题背景

模型从GPU设备迁移到昇腾设备上进行推理时,模型的开箱性能差。

推理e2e耗时

infer_e2e_time = 数据加载时间 + 模型前向时间 + 模型后处理时间 + 通信时间 + 调度时间

  • 数据加载时间:模型在加载自身所需要的数据(如图片、视频和文本等)的时间,包括将数据从硬件存储设备读取到CPU(Central Processing Unit)中、CPU中数据的预处理(编解码等操作)、CPU数据放到Device上的时间。对于一些需要切分在若干张卡上的模型,数据加载还包括从数据加载卡广播到其他卡上的时间。
  • 模型前反向时间:深度学习模型Forward所需的时间。
  • 模型后处理时间:包括数据的后处理、数据同步等。
  • 通信时间:单节点时卡之间和多节点时节点之间的通信时间。由于PyTorch的特殊机制,在通信和计算可以并行的情况下,表示未被计算掩盖的通信时间。
  • 调度时间:模型从CPU的指令到调用NPU侧的核(Kernel)所需要的时间。

性能优化目标

  • 计算:算子性能优化、融合算子、AICPU转AICore等
  • 通信:通信占比是否合理
  • 调度:free占比尽可能小、计算掩盖调度时间等

性能分析

性能调优流程:性能数据采集-》算子层优化-》调度策略调整-》通信机制-》模型编译下发等

性能数据采集

python -m ais_bench --model ./resnet50_bs1.om --output `pwd`/performance_test --profiler 1

  • 方式2:使用msprof工具采集
msprof --output=./msprof_out --application="python3 om_infer.py"

性能数据文件分析

各性能文件解析说明:链接

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

参考指导:链接

pip3 install msprof-analyze

msprof-analyze advisor all -d ./msprof_out/

使用MindStudio Insight可视化工具分析性能

参考指导:链接

优化方案

参考文档:性能优化