msprof命令行工具是通过msprof.py封装的,支持性能数据的通用解析。
工具使用流程
- 自动解析:一般情况下,在执行msprof命令行采集性能数据时,默认即解析并导出性能数据文件。
- 离线解析:
环境准备
安装配套版本的CANN Toolkit开发套件包和ops算子包并配置CANN环境变量,具体请参见。
Ascend EP场景下msprof工具路径为:
[object Object],${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。Ascend RC场景下msprof工具路径为:/var。
设置Python相关环境变量。
存在多个Python3版本时,以指定python3.7.5为例,请根据实际修改。
[object Object]
[object Object]
约束
使用该工具前,请了解相关使用约束:
权限约束
- 用户须自行保证使用最小权限原则(如禁止other用户拥有写权限,常见如禁止666、777)。
- 使用性能分析工具前请确保执行用户的umask值大于等于0027,否则会导致获取的性能数据所在目录和文件权限过大。
- 出于安全性及权限最小化角度考虑,本工具不应使用root等高权限账户,建议使用普通用户权限执行。
- 本工具为开发调测工具,不建议在生产环境使用。
- 请确保性能数据保存在不含软链接的当前用户目录下,否则可能引起安全问题。
数据落盘约束
解析性能数据过程中如果配置的落盘路径磁盘或用户目录空间已满,会出现解析失败或文件无法落盘的情况,须自行清理磁盘或用户目录空间。
兼容性和场景约束
工具要求Python 3.7.5及以上版本。
其他约束
本工具中需要指定路径的参数,要求路径中不能包含如下特殊字符。
[object Object]
产品支持情况
功能说明
本功能用于解析并导出性能数据。
注意事项
- 请先完成。
- 请先完成性能数据采集。
- Atlas 200I/500 A2 推理产品的Ascend RC场景不支持在设备上直接解析,需要将采集到的PROF_XXX目录拷贝到安装了Toolkit软件包的环境下进行解析。
命令格式
参数说明
表 1 参数说明
[object Object]
使用示例
指定性能数据文件目录的为/home/profiler_data/PROF_XXX目录,执行导出命令。
使用示例(--reports参数)[object Object][object Object]
指定的性能数据文件目录为/home/profiler_data/PROF_XXX目录,传入用户自定义的reports_sample_config.json配置文件,执行导出命令。
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。
[object Object]
reports_sample_config.json文件默认保存在[object Object]目录下,内容如下:
支持在任意有读写权限的目录下自行创建reports_sample_config.json文件。
以上为控制相应性能数据的开关,可配置开启(true)或关闭(false或删除字段)。控制的性能数据包括msprof_*.json文件的timeline数据层级(包括CANN,Ascend Hardware、AI Core Freq、片上内存、Communication、Overlap Analysis、NPU_MEM层级等)。
[object Object]
输出说明
执行完msprof --export命令后,会在PROF_XXX目录下生成mindstudio_profiler_output目录。
生成的性能数据目录结构如下所示。
单采集进程
[object Object]多采集进程
[object Object]
[object Object]
产品支持情况[object Object][object Object]
功能说明[object Object][object Object]
本功能用于查询性能数据文件信息,确认导出时指定迭代(Iteration ID)/模型(Model ID)。
性能数据解析时自动打印展示性能数据文件信息,故本功能在数据解析中为可选操作,主要用于已解析的历史PROF_XXX目录重新查询性能数据文件信息。
注意事项[object Object][object Object]
- 请先完成。
- 请先完成性能数据采集。
- Atlas 200I/500 A2 推理产品的Ascend RC场景不支持在设备上直接解析,需要将采集到的PROF_XXX目录拷贝到安装了Toolkit软件包的环境下进行解析。
命令格式[object Object][object Object]
参数说明[object Object][object Object]
表 1 参数说明
使用示例[object Object][object Object]
指定解析后的性能数据文件目录为/home/profiler_data/PROF_XXX,开启查询性能数据文件信息功能。
输出说明[object Object][object Object]
msprof工具的查询功能获取到的信息如下表所示。
表 2 Profiling数据文件信息
产品支持情况[object Object][object Object]
功能说明[object Object][object Object]
该功能只会进行性能数据解析,不会导出性能数据文件,导出性能数据文件功能请参见。
一般情况下,解析性能数据功能不需要单独使用,主要有如下两种使用场景:
- 对于性能数据文件解析失败的场景(例如:当存在首次解析由于某些原因导致解析失败,残留文件时),可以使用msprof --parse功能重新解析后,再次执行msprof --export。
- 对于需要指定 --model-id和 --iteration-id参数进行msprof --export导出时,可以先执行msprof --parse解析并打印迭代(Iteration ID)/模型(Model ID)后,选择需要的Iteration ID和Model ID进行导出。
注意事项[object Object][object Object]
- 请先完成。
- 请先完成性能数据采集。
- Atlas 200I/500 A2 推理产品的Ascend RC场景不支持在设备上直接解析,需要将采集到的PROF_XXX目录拷贝到安装了Toolkit软件包的环境下进行解析。
命令格式[object Object][object Object]
参数说明[object Object][object Object]
表 1 参数说明
使用示例[object Object][object Object]
解析原始性能数据文件,指定/home/profiler_data/PROF_XXX为原始性能数据文件目录。
输出说明[object Object][object Object]
执行完上述命令,会打印展示性能数据文件信息并在PROF_XXX的device_{id}和host目录下生成sqlite目录,sqlite目录下会有db文件生成。
需要继续导出最终结果的timeline数据或db文件,可执行。
产品支持情况[object Object][object Object]
功能说明[object Object][object Object]
msprof通信性能数据解析功能主要用于统计通信类的分段耗时、拷贝、带宽等信息,以便进行通信类数据分析。通信类数据只有在多卡、多节点或集群场景下存在。
注意事项[object Object][object Object]
请先对PROF_XXX目录执行msprof的解析导出操作,同时关闭数据精简模式,命令示例如下:
[object Object]Atlas 200I/500 A2 推理产品的Ascend RC场景不支持在设备上直接解析,需要将采集到的PROF_XXX目录拷贝到安装了Toolkit软件包的环境下进行解析。
命令格式[object Object][object Object]
msprof命令行方式:
msprof.py脚本方式:
参数说明[object Object][object Object]
表 1 参数说明(msprof命令行方式)
表 2 参数说明(msprof.py脚本方式)
使用示例(msprof命令行方式)[object Object][object Object]
指定/home/profiler_data/PROF_XXX目录为性能数据文件目录,开启解析通信性能数据文件功能。
使用示例(msprof.py脚本方式)[object Object][object Object]
以Toolkit软件包的运行用户登录开发环境。
切换至msprof.py脚本所在目录。
[object Object],${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。设置解析通信类数据,指定/home/profiler_data/PROF_XXX目录为性能数据文件目录,执行解析命令。
[object Object]
输出结果文件说明[object Object][object Object]
- --type=text或--type=db以及--rule=communication
图 1 CommAnalyzerTime[object Object][object Object]
表 3 CommAnalyzerTime
图 2 CommAnalyzerBandwidth[object Object][object Object]
表 4 CommAnalyzerBandwidth
--type=text或--type=db以及--rule=communication_matrix
图 3 CommAnalyzerMatrix[object Object][object Object]
表 5 CommAnalyzerMatrix
--type=text、--rule=communication
图 4 communication.json[object Object][object Object]
--type=text、--rule=communication_matrix
图 5 communication_matrix.json[object Object][object Object]