with torch_npu.npu.profile(profiler_result_path="./result", use_e2e_profiler=True): model_train()
因NPU算子需要编译后才能执行,为保证数据的准确性,建议先运行10个step,在第十个step后再进行E2E prof操作,并且一般只需要profiling1个或者2个step即可。
if step ==11: with torch_npu.npu.profile(profiler_result_path="./result", use_e2e_profiler=True): model_train()
使用E2E profiling工具获得的结果为原始数据,需要解析查看。
/usr/local/Ascend/ascend-toolkit/latest/toolkit/tools/profiler/bin/msprof --export=on --output=./
该示例分为4个层次,由上到下,第一层MsprofTx为PyTorch框架数据,第二层AscendCL为AscendCL层面数据,第三层Task Scheduler为device上数据,第四层为AI CPU上数据。
E2E prof工具默认配置获取上述所有层面数据。获取数据过程亦会影响性能,若获取数据过多,会导致性能数据不具备参考价值。因此,E2E prof工具提供了可配置选项,用于精细化控制获取部分层面数据。
with torch_npu.npu.profile(profiler_result_path="./results", use_e2e_profiler=True, \ config=torch_npu.npu.profileConfig(ACL_PROF_ACL_API=True, \ ACL_PROF_TASK_TIME=True, ACL_PROF_AICORE_METRICS=True, \ ACL_PROF_AICPU=True, ACL_PROF_L2CACHE=False, \ ACL_PROF_HCCL_TRACE=True, ACL_PROF_TRAINING_TRACE=False, \ aiCoreMetricsType=0)):
参数名称 |
参数含义 |
参数说明 |
---|---|---|
ACL_PROF_ACL_API |
采集AscendCL接口的性能数据。 |
默认True |
ACL_PROF_TASK_TIME |
采集AI CORE算子的执行时间。 |
默认True |
ACL_PROF_AICORE_METRICS |
采集AI CORE性能指标数据。 |
默认为True。当值为True时,aicore_metrics入参处配置的性能指标采集项才有效。 |
ACL_PROF_AICPU |
采集AI CPU任务的开始、结束轨迹数据。 |
默认为True |
ACL_PROF_L2CACHE |
采集L2 Cache数据,该数据会导致prof结果膨胀。 |
默认False |
ACL_PROF_HCCL_TRACE |
采集HCCL数据。 |
默认为True |
ACL_PROF_TRAINING_TRACE |
表示迭代轨迹数据,记录模型正向和反向等步骤。 |
默认为False |
aiCoreMetricsType |
见表2。 |
见表2。 |
参数取值 |
相关参数 |
参数定义 |
采集项 |
---|---|---|---|
0 |
ACL_AICORE_ARITHMETIC_UTILIZATION |
各种计算类指标占比统计。 |
mac_fp16_ratio、mac_int8_ratio、vec_fp32_ratio、vec_fp16_ratio、vec_int32_ratio、vec_misc_ratio。 |
1 |
ACL_AICORE_PIPE_UTILIZATION |
计算单元和搬运单元耗时占比。 |
vec_ratio、mac_ratio、scalar_ratio、mte1_ratio、mte2_ratio、mte3_ratio、icache_miss_rate。 |
2 |
ACL_AICORE_MEMORY_BANDWIDTH |
外部内存读写类指令占比。 |
ub_read_bw、ub_write_bw、l1_read_bw、l1_write_bw、l2_read_bw、l2_write_bw、main_mem_read_bw、main_mem_write_bw。 |
3 |
ACL_AICORE_L0B_AND_WIDTH |
内部内存读写类指令占比。 |
scalar_ld_ratio、scalar_st_ratio、l0a_read_bw、l0a_write_bw、l0b_read_bw、l0b_write_bw、l0c_read_bw、l0c_write_bw。 |
4 |
ACL_AICORE_RESOURCE_CONFLICT_RATIO |
流水线队列类指令占比。 |
vec_bankgroup_cflt_ratio、vec_bank_cflt_ratio、vec_resc_cflt_ratio、mte1_iq_full_ratio、mte2_iq_full_ratio、mte3_iq_full_ratio、cube_iq_full_ratio、vec_iq_full_ratio、iq_full_ratio。 |
0x FF |
ACL_AICORE_NONE |
不采集。 |
无 |