扩展功能
获取设备信息
| 产品 | 是否支持 |
|---|---|
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
性能数据采集完成后可以通过“get_msprof_info.py”脚本工具在PROF_XXX目录下的device_{id} 或host目录文件获取设备信息。“get_msprof_info.py”功能及安装路径如下:
表 1 脚本介绍
| 脚本名 | 功能 | 路径 |
|---|---|---|
| get_msprof_info.py | 获取设备信息。 | ${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/interface,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。 |
python3 get_msprof_info.py -dir <dir> [--help]
表 2 参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| -dir或--collection-dir | 必选 | 收集到的Profiling数据目录。非集群场景须指定为PROF_XXX目录下的host或device_{id}目录;集群场景须指定为PROF_XXX目录的父目录。 |
| -h或--help | 可选 | 显示帮助信息,仅在获取使用方式时使用。 |
使用示例
-
以运行用户登录工具所在环境。
-
切换至“get_msprof_info.py”脚本所在目录。
-
执行“get_msprof_info.py”脚本,命令示例如下。
-
非集群场景
python3 get_msprof_info.py -dir /home/1/PROF_000001_20220129014731273_KEDKPORHMAGPGD/device_0 -
集群场景
python3 get_msprof_info.py -dir /home/1/
-
非集群场景会打印输出结果,如图1所示,各字段含义如表3所示;集群场景在-dir参数指定目录下生成/query/cluster_info.json文件保存集群场景各节点信息,如图2所示,各字段含义如表4所示。
| 字段 | 说明 |
|---|---|
| collection_info | 信息收集。 |
| Collection end time | 信息收集结束时间。 |
| Collection start time | 信息收集开始时间。 |
| Result Size | 信息数据大小,单位MB。 |
| device_info | 设备信息。 |
| AI Core Number | AI Core数量。 |
| AI CPU Number | AI CPU数量。 |
| Control CPU Number | Control CPU数量。 |
| Control CPU Type | Control CPU类型。 |
| Device Id | 设备ID。 |
| TS CPU Number | TS CPU数量。 |
| host_info | Host信息。 |
| cpu_info | Host CPU信息。 |
| CPU ID | Host CPU ID。 |
| Name | Host CPU名称。 |
| Type | Host CPU类型。 |
| Frequency | Host CPU频率。 |
| Logical_CPU_Count | Host逻辑CPU数量。 |
| cpu_num | Host CPU数量。 |
| Host Computer Name | Host设备名。 |
| Host Operating System | Host操作系统。 |
| model_info | 模型信息。 |
| Device Id | 设备ID。 |
| iterations | 迭代统计。 |
| Iteration Number | 迭代次数。 |
| Model Id | 模型ID,根据模型数量显示。 |
| version_info | 版本信息。 |
| analysis_version | 解析版本信息。 |
| collection_version | 采集版本信息。 |
| drv_version | 驱动版本信息。 |
| 字段 | 说明 |
|---|---|
| Rank Id | 集群场景的节点标识ID,集群场景下设备的唯一标识。 |
| Device Id | 设备ID,集群场景下不作为设备唯一标识。 |
| Prof Dir | 集群场景下当前Rank Id对应设备上的PROF_XXX目录。 |
| Device Dir | 集群场景PROF_XXX目录下的device_{id}目录。 |
| Models | 模型信息,包含当前Rank Id对应设备的所有模型ID(Model ID)及该模型下的迭代次数(Iterations)。 |
性能数据文件分片
| 产品 | 是否支持 |
|---|---|
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
性能数据文件分片是对于解析完成的timeline数据文件(.json),系统会识别.json文件在Chrome浏览器(“chrome://tracing”)上打开时间的长短,适当将.json文件切分成合适的数量,以方便用户快速打开。分片操作是在执行性能数据导出时启动。
数据文件分片通过msprof_slice.json配置文件配置分片属性,msprof_slice.json配置文件格式如下。
{
"slice_switch": "off",
"slice_file_size(MB)": 0,
"strategy": 0
}
msprof_slice.json配置文件保存目录为:
${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/msconfig,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。
表 1 参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| slice_switch | 可选 | 分片开关。取值为: • on:开启分片。 • off:关闭分片。 默认值为off。 当前分片限制文件最大为20G,如果开启分片功能且文件大小超过20G时文件导出失败,此外,如果开启了分片开关,但是实际文件大小小于200M时,也不会触发分片。 默认情况下关闭数据分片,开启数据分片须编辑msprof_slice.json文件并配置该参数为on,配置为其他值均表示取默认值。 默认情况下,数据分片根据timeline数据文件在Chrome浏览器上打开时间的长短判断分片,打开时间超出上限时,执行分片操作,分片文件大小由slice_file_size参数控制,分片文件数量由strategy参数控制。 分片后的文件名格式为:模块名_{slice_n}_{timestamp}.json,其中slice_n表示分片的序号。 |
| slice_file_size(MB) | 可选 | 分片文件的容量上限。单位为MB,取值范围为大于等于200的正整数,默认情况下,不限制分片文件的大小。 参数配置大于等于200的正整数时,每个分片文件大小不能超过该值;参数配置其他值时,不限制分片文件的大小,仅根据strategy参数限制分片文件数量。 |
| strategy | 可选 | 分片策略。取值为: • 0:按照切分次数最少且每个文件打开时间在可接受范围内的标准,对文件进行拆分。 • 1:按照每个文件打开时间缩短为快速打开的标准(切分次数更多),对文件进行拆分。 默认值为0。 由于文件打开的时间长短与计算机性能有关,故无法给出准确的打开时间,一般情况下文件打开时间参考值如下: • 文件打开时间超出上限的参考时间为≥30s。 • 文件打开时间在可接受范围内的参考时间为[10,30),单位为s。 • 文件打开时间为快速打开的参考时间为(0,10),单位为s。 具体打开时间请以设备实际情况为准。 |
使用msprof.py脚本解析、查询与导出性能数据
概述
msprof解析工具是通过msprof.py脚本封装的,可直接使用msprof解析工具进行性能数据的解析和导出操作。
工具使用流程
msprof.py脚本需要执行如下步骤才能完成性能数据的最终导出:
-
完成解析性能数据。
-
(可选)查询性能数据文件信息。
对于需要指定迭代(Iteration ID)和模型(Model ID)进行解析的情况可执行此步骤,否则可跳过。
Note
-
Atlas 200I/500 A2 推理产品的Ascend RC场景不支持在设备上直接解析、查询和导出,需要将采集到的PROF_XXX目录拷贝到安装了Toolkit包的环境下进行操作。
-
msprof.py工具使用安装时创建的用户运行。
解析性能数据
| 产品 | 是否支持 |
|---|---|
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
本功能用于解析性能数据。
无
python3 msprof.py import -dir <dir>
表 1 解析命令参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| import | 必选 | 通过import方式解析性能数据。使用import方式解析性能数据时,即使原始性能数据目录中已经生成.db文件,该方式会重新生成.db文件。 |
| --cluster | 集群场景时必选 | 解析集群场景的性能数据并进行汇总。仅配置import参数时支持。 -dir参数需指定PROF_XXX目录的父目录,指定后的解析结果在PROF_XXX目录同级目录下生成sqlite目录。 |
| -dir或--collection-dir | 必选 | 收集到的性能数据目录。须指定为PROF_XXX目录或PROF_XXX目录的父目录,例如:/home/profiler_data/PROF_XXX。 |
| -h或--help | 可选 | 显示帮助信息,仅在获取使用方式时使用。 |
-
登录安装了Toolkit包的环境。
-
切换至msprof.py脚本所在目录。
${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/msprof,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。 -
解析性能数据。
python3 msprof.py import -dir /home/profiler_data/PROF_XXX
执行完上述命令,解析完成后对应的PROF_XXX的device_{id}和host目录下会生成sqlite目录,sqlite目录下会有db文件生成(该db文件为中间结果,无须关注)。
需要继续导出最终结果的timeline数据或db文件,可执行导出性能数据。
查询性能数据文件信息
| 产品 | 是否支持 |
|---|---|
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
本功能用于查询性能数据文件信息,性能数据文件信息中包含迭代(Iteration ID)/模型(Model ID)。
执行查询操作前需要调用import命令解析Profiling数据,否则查询结果无意义。
python3 msprof.py query -dir <dir>
表 1 查询性能数据信息命令参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| -dir或--collection-dir | 必选 | 收集到的性能数据目录。须指定为PROF_XXX目录或PROF_XXX目录的父目录,例如:/home/profiler_data/PROF_XXX |
| --data-type | 可选 | 数据类型。用于MindStudio对接,用户无需配置。取值为: • 0:集群场景,可查询当前数据是否为集群场景采集的数据。 • 1:迭代轨迹数据,每轮迭代的详细数据,包括FP/BP计算时间、迭代更新拖尾和迭代间隙。 • 2:计算量,AI Core上的浮点运算数。 • 3:数据准备,训练数据发送至Device以及Device侧读取训练数据。 • 4:并行度调优建议。 • 5:并行度数据,主要展示纯通信耗时和计算耗时。 • 6:通信慢卡慢链路数据及优化建议。 • 7:通信矩阵数据及优化建议。 • 8:Host侧系统及进程的CPU、内存的性能指标。 • 9:通信耗时使能关键路径分析。 • 10:通信矩阵使能关键路径分析。 |
| --id | 可选 | 集群场景时指定集群节点的Rank ID,非集群场景指定设备ID。用于MindStudio对接,用户无需配置。 |
| --model-id | 可选 | 模型ID。 用于MindStudio对接,用户无需配置。 |
| --iteration-id | 可选 | 指定以Graph为粒度统计的迭代ID(每个Graph执行一次,Iteration ID加1,当一个脚本被编译为多个Graph时,该ID与脚本层面的Step ID不一致)。默认值为1。 用于MindStudio对接,用户无需配置。 |
| -h或--help | 可选 | 显示帮助信息,仅在获取使用方式时使用。 |
-
登录安装了Toolkit包的环境。
-
切换至msprof.py脚本所在目录。
${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/msprof,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。 -
查询性能数据信息,命令行格式如下。
python3 msprof.py query -dir /home/profiler_data/PROF_XXX
执行查询性能数据信息命令后会打印显示结果。
msprof工具的查询功能获取到的信息如表2所示。
| 字段 | 说明 |
|---|---|
| Job Info | 任务名。 |
| Device ID | 设备ID。 |
| Dir Name | 文件夹名称。 |
| Collection Time | 数据采集时间。 |
| Model ID | 模型ID。 |
| Iteration Number | 总迭代数。 |
| Top Time Iteration | 耗时最长的5个迭代。 |
| Rank ID | 集群场景的节点标识ID。 |
导出性能数据
| 产品 | 是否支持 |
|---|---|
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
本功能用于导出性能数据。
在导出性能数据前,需要先完成解析性能数据。
-
导出timeline数据和db文件
python3 msprof.py export timeline -dir <dir> [-reports <reports_sample_config.json>] [--model-id <model-id>] [--iteration-id <iteration_id>] [--iteration-count <iteration_count>] [--clear] -
导出summary数据和db文件
python3 msprof.py export summary -dir <dir> [--model-id <model-id>] [--iteration-id <iteration_id>] [--iteration-count <iteration_count>] [--format <export_format>] [--clear] -
导出db文件
python3 msprof.py export db -dir <dir>
表 1 导出性能数据命令参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| -dir或--collection-dir | 必选 | 收集到的性能数据目录。须指定为PROF_XXX目录或PROF_XXX目录的父目录,例如:/home/HwHiAiUser/profiler_data/PROF_XXX。 |
| -reports | 可选 | 传入用户自定义的reports_sample_config.json配置文件,会根据配置文件中指定的范围导出相应的性能数据文件。参数实现与msprof --reports一致,详细介绍请参见使用示例(--reports参数)。 |
| --model-id | 可选 | 模型ID。需配置为正整数。与--iteration-id必须同时配置,导出该Model下指定计算迭代的性能数据。--model-id与--iteration-id均未配置时,默认导出所有性能数据。 • 对于Atlas A2 训练系列产品/Atlas A2 推理系列产品和Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持--model-id 4294967295,为Step模式,即--iteration-id配置的值以Step为粒度解析。仅支持解析MindSpore(版本号大于等于2.3)框架的性能数据。 •--model-id配置为其他值时,指定以Graph为粒度统计的迭代ID(每个Graph执行一次,Iteration ID加1,当一个脚本被编译为多个Graph时,该ID与脚本层面的Step ID不一致)。 |
| --iteration-id | 可选 | 迭代ID。需配置为正整数。与--model-id必须同时配置,导出该Model下指定计算迭代的性能数据。--model-id与--iteration-id均未配置时,默认导出所有性能数据。 • 对于Atlas A2 训练系列产品/Atlas A2 推理系列产品和Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持--model-id 4294967295,表示指定以Step为粒度统计的迭代ID(每执行完成一个Step,Iteration ID加1)。仅支持解析MindSpore(版本号大于等于2.3)框架的性能数据。 • --model-id配置为其他值时,指定以Graph为粒度统计的迭代ID(每个Graph执行一次,Iteration ID加1,当一个脚本被编译为多个Graph时,该ID与脚本层面的Step ID不一致)。 |
| --iteration-count | 可选 | 导出连续迭代的个数,取值范围为1~5的整数,根据--iteration-id配置的值为起始Step,导出连续数量的Step,比如配置--iteration-count为3,--iteration-id为1,则导出Step为1、2、3。 |
| --format | 可选 | summary数据文件的导出格式,支持csv和json两种格式,默认值为csv。仅配置summary参数时支持。 本文中summary文件介绍均以csv文件为例。 |
| --clear | 可选 | 数据精简模式,开启后将在导出性能数据后删除PROF_XXX/device_{id}下的sqlite目录,以节省存储空间。配置该参数时表示开启数据精简模式,未配置表示关闭,默认关闭。 |
| -h或--help | 可选 | 显示帮助信息,仅在获取使用方式时使用。 |
-
登录安装了Toolkit包的环境。
-
切换至msprof.py脚本所在目录。
${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/msprof,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。 -
导出性能数据。可以导出timeline、summary和db三类文件,命令行格式如下:
-
导出timeline数据和db文件
python3 msprof.py export timeline -dir /home/HwHiAiUser/profiler_data/PROF_XXX -
导出summary数据和db文件
python3 msprof.py export summary -dir /home/HwHiAiUser/profiler_data/PROF_XXX -
导出db文件,生成汇总所有性能数据的.db格式文件(msprof_时间戳.db)。
python3 msprof.py export db -dir /home/HwHiAiUser/profiler_data/PROF_XXX
Note
- 默认情况下,导出所有性能数据。
- 单算子场景和仅执行采集昇腾AI处理器系统数据的场景(即
msprof采集命令未配置用户应用程序参数--application的情况),不支持--iteration-id和--model-id参数。
-
执行完上述命令后,会在--collection-dir目录下的PROF_XXX目录下生成mindstudio_profiler_output目录和msprof_*.db文件。
生成的Profiling数据目录结构如下所示。
-
单采集进程
└── PROF_XXX ├── device_0 │ └── data ├── device_1 │ └── data ├── host │ └── data ├── msprof_*.db └── mindstudio_profiler_output ├── msprof_{timestamp}.json ├── step_trace_{timestamp}.json ├── xx_*.csv ... └── README.txt -
多采集进程
└── PROF_XXX1 ├── device_0 │ └── data ├── host │ └── data ├── msprof_*.db └── mindstudio_profiler_output ├── msprof_{timestamp}.json ├── step_trace_{timestamp}.json ├── xx_*.csv ... └── README.txt └── PROF_XXX2 ├── device_1 │ └── data ├── host │ └── data ├── msprof_*.db └── mindstudio_profiler_output ├── msprof_{timestamp}.json ├── step_trace_{timestamp}.json ├── xx_*.csv ... └── README.txt
Note
- 多Device场景下,若启动单采集进程,则仅生成一个PROF_XXX目录,若启动多采集进程则生成多个PROF_XXX目录,其中device目录在PROF_XXX目录下生成,每个PROF_XXX目录下生成多少个device目录与用户实际操作有关,不影响性能数据分析。
- 性能数据详细介绍请参见性能数据文件参考。
- mindstudio_profiler_output目录中的文件是根据采集的实际性能数据进行生成,如果实际的性能数据没有相关的数据文件,就不会导出对应的timeline和summary数据。
- 使用export命令能直接从已解析的性能数据中导出数据文件。当性能数据未解析时,单独执行export命令也能进行解析性能数据并导出数据文件。
- 对于被强制中断的msprof采集进程,工具会保存已采集的原始性能数据,也可以使用export解析并导出。
性能调优建议
Note
该功能为msprof工具解析后输出调优建议的功能,已不再演进,分析性能数据并输出调优建议更多的功能请参见《msprof-analyze》。
Note
昇腾产品的具体型号,请参见《昇腾产品形态说明》
| 产品 | 是否支持 |
|---|---|
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
集群或多卡通信场景下,在执行完性能数据export导出命令后,会在屏幕打印相关性能调优建议,具体如下:
-
基于通信耗时分析得到优化建议。
由于集合通信算子是同步执行的,若集群中存在慢节点,则会由于木桶效应,拖累整个集群的性能。
优化建议原则:
-
查看一个迭代内是否存在通信算子等待时长比例(Wait Time Ratio)大于阈值(0.2)的卡:
- 若存在,此迭代存在通信瓶颈,可通过1.2进一步查看。
- 若不存在,初步断定此迭代不存在通信瓶颈,可进一步查看总体带宽使用率情况。
-
找到通信算子等待时长比例(Wait Time Ratio)最大的卡,查看其传输前同步时长比例(Synchronization Time Ratio Before Transit)是否大于阈值(0.2):
- 如果大于,则存在慢卡(等待时长比例最小的卡),需查看慢卡的前向反向计算时间;若该慢卡的前向反向计算时间远大于其他卡,则需要检查负载是否均衡和处理器是否故障;若该卡的前向反向计算时间基本和其他卡相同,则需检查数据预处理时间;
- 否则,存在链路异常的情况,需查看是否有链路故障或者通信量过小的情况。
Note
- 等待时长比例(Wait Time Ratio) = 等待时长(Wait Time)/ (等待时长(Wait Time) + 通信时长(Transit Time)),等待时长比例越大代表卡的等待时长占总通信耗时越长,通信效率越低。
- 传输前同步时长比例(Synchronization Time Ratio Before Transit) = 传输开始前同步时长(Synchronization Time) / (传输开始前同步时长(Synchronization Time) + 通信时长(Transit Time)),同步时长(Synchronization Time)指第一次传输数据前的同步时长,传输前同步时长比例越大说明通信效率越低,可能存在慢卡的情况。
-
-
基于通信矩阵分析得到优化建议。
集群场景中的慢链路一般有以下两种情况:
- 个别的慢链路导致少数卡之间的通信时间增长,其他卡需等待其通信完成,从而拖累整个集群的性能。
- 存在带宽或通信算子异常的情况,导致全网链路无法达到正常的带宽速率,所有卡的通信时间增长,这种情况下没有典型的慢卡和慢链路。
通过通信矩阵对HCCS、PCIE和RDMA进行分析,针对每种链路类型的平均情况,给出瓶颈分析及调优建议;针对存在慢链路的情况,给出慢链路的全部信息及调优建议。
分析建议如下:
- 三种链路类型的耗时占比信息。
- 每种链路类型的具体情况:
- 链路平均信息:包含传输总耗时,平均带宽及平均大包传输率,根据信息给出调优建议。
- 最慢链路信息:链路带宽小于平均带宽20%时输出最慢链路相关信息,包含传输时长、传输大小、传输带宽、带宽利用率以及大包比例,根据信息给出调优建议。
优化建议原则:



