视频教程在Pytorch框架Profiling调优命令行实战_哔哩哔哩_bilibili
MindStudio为用户提供在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。通过依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助用户在一个工具上就能高效便捷地完成AI应用开发。另一方面,MindStudio采用插件化扩展机制,以支持开发者通过开发插件来扩展已有功能。在本案例中所使用的MindStudio版本为5.0.RC1,具体安装流程可参考MindStudio安装教程(https://www.hiascend.com/document/detail/zh/mindstudio/50RC1/instg/instg_000002.html)。
具体的,MindStudio的功能包括:
MindStudio功能框架如图1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。
图1
Profiling作为专业的昇腾AI任务性能调优工具,其功能涵盖AI任务运行时关键数据采集和性能指标分析。
具体的,Profiling实现了Host+Device侧丰富的性能数据采集能力和全景Timeline交互分析能力,展示Host+Device侧各项性能指标,帮助用户快速发现和定位AI应用的性能瓶颈,包括资源瓶颈导致的AI算法短板,指导算法性能提升和系统资源利用率的优化。同时,Profiling还支持Host+Device侧的资源利用可视化统计分析,具体包括Host侧CPU、Memory、Disk、Network利用率和Device侧APP工程的硬件和软件性能数据。
Profiling的使用包括三个步骤:首先采集性能数据;接着解析性能数据,并分析性能瓶颈;最后解决性能瓶颈后重新采集、解析并分析性能是否提升。
针对开发者的差异化需求,Profiling提供了全场景下多种性能数据采集方案,包括:
msprof命令行工具不仅可以解析采集到的性能数据,也提供了完整性能数据采集能力(更多的数据类型)。因此官方推荐使用msprof命令行工具完成性能调优全过程。
除msprof命令行工具外,Profiling的其他数据采集方案也有各自的特点:
Profiling总体流程如下图所示。应按流程提前准备环境、进行应用程序开发或算子开发并采集Profiling性能数据、解析Profiling性能数据。
其中msprof命令行工具方式在采集后会自动进行Profiling数据的解析,其余方式需要将采集到的数据拷贝到安装有Ascend-cann-toolkit开发套件包的环境中手动进行数据解析。
图2
其中,采集通用命令是Profiling采集的基础,非采集项,用于提供Profiling采集时的基本信息,包括参数含义帮助、指定待采集项目AI任务文件、采集到Profiling数据的存放路径、自定义环境变量、采集到Profiling数据允许存放的文件大小等。
msprof命令行采集功能的采集功能如下:
表1 采集命令常用参数说明
参数 |
描述 |
可选/必选 |
--help |
帮助提示参数。 |
可选 |
--application |
配置为运行环境上AI任务文件,如:推理环境App可执行文件所在目录+文件名,例如:--application=/home/HwHiAiUser/HIAI_PROJECTS/MyAppname/out/main。 训练环境训练脚本目录+文件名,例如:--application=/home/HwHiAiUser/train/mindspore/scripts/run_standalone_train.sh。 如果“application”带参数输入,此时需要使用英文双引号将“application”的参数值括起来,例如--application="main parameters1 parameters2 parameters3 ..."。 不建议配置其他用户目录下的AI任务,避免提权风险。 |
采集全部性能数据、采集AI任务运行时性能数据或采集msproftx数据时,本参数必选;仅采集昇腾AI处理器系统数据时,本参数不选;采集Host侧性能数据时,本参数可选。 |
--output |
收集到的Profiling数据的存放路径,默认为AI任务所在目录。 |
采集全部性能数据或采集AI任务运行时性能数据时,本参数可选; 仅采集昇腾AI处理器系统数据时,本参数必选。 |
--environment |
执行Profiling时运行环境上需要的自定义环境变量。 配置格式为--environment="${envKey}=${envValue}"或environment="${envKey1}=${envValue1};${envKey2}=${envValue2}"。例如:--environment="LD_LIBRARY_PATH=/home/HwHiAiUser/Ascend/nnrt/latest/lib64"。 |
可选 |
--storage-limit |
指定落盘目录允许存放的最大文件容量。当Profiling数据文件在磁盘中即将占满本参数设置的最大存储空间(剩余空间<=20MB)或剩余磁盘总空间即将被占满时(总空间剩余<=20MB),则将磁盘内最早的文件进行老化删除处理。 单位为MB,取值范围为[200, 4294967295],默认未配置本参数。参数值配置格式为数值+单位,例如--storage-limit=200MB。未配置本参数时,不开启数据老化功能。(昇腾710 AI处理器)(昇腾910 AI处理器) |
可选 |
表2 参数说明
参数 |
描述 |
可选/必选 |
--ascendcl |
控制acl性能数据采集的开关,可选on或off,默认为on。该参数配置前提是application参数已配置。 可采集acl性能数据,Host与Device之间、Device间的同步异步内存复制时延acl性能数据。 |
可选 |
--model-execution |
控制ge model execution性能数据采集开关,可选on或off,默认为off。该参数配置前提是application参数已配置。 |
可选 |
--runtime-api |
控制runtime api性能数据采集开关,可选on或off,默认为off。该参数配置前提是application参数已配置。 可采集runtime-api性能数据(不包含Host和Devise之间的数据搬运),Host与Device之间、Device间的同步异步内存复制时延runtime-api性能数据。 |
可选 |
--hccl |
控制HCCL数据采集开关,可选on或off,默认为off。该参数配置前提是application参数已配置。 |
可选 |
--task-time |
控制ts timeline数据(昇腾310 AI处理器)。 控制hwts log数据采集开关。(昇腾710 AI处理器)(昇腾910 AI处理器) 可选on或off,默认为on。该参数配置前提是application参数已配置。 |
可选 |
--aicpu |
采集AICPU算子的详细信息,如:算子执行时间、数据拷贝时间等。可选on或off,默认值为off。该参数配置前提是application参数已配置。 |
可选 |
--ai-core |
控制AI Core数据采集的开关,可选on或off,默认值为on。 |
可选 |
--aic-mode |
AI Core硬件的采集类型,可选值task-based或sample-based。 task-based是以task为粒度进行性能数据采集,sample-based是以固定的时间周期进行性能数据采集。 配置为采集AI任务运行性能数据时自动识别为task-based;配置为采集昇腾AI处理器系统数据时自动识别为sample-based。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--aic-freq |
sample-based场景下的采样频率,默认值100,范围1~100,单位hz。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--aic-metrics |
AI Core性能指标采集项,默认为PipeUtilization,包括ArithmeticUtilization、PipeUtilization、Memory、MemoryL0、MemoryUB、ResourceConflictRatio。以上各参数值对应的详细采集指标请参见AI Core性能指标采集项说明。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--l2 |
控制L2采样数据的开关,可选on或off,默认为off。该参数配置前提是application参数已配置。(昇腾710 AI处理器)(昇腾910 AI处理器) |
可选 |
表3 采集内容(timeline)
timeline文件名 |
相关参数 |
说明 |
msprof_*.json |
all |
timeline数据总表。对采集到的timeline性能数据按照迭代粒度进行性能展示。详情请参见timeline数据总表。 |
ai_stack_time_*.json |
--ascendcl --model-execution --runtime-api --task-time 以上参数至少开启一个。 |
各个组件(AscendCL,GE,Runtime,Task Scheduler)的耗时。详情请参见AscendCL、GE、Runtime、Task Schduler组件耗时数据概览。 |
thread_group_*.json |
--ascendcl --model-execution --runtime-api 以上参数可选。 |
AscendCL,GE,Runtime组件耗时数据。该文件内的各组件数据按照线程(Thread)粒度进行排列,方便查看各线程下各组件的耗时数据。当模型为动态Shape时自动采集并生成该文件。文件详情请参见AscendCL、GE、Runtime组件耗时完整数据(按线程粒度展示)。 |
task_time_*.json |
--task-time |
Task Scheduler任务调度信息。文件详情请参见Task Scheduler任务调度信息数据。 |
acl_*.json |
--ascendcl |
AscendCL接口耗时数据,生成该文件需要采集的Profiling数据中包含AclModule.开头的文件。文件详情请参见AscendCL接口耗时数据。 |
runtime_api_*.json |
--runtime-api |
Runtime接口耗时数据。文件详情请参见Runtime接口耗时数据。 |
ge_*.json |
--model-execution |
GE接口耗时数据。文件详情请参见GE接口耗时数据。 |
ge_op_execute_*.json |
- |
算子下发各阶段耗时数据。当模型为动态Shape时自动采集并生成该文件。文件详情请参见算子下发各阶段耗时数据。 |
step_trace_*.json |
- |
迭代轨迹数据,每轮迭代的耗时。文件详情请参见迭代轨迹数据。 |
hccl_*.json |
--hccl |
HCCL数据。文件详情请参见HCCL数据。 |
注:“*”表示{device_id}_{model_id}_{iter_id},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。这些字段可以使用数据解析与导出完成数据解析后,使用数据解析与导出中的“查询Profiling数据文件信息查询功能”对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。 |
表4 采集内容(summary)
summary文件名 |
相关参数 |
说明 |
acl_*.csv |
--ascendcl |
AscendCL接口的耗时。详情请参见AscendCL接口耗时数据。 |
acl_statistic_*.csv |
--ascendcl |
AscendCL接口调用次数及耗时。详情请参见AscendCL接口调用次数及耗时数据。 |
op_summary_*.csv |
--task-time(可选) --ai-core(可选) --aic-metrics(可选) --aicpu(可选) 配置--task-time、--ai-core和--aic-metrics生成AI Core算子信息;配置--aicpu生成AI CPU算子信息。 |
AI Core数据,获取每个task的ai core metrics的耗时。详情请参见AI Core数据。 |
op_statistic_*.csv |
--task-time(可选) --ai-core(可选) --aic-metrics(可选) --aicpu(可选) 配置--task-time、--ai-core和--aic-metrics生成AI Core算子信息;配置--aicpu生成AI CPU算子信息。 |
AI Core算子调用次数及耗时,从算子类型维度找出耗时最大的算子类型。详情请参见AI Core算子调用次数及耗时数据。 |
step_trace_*.csv |
- |
迭代轨迹数据。文件详情请参见迭代轨迹数据。 |
ai_stack_time_*.csv |
--ascendcl --model-execution --runtime-api --task-time 以上四个参数至少开启一个。 |
每个组件(AscendCL,GE,Runtime,Task Scheduler)的耗时。详情请参见各个组件的耗时数据。 |
runtime_api_*.csv |
--runtime-api |
每个runtime api的调用时长。详情请参见Runtime接口耗时数据。 |
fusion_op_*.csv |
- |
模型中算子融合前后信息。详情请参见模型中算子融合前后信息数据。 |
ge_op_execute_*.csv |
- |
算子下发各阶段耗时数据。当模型为动态Shape时自动采集并生成该文件。文件详情请参见算子下发各阶段耗时数据。 |
task_time_*.csv |
--task-time |
Task Scheduler的任务调度信息数据。详情请参见:
|
aicpu_*.csv |
--aicpu |
AI CPU数据。文件详情请参见AI CPU数据。 |
l2_cache_*.csv |
--l2 |
L2Cache数据。详情请参见L2Cache数据(昇腾710 AI处理器)(昇腾910 AI处理器)。 |
prof_rule_0.json |
- |
调优建议。无需指定Profiling参数自动生成,完成后打屏显示结果,详细介绍请参见性能调优建议。 |
注:“*”表示{device_id}_{model_id}_{iter_id},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。这些字段可以使用数据解析与导出完成数据解析后,使用数据解析与导出中的“查询Profiling数据文件信息查询功能”对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。 |
表5 参数说明
参数 |
描述 |
可选/必选 |
--sys-period |
系统的采样时长,取值范围大于0,上限为30*24*3600,单位s。 |
必选 |
--sys-devices |
设备ID。可以为all或多个设备ID(以逗号分隔)。 |
必选 |
--ai-core |
控制AI Core数据采集的开关,可选on或off,默认值为off。 |
可选 |
--aic-mode |
AI Core硬件的采集类型,可选值task-based或sample-based,默认task-based。task-based是以task为粒度进行性能数据采集,sample-based是以固定的时间周期进行性能数据采集。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--aic-freq |
sample-based场景下的采样频率,默认值100,范围1~100,单位hz。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--aic-metrics |
AI Core性能指标采集项,默认为PipeUtilization,包括ArithmeticUtilization、PipeUtilization、Memory、MemoryL0、MemoryUB、ResourceConflictRatio。以上各参数值对应的详细采集指标请参见AI Core性能指标采集项说明。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--sys-hardware-mem |
控制DDR,HBM(昇腾910 AI处理器),LLC的读写带宽数据采集开关,可选on或off,默认为off。 |
可选 |
--sys-hardware-mem-freq |
DDR,HBM(昇腾910 AI处理器),LLC的读写带宽数据采集频率,范围1~1000,默认值为50,单位hz。 设置该参数需要sys-hardware-mem参数设置为on。 |
可选 |
--llc-profiling |
LLC Profiling采集事件,可以设置为:
如要采集该数据,需要sys-hardware-mem设置为on。 |
可选 |
--sys-cpu-profiling |
CPU(AI CPU、Ctrl CPU、TS CPU)采集开关。可选on或off,默认值为off。 |
可选 |
--sys-cpu-freq |
CPU采集频率,范围1-50,默认值为50,单位hz。设置该参数需要sys-cpu-profiling参数设置为on。 |
可选 |
--sys-profiling |
系统CPU usage及System memory采集开关。可选on或off,默认值为off。 |
可选 |
--sys-sampling-freq |
系统CPU usage及System memory采集频率,范围1-10,默认值为10,单位hz。设置该参数需要sys-profiling参数设置为on。 |
可选 |
--sys-pid-profiling |
进程的CPU usage及进程的memory采集开关。可选on或off,默认值为off。 |
可选 |
--sys-pid-sampling-freq |
进程的CPU usage及进程的memory采集频率,范围1-10,默认值为10,单位hz。设置该参数需要sys-pid-profiling参数设置为on。 |
可选 |
--sys-io-profiling |
NIC(昇腾310 AI处理器)(昇腾910 AI处理器)、ROCE(昇腾910 AI处理器)采集开关。可选on或off,默认值为off。 |
可选 |
--sys-io-sampling-freq |
NIC(昇腾310 AI处理器)(昇腾910 AI处理器)、ROCE(昇腾910 AI处理器)采集频率,范围1-100,默认值为100,单位hz。设置该参数需要sys-io-profiling参数设置为on。 |
可选 |
--sys-interconnection-profiling |
PCIe采集开关,可选on或off,默认值为off。 (昇腾710 AI处理器)(昇腾910 AI处理器) |
可选 |
--sys-interconnection-freq |
PCIe采集频率,范围1-50,默认值为50,单位hz。 设置该参数需要sys-interconnection-profiling参数设置为on。 (昇腾710 AI处理器)(昇腾910 AI处理器) |
可选 |
--dvpp-profiling |
DVPP采集开关,可选on或off,默认值为off。 (昇腾310 AI处理器)(昇腾910 AI处理器) |
可选 |
--dvpp-freq |
DVPP采集频率,范围1-100,默认值为50,单位hz。 设置该参数需要dvpp-profiling参数设置为on。 (昇腾310 AI处理器)(昇腾910 AI处理器) |
可选 |
表6 采集内容(timeline)
timeline文件名 |
相关参数 |
说明 |
ai_core_utilization_*.json |
--ai-core |
每个Core上指令占比数据,sample-based模式下才会生成。详情请参见每个Core上指令占比数据。 |
ddr_*.json |
--sys-hardware-mem |
DDR内存读写速率。详情请参见DDR内存读写速率数据。 |
hbm_*.json |
--sys-hardware-mem |
HBM内存读写速率。文件详情请参见HBM内存读写速率数据(昇腾910 AI处理器)。 (昇腾910 AI处理器) |
llc_aicpu_*.json |
--sys-hardware-mem --llc-profiling=capacity |
AI CPU的三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。文件详情请参见AI CPU的三级缓存使用量数据(昇腾310 AI处理器)。 (昇腾310 AI处理器) |
llc_ctrlcpu_*.json |
--sys-hardware-mem --llc-profiling=capacity |
Control CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。文件详情请参见Control CPU三级缓存使用量数据(昇腾310 AI处理器)。 (昇腾310 AI处理器) |
llc_bandwidth_*.json |
--sys-hardware-mem --llc-profiling=bandwidth |
三级缓存带宽,LLC Profiling采集事件设置为bandwidth时才会导出该文件。文件详情请参见三级缓存带宽数据(昇腾310 AI处理器)。 (昇腾310 AI处理器) |
llc_read_write_*.json |
--sys-hardware-mem |
三级缓存读写速率数据。文件详情请参见三级缓存读写速率数据(昇腾710 AI处理器)(昇腾910 AI处理器)。 (昇腾710 AI处理器)(昇腾910 AI处理器) |
nic_*.json |
--sys-io-profiling |
每个时间节点网络信息数据。文件详情请参见每个时间节点网络信息数据(昇腾310 AI处理器)(昇腾910 AI处理器)。 (昇腾310 AI处理器)(昇腾910 AI处理器) |
roce_*.json |
--sys-io-profiling |
RoCE通信接口带宽数据。文件详情请参见RoCE通信接口带宽数据(昇腾910 AI处理器)。 (昇腾910 AI处理器) |
hccs_*.json |
--sys-interconnection-profiling |
集合通信带宽数据。文件详情请参见集合通信带宽数据(昇腾910 AI处理器)。 (昇腾910 AI处理器) |
pcie_*.json |
--sys-interconnection-profiling |
PCIe带宽。详情请参见PCIe带宽数据(昇腾710 AI处理器)(昇腾910 AI处理器)。 (昇腾710 AI处理器)(昇腾910 AI处理器) |
注:“*”表示{device_id}_{model_id}_{iter_id},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。这些字段可以使用数据解析与导出完成数据解析后,使用数据解析与导出中的“查询Profiling数据文件信息查询功能”对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。 |
表7 采集内容(summary)
summary文件名 |
相关参数 |
说明 |
|
ai_core_utilization_*.csv |
--ai-core --aic-mode=sample-based |
每个Core上指令占比数据。详情请参见每个Core上指令占比数据。 |
|
ddr_*.csv |
--sys-hardware-mem |
DDR内存读写速率。详情请参见DDR内存读写速率数据。 |
|
hbm_*.csv |
--sys-hardware-mem |
HBM内存读写速率,data中包含hbm.开头的文件。详情请参见HBM内存读写速率数据(昇腾910 AI处理器)。 (昇腾910 AI处理器) |
|
llc_aicpu_*.csv |
--sys-hardware-mem --llc-profiling=capacity |
AI CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。详情请参见AI CPU三级缓存使用量数据(昇腾310 AI处理器)。 (昇腾310 AI处理器) |
|
llc_ctrlcpu_*.csv |
--sys-hardware-mem --llc-profiling=capacity |
Control CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。详情请参见Ctrl CPU三级缓存使用量数据(昇腾310 AI处理器)。 (昇腾310 AI处理器) |
|
llc_bandwidth_*.csv |
--sys-hardware-mem --llc-profiling=bandwidth |
三级缓存带宽,LLC Profiling采集事件设置为bandwidth时才会导出该文件。三级缓存带宽数据(昇腾310 AI处理器)。 (昇腾310 AI处理器) |
|
llc_read_write_*.csv |
--sys-hardware-mem |
三级缓存读写速率数据。文件详情请参见三级缓存读写速率数据(昇腾710 AI处理器)(昇腾910 AI处理器)。 (昇腾710 AI处理器)(昇腾910 AI处理器) |
|
ai_cpu_top_function_*.csv |
--sys-cpu-profiling |
AI CPU热点函数。文件详情请参见AI CPU热点函数数据。 |
|
ai_cpu_pmu_events_*.csv |
--sys-cpu-profiling |
AI CPU PMU事件。文件详情请参见AI CPU PMU事件数据。 |
|
ctrl_cpu_top_function_*.csv |
--sys-cpu-profiling |
Ctrl CPU热点函数。文件详情请参见Ctrl CPU热点函数数据。 |
|
ctrl_cpu_pmu_events_*.csv |
--sys-cpu-profiling |
Ctrl CPU PMU事件。文件详情请参见Ctrl CPU PMU事件数据。 |
|
ts_cpu_top_function_*.csv |
--sys-cpu-profiling |
TS CPU热点函数。文件详情请参见TS CPU热点函数数据。 |
|
ts_cpu_pmu_events_*.csv |
--sys-cpu-profiling |
TS CPU PMU事件。文件详情请参见TS CPU PMU事件数据。 |
|
cpu_usage_*.csv |
--sys-profiling |
AI CPU、Control CPU利用率。文件详情请参见AI CPU、Ctrl CPU利用率数据。 |
|
sys_mem_*.csv |
--sys-profiling |
指定device的内存使用情况。详情请参见系统内存数据。 |
|
process_cpu_usage_*.csv |
--sys-pid-profiling |
进程CPU占用率。生成文件详情请参见进程CPU占用率数据。 |
|
process_mem_*.csv |
--sys-pid-profiling |
进程内存占用率。文件详情请参见进程内存占用率数据。 |
|
nic_*.csv |
--sys-io-profiling |
每个时间节点网络信息数据。文件详情请参见每个时间节点网络信息数据(昇腾310 AI处理器)(昇腾910 AI处理器)。 (昇腾310 AI处理器)(昇腾910 AI处理器) |
|
roce_*.csv |
--sys-io-profiling |
RoCE通信接口带宽数据。文件详情请参见RoCE通信接口带宽数据(昇腾910 AI处理器)。 (昇腾910 AI处理器) |
|
hccs_*.csv |
--sys-interconnection-profiling |
集合通信带宽数据。文件详情请参见集合通信带宽数据(昇腾910 AI处理器)。 (昇腾910 AI处理器) |
|
pcie_*.csv |
--sys-interconnection-profiling |
PCIe带宽。详情请参见PCIe带宽数据(昇腾710 AI处理器)(昇腾910 AI处理器)。 (昇腾710 AI处理器)(昇腾910 AI处理器) |
|
dvpp_*.csv |
--dvpp-profiling |
DVPP数据。文件详情请参见DVPP数据(昇腾310 AI处理器)(昇腾910 AI处理器)。 (昇腾310 AI处理器)(昇腾910 AI处理器) |
|
注:“*”表示{device_id}_{model_id}_{iter_id},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。这些字段可以使用数据解析与导出完成数据解析后,使用数据解析与导出中的“查询Profiling数据文件信息查询功能”对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。 |
表8 参数说明
参数 |
描述 |
可选/必选 |
--host-sys |
Host侧性能数据采集开关,取值包括cpu,mem,disk,network和osrt,可选其中的一项或多项,选多项时用逗号隔开。配置该项必须配置host-sys-pid 参数或application参数。各项取值含义如下:
配置示例:--host-sys=cpu,mem,disk,network。 |
必选 |
--host-sys-pid |
指定需要采集的Host侧应用程序的pid。 依赖AI任务运行时该参数无需配置,且配置无效。 |
必选 |
表9 采集内容(timeline)
timeline文件名 |
相关参数 |
说明 |
host_cpu_usage.json |
--host-sys=cpu |
Host侧CPU利用率。详情请参见Host侧CPU利用率数据。 |
host_mem_usage.json |
--host-sys=mem |
Host侧内存利用率。详情请参见Host侧内存利用率数据。 |
host_disk_usage.json |
--host-sys=disk |
Host侧磁盘I/O利用率。详情请参见Host侧磁盘I/O利用率数据。 |
host_network_usage.json |
--host-sys=network |
Host侧网络I/O利用率。详情请参见Host侧网络I/O利用率数据。 |
os_runtime_api.json |
--host-sys=osrt |
Host侧syscall和pthreadcall数据。详情请参见Host侧syscall和pthreadcall数据。 |
表10 采集内容(summary)
summary文件名 |
相关参数 |
说明 |
os_runtime_statistic.csv |
--host-sys=osrt |
Host侧syscall和pthreadcall数据。详情请参见Host侧syscall和pthreadcall数据。 |
表11 参数说明
参数 |
描述 |
可选/必选 |
--msproftx |
控制msproftx用户和上层框架程序输出性能数据的开关,可选on或off,默认值为off。 |
必选 |
在Pytorch框架下,以ResNet50网络在训练场景中性能优化分析为例,展示Pytorch框架Profiling调优命令行的性能数据采集过程。
图3
图4
表12 采集命令参数说明
参数 |
描述 |
可选/必选 |
--help |
帮助提示参数。 |
可选 |
--application |
配置为运行环境上AI任务文件,如:推理环境App可执行文件所在目录+文件名,例如:--application=/home/HwHiAiUser/HIAI_PROJECTS/MyAppname/out/main。 训练环境训练脚本目录+文件名,例如:--application=/home/HwHiAiUser/train/mindspore/scripts/run_standalone_train.sh。如果“application”带参数输入,此时需要使用英文双引号将“application”的参数值括起来,例如--application="main parameters1 parameters2 parameters3 ..."。 不建议配置其他用户目录下的AI任务,避免提权风险。 |
采集全部性能数据、采集AI任务运行时性能数据或采集msproftx数据时,本参数必选;仅采集昇腾AI处理器系统数据时,本参数不选;采集Host侧性能数据时,本参数可选。 |
--output |
收集到的Profiling数据的存放路径,默认为AI任务所在目录。 |
采集全部性能数据或采集AI任务运行时性能数据时,本参数可选; 仅采集昇腾AI处理器系统数据时,本参数必选。 |
--environment |
执行Profiling时运行环境上需要的自定义环境变量。 配置格式为--environment="${envKey}=${envValue}"或environment="${envKey1}=${envValue1};${envKey2}=${envValue2}"。例如:--environment="LD_LIBRARY_PATH=/home/HwHiAiUser/Ascend/nnrt/latest/lib64"。 |
可选 |
--storage-limit |
指定落盘目录允许存放的最大文件容量。当Profiling数据文件在磁盘中即将占满本参数设置的最大存储空间(剩余空间<=20MB)或剩余磁盘总空间即将被占满时(总空间剩余<=20MB),则将磁盘内最早的文件进行老化删除处理。 单位为MB,取值范围为[200, 4294967295],默认未配置本参数。参数值配置格式为数值+单位,例如--storage-limit=200MB。未配置本参数时,不开启数据老化功能。(昇腾710 AI处理器)(昇腾910 AI处理器) |
可选 |
--ascendcl |
显示acl的profiling数据,默认值是on |
可选 |
--model-execution |
显示ge模型运行profiling数据,默认值是off |
可选 |
--runtime-api |
显示runtime api的profiling数据,默认值是off |
可选 |
--task-time |
显示任务的profiling数据,默认值是on |
可选 |
-ai-core |
开启/关闭ai core profiling,采集app Profiling时默认开启。 |
可选 |
--aic-mode |
将aic分析模式设置为基于任务或基于样本。 在基于任务的模式下,分析数据将按任务收集。 在基于样本的模式下,将在特定的时间间隔内收集分析数据。默认值是基于任务的。 |
可选 |
--aic-freq |
aic采样频率,以赫兹为单位,默认值为100Hz,范围为1到100Hz。 |
可选 |
--aic-metrics |
aic 指标组,包括 ArithneticUtilization、PipeUtilization、Memory、MemoryLo、ResourceConflictRatio、MenoryUB。默认值为PipeUtilization。 |
可选 |
--sys-period |
以秒为单位设置系统分析的总采样周期。 |
可选 |
--sys-devices |
收集sys profiling时通过设备ID指定profiling范围。取值为all或ID列表(用','分割)。 |
可选 |
--hccl |
显示 hccl 分析数据,默认值为off。 |
可选 |
-biu |
显示biu的profiling数据,默认值为off |
可选 |
--biu-freq |
以时钟周期为单位的biu采样周期,默认值为1000个周期,范围为300到30000个周期。 |
可选 |
--msproftx |
展示msproftx数据,默认值为off。 |
可选 |
--python-path |
指定用于分析的python解释器路径,请确保python版本为3.7.5或更高版本。 |
可选 |
--parse |
使用msprof解析采集数据的开关,默认为off。 |
可选 |
--query |
使用msprof查询采集数据的开关,默认值为off。 |
可选 |
--export |
使用msprof导出采集数据的开关,默认值为off。 |
可选 |
--iteration-id |
导出迭代id,仅在打开参数导出时使用,默认值为1 |
可选 |
--model-id |
导出模型id,仅在打开参数导出时使用,msprof将默认导出最小可访问模型。 |
可选 |
--summary-format |
导出摘要文件格式,仅在打开参数导出时使用,包括csv、json,默认值为csv。 |
可选 |
-aicpu |
显示 aicpu profiling数据,默认值为off。 |
可选 |
--sys-hardware-men |
LLC、DDR、HBM 采集开关。 |
可选 |
--sys-hardware-mem-freq |
LLC、DDR、HBM采集频率,范围1~1000,默认50,单位Hz。 |
可选 |
--llc-profiling |
LLc profiling组,包括读、写,默认值是read。 |
可选 |
--sys-cpu-profiling |
CPU 采集开关,可选开/关,默认值为off。 |
可选 |
--sys-cpu-freq |
以赫兹为单位的CPU采样频率。默认值为50Hz,范围为1到50Hz。 |
可选 |
--sys-profiling |
System CPU使用率和系统内存获取开关,默认值为off。 |
可选 |
--sys-sampling-freq |
sys采样频率,以赫兹为单位。默认值为10Hz,范围为1到10Hz。 |
可选 |
--sys-pid-profiling |
进程的CPU使用率和进程的内存获取开关,默认值为off。 |
可选 |
--sys-pid-sampling-freq |
以赫兹为单位的pid采样频率。默认值为10Hz,范围为1到10Hz。 |
可选 |
--sys-io-profiling |
NIC、ROCE获取开关,默认值为off。 |
可选 |
--sys-io-sampling-freq |
NIC,ROCE采集频率,范围1~100,默认值为100,单位Hz。 |
可选 |
--sys-interconnection-profiling |
PCIE、HCCS采集开关,默认值为off。 |
可选 |
--sys-interconnection-freq |
PCIE,HCCS采集频率,范围1~50,默认50,单位Hz。 |
可选 |
--dvpp-profiling |
DVPP采集开关,默认为off。 |
可选 |
--dvpp-freq |
DVPP采集频率,范围1~100,默认50,单位Hz。 |
可选 |
--l2 |
L2 Cache获取开关。默认值为off。 |
可选 |
--host-sys |
host-sys数据类型,包括cpu,mem,disk,network,osrt |
可选 |
-host-sys-pid |
设置要收集性能数据的应用进程的PID。 |
可选 |
-help |
帮助信息 |
可选 |
图5
图8
图10
表13 解析命令参数说明
参数 |
说明 |
可选/必选 |
--parse |
单独使用命令行工具进行解析。取值为:on:开启解析功能;off:关闭解析功能。 |
必选 |
--output |
收集到的Profiling数据目录。须指定为PROF_XXX目录(仅生成汇总Timeline目录数据)或PROF_XXX目录下的host或device目录(生成具体设备数据),例如:/home/HwHiAiUser/profiler_data/PROF_XXX或/home/HwHiAiUser/profiler_data/PROF_XXX/device1。 |
必选 |
图11
表14 信息查询命令参数说明
参数 |
说明 |
可选/必选 |
--query |
查询Profiling数据文件信息。可选on或off,默认值为off。 当完成Profiling解析后,可以通过本参数查询Profiling数据文件信息,需使用--output参数指定查询的目标路径。 Ascend RC场景不支持本参数。 |
必选 |
--output |
收集到的Profiling数据目录。须指定为PROF_XXX目录(仅查询汇总Timeline目录数据)或PROF_XXX目录下的host或device目录(查询具体设备数据),例如:/home/HwHiAiUser/profiler_data/PRO_FXXX或/home/HwHiAiUser/profiler_data/PROF_XXX/device1。 |
必选 |
表15 Profiling数据文件信息
字段 |
含义 |
Job Info |
任务名 |
Device ID |
设备号 |
Dir Name |
文件夹名称 |
Collection Time |
数据采集时间 |
Model ID |
模型号 |
Iteration Number |
总迭代数 |
Top Time Iteration |
耗时最长的5个迭代号 |
图12
表16 信息查询命令参数说明
参数 |
说明 |
可选/必选 |
--export |
导出Profiling timeline和summary数据。可选on或off,默认值为off。 默认导出迭代1、可导出的最小模型号(Model ID)的timeline和summary数据。 若需导出其他迭代/模型的数据,可在msprof命令执行完成后重新执行命令配置本参数和–model-id、–iteration-id参数。对于未解析的PROF_XXX文件,自动解析后再导出。示例:./msprof --export=on --output=/home/HwHiAiUser –model-id=2 –iteration-id=2 |
必选 |
--output |
收集到的Profiling数据目录。须指定为PROF_XXX目录(仅生成汇总Timeline目录数据)或PROF_XXX目录下的host或device目录(生成具体设备数据),例如:/home/HwHiAiUser/profiler_data/PROF_XXX或/home/HwHiAiUser/profiler_data/PROF_XXX/device1。 |
必选 |
--iteration-id |
某轮迭代的ID号,默认值为1。 |
可选 |
--model-id |
模型ID。默认为可导出的最小模型号。 |
可选 |
--summary-format |
summary数据文件的导出格式,支持csv和json两种格式,默认值为csv。 |
可选 |
图13
图14
图15
图16
图17
图18
图19
图20
图21
图22
表17 msprof默认配置采集的性能数据文件
文件夹 |
文件名 |
说明 |
timeline |
acl_*.json |
AscendCL接口调用时序。 |
ai_stack_time_*.json |
昇腾AI软件栈各组件(AscendCL,GE,Runtime,Task Scheduler等)运行时序。 |
|
step_trace_*.json |
迭代轨迹数据,每轮迭代的耗时。 |
|
task_time_*.json |
Task Scheduler任务调度时序。 |
|
msprof_*.json |
timeline数据总表。 |
|
summary |
acl_*.csv |
AscendCL API调用过程。 |
acl_statistic_*.csv |
AscendCL API数据统计。 |
|
op_summary_*.csv |
AI Core和AI CPU算子数据。 |
|
op_statistic _*.csv |
AI Core和AI CPU算子调用次数及耗时统计。 |
|
step_trace_*.csv |
迭代轨迹数据。 |
|
task_time_*.csv |
Task Scheduler任务调度信息。 |
|
ai_stack_time_*.csv |
昇腾AI软件栈各组件(AscendCL,GE,Runtime,Task Scheduler等)信息。 |
|
注:“*”表示{device_id}_{model_id}_{iter_id},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。这些字段可以使用数据解析与导出完成数据解析后,使用数据解析与导出中的“查询Profiling数据文件信息查询功能”对结果文件进行查询得出,若查询某些字段显示为N/A(为空)则在导出的结果文件名中不展示。 |
图23
解决办法:在执行Profiling数据解析前,提前删掉不需要的文件,或者多GPU分布式运行。
如果需要了解关于MindStudio更多的信息,请查阅昇腾社区中MindStudio的[用户手册](https://www.hiascend.com/document/detail/zh/mindstudio/50RC1/progressiveknowledge/index.html),里面模型训练、脚本转换、模型开发、算子开发、精度对比、AI Core Error分析工具、AutoML工具(Beta)、Benchmark工具、专家系统工具等各种使用安装操作的详细介绍。
如果在使用MindStudio过程中遇到任何问题,也可以在昇腾社区中的[昇腾论坛](https://www.huaweicloud.com)进行提问,会有华为内部技术人员对其进行解答,如下图。
图24
Enable GingerCannot connect to Ginger Check your internet connection
or reload the browserDisable in this text fieldRephraseRephrase current sentence99+Edit in Ginger×