Ascend PyTorch Profiler接口采集性能数据说明

采集数据目录说明

原始的性能数据落盘目录结构为:

图1 trace_view

图1所示,trace数据主要展示如下区域:

图2 trace_view(record_shapes)

打开record_shapes开关时,trace_view中的上层应用算子会显示Input Dims和Input type信息。

图3 trace_view(with_stack)

打开with_stack开关时,trace_view中的上层应用算子会显示Call stack信息。

图4 kernel_details

kernel_details.csv文件由torch_npu.profiler.ProfilerActivity.NPU开关控制,文件包含在NPU上执行的所有算子的信息,若用户前端调用了schedule进行step打点,则会增加Step Id字段。字段信息如表1所示。

当配置experimental_config的aic_metrics参数时,kernel_details.csv文件将根据experimental_config参数配置增加对应字段,主要增加内容请参见experimental_config扩展参数

表1 kernel_details

字段名

字段解释

Step Id

迭代ID。

Name

算子名。

Type

算子类型。

Accelerator Core

AI加速核类型,包括AI Core、AI CPU等。

Start Time(us)

算子执行开始时间,单位us。

Duration(us)

当前算子执行耗时,单位us。

Wait Time(us)

算子执行等待时间,单位us。

Block Dim

运行切分数量,对应任务执行时核数。

Input Shapes

算子输入Shape。

Input Data Types

算子输入数据类型。

Input Formats

算子输入数据格式。

Output Shapes

算子输出Shape。

Output Data Types

算子输出数据类型。

Output Formats

算子输出数据格式。

图5 memory_record

memory_record.csv文件由profile_memory开关控制,文件包含PTA和GE的内存占用记录,主要记录PTA和GE组件申请的内存及占用时间。字段信息如表2所示。

表2 memory_record

字段名

字段解释

Component

组件,包含PTA和GE组件。

Timestamp(us)

时间戳,记录内存占用的起始时间。

Total Allocated(MB)

内存分配总额。

Total Reserved(MB)

内存预留总额。

Device Type

设备类型和设备ID,仅涉及NPU。

图6 operator_memory

operator_memory.csv文件由profile_memory开关控制,文件包含算子的内存占用明细,主要记录算子在NPU上执行所需内存及占用时间,其中内存由PTA和GE申请。字段信息如表3所示。

表3 operator_memory

字段名

字段解释

Name

算子名称。

Size(KB)

算子占用内存大小,单位KB。

Allocation Time(us)

内存分配时间,单位us。

Release Time(us)

内存释放时间,单位us。

Duration(us)

内存占用时间,单位us。

Allocation Total Allocated(MB)

算子内存分配时PTA和GE内存分配总额,单位MB。

Allocation Total Reserved(MB)

算子内存分配时PTA和GE内存占用总额,单位MB。

Release Total Allocated(MB)

算子内存释放时PTA和GE内存分配总额,单位MB。

Release Total Reserved(MB)

算子内存释放时PTA和GE内存占用总额,单位MB。

Device Type

设备类型和设备ID,仅涉及NPU。

图7 operator_details

operator_details.csv文件由torch_npu.profiler.ProfilerActivity.CPU开关控制,operator_details.csv文件包含信息如表4所示。

表4 operator_details

字段

说明

Name

算子名称。

Input Shapes

Shape信息。

Call Stack

函数调用栈信息。由with_stack字段控制。

Host Self Duration(us)

算子在Host侧的耗时(除去内部调用的其他算子),单位us。

Host Total Duration(us)

算子在Host侧的耗时,单位us。

Device Self Duration(us)

算子在Device侧的耗时(除去内部调用的其他算子),单位us。

Device Total Duration(us)

算子在Device侧的耗时,单位us。

Device Self Duration With AICore(us)

算子在Device侧执行在AI Core上的耗时(除去内部调用的算子),单位us。

Device Total Duration With AICore(us)

算子在Device侧执行在AI Core上的耗时,单位us。