CANN msProf性能调优实战:3步快速定位软硬件瓶颈的完整指南
【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs
CANN msProf 性能调优工具是昇腾 AI 处理器官方的一站式 Profiling 采集工具,可自动采集、解析并导出 AI 任务各阶段的关键性能指标,帮助新手和开发者快速定位软硬件性能瓶颈,是提升模型推理与训练效率的必备利器。
📌 一图看懂 msProf:CANN 性能调优的通用选择
msProf 是 CANN 官方推荐的通用场景性能调优命令行工具,一次采集即可覆盖算子耗时、API 耗时、任务调度、迭代轨迹等完整数据,并自动完成解析与导出。不同采集工具的适用场景对照如下:
| 采集工具 | 适用场景 | 特点 |
|---|---|---|
| msProf | 通用场景 | 命令行工具,提供完整的性能数据采集能力(数据类型最全) |
| msPTI | 通用场景 | 接口式工具,可集成到各种框架的推理和训练场景 |
| msServiceProfiler | MindIE Service 推理服务化场景 | 采集关键过程时间点,支持性能问题快速定界 |
| 框架 Profiler(PyTorch / MindSpore / TensorFlow) | 对应框架场景 | 采集框架层数据,需在 AI 框架编程时调用 Profiling 接口 |
msProf 的能力边界:不支持采集 Python 调用栈、PyTorch 或 MindSpore 框架层数据,这部分需使用对应框架的 Profiling 接口。各工具选型详情可查阅 performance tuning tool overview。
🚀 一键采集 CANN 性能数据:完整操作步骤
msProf 支持"采集、解析、导出"一键完成,无需手动拼接配置。只需登录装有 CANN Toolkit 软件包的环境,执行一条命令:
msprof --output=/home/HwHiAiUser/profiling_output /home/HwHiAiUser/HIAI_PROJECTS/MyAppname/out/main参数说明:
| 参数 | 描述 | 可选/必选 |
|---|---|---|
| --output | 收集到的 Profiling 数据的存放路径,默认为 AI 任务文件所在目录 | 可选 |
⚠️注意:
--output路径中不能包含特殊字符:\n、\f、\r、\b、\t、\v、\u0007F。
命令执行完成后,会在--output指定目录下自动生成PROF_*目录,包含原始数据与自动解析后的性能数据:
├── device_{id} // 保存原始数据,用户无需关注 │ └── data └── mindstudio_profiler_output ├── msprof_{timestamp}.json ├── step_trace_{timestamp}.json ├── xx_*.csv ... └── README.txt你只需要关注mindstudio_profiler_output目录,里面就是解析后的全部性能数据。
📂 读懂 9 个性能数据文件:每个文件能帮你分析什么?
默认配置下,msProf 会自动采集以下性能数据文件("_"后为{timestamp}时间戳):
| 文件名 | 说明 |
|---|---|
| msprof_*.json | timeline 数据总表 |
| step_trace_*.json | 迭代轨迹数据,每轮迭代的耗时(单算子场景下无此文件) |
| op_summary_*.csv | AI Core 和 AI CPU 算子数据 |
| op_statistic_*.csv | AI Core 和 AI CPU 算子调用次数及耗时统计 |
| step_trace_*.csv | 迭代轨迹数据(单算子场景下无此文件) |
| task_time_*.csv | Task Scheduler 任务调度信息 |
| fusion_op_*.csv | 模型中算子融合前后信息(单算子场景下无此文件) |
| api_statistic_*.csv | CANN 层 API 执行耗时信息 |
| prof_rule_0_*.json | 调优建议 |
🔍 定位性能瓶颈实战:3 个高价值分析技巧
数据文件众多,无需逐个死磕。以下 3 个文件覆盖了绝大多数性能瓶颈定位场景:
技巧 1:用时间线总表(msprof_*.json)看清全貌
在 Chrome 浏览器地址栏输入chrome://tracing,将 json 文件拖入空白处即可打开(快捷键:w 放大、s 缩小、a 左移、d 右移)。时间线数据分为 3 个关注区域:
- 区域 1:CANN 层数据—— 包含 Runtime 等组件以及 Node(算子)的耗时数据;
- 区域 2:底层 NPU 数据—— 包含 Ascend Hardware 下各个 Stream 任务流的耗时数据和迭代轨迹数据;
- 区域 3:详情面板—— 单击 timeline 色块即可查看各算子、接口的详细信息。
分析思路:先从时间线找出耗时较长的 API、算子、任务流,沿箭头追踪下发关系,定位底层具体耗时的任务,再结合 CSV 文件做量化确认。
技巧 2:用算子统计(op_statistic_*.csv)找出耗时大户
该文件统计各类算子的调用总次数与总耗时。按Total Time字段排序,即可快速发现哪类算子总耗时最长,从而判断该类算子是否有优化空间(如融合、替换、降精度)。
技巧 3:用算子明细(op_summary_*.csv)锁定单个高耗时算子
op_summary_*.csv记录每个算子的详细信息与耗时。两种用法:
- 按Task Duration字段排序 → 直接找出耗时最长的算子;
- 按Task Type字段排序 → 区分 AI Core 与 AI CPU 两类核,查看不同核上的高耗时算子。
💡 进阶:善用 prof_rule_*.json 自动调优建议
prof_rule_0_*.json文件是 msProf 基于采集数据自动生成的调优建议,例如识别到算子间存在空闲、可融合的算子组合等。新手可直接按建议逐条验证,资深工程师可将其作为排查线索的起点,显著缩短性能调优周期。
⚠️ 常见疑问与使用边界
- 采集对业务有影响吗?Profiling 会引入少量开销,建议在独立调优环境执行,生产环境谨慎开启;
- 需要 Python 调用栈怎么办?msProf 不支持采集 Python 调用栈与框架层数据,可改用对应框架的 Profiling 接口(如 PyTorch 场景使用 Ascend PyTorch Profiler);
- 多卡训练 / 服务化推理场景?可配合 msPTI(通用框架场景)、msServiceProfiler(推理服务化场景)使用,详见 性能调优工具菜单。
📚 延伸阅读
- 采集并解析性能数据(完整教程)
- 性能调优工具简介
- 高性能编程建议
✅ 总结
CANN 性能调优的核心闭环很简单:msProf 一键采集 → 自动解析导出 → 时间线找线索 + CSV 定量分析 → 按建议优化。建议从msprof_*.json时间线切入建立全局认知,再用op_statistic/op_summary两张表锁定耗时算子,配合prof_rule_*.json自动建议确定优化方向,即可高效定位软硬件性能瓶颈,让昇腾 AI 任务跑得更快。
【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考