Developers
Download

msprof(timeline数据总表)

产品支持情况

AI处理器与昇腾产品的对应关系,请参见《昇腾产品形态说明

AI处理器类型

是否支持

Ascend 950PR / Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

timeline数据总表文件为msprof_*.json。

msprof_*.json在“chrome://tracing”中展示如下。

图1 timeline汇总展示

图1所示,timeline汇总数据主要展示如下区域:

  • 区域1:应用层数据,包含上层应用运行的耗时信息,需要使用msproftx采集或其他框架场景采集。
  • 区域2:CANN层数据,主要包含Runtime等组件以及Node(算子)的耗时数据。
  • 区域3:底层NPU数据,主要包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、Communication和Overlap Analysis通信数据以及其他AI处理器系统数据。
  • 区域4:展示timeline中各算子、接口的详细信息(单击各个timeline时展示)。
  • timeline数据总表的数据在性能数据文件参考均有对应数据的详细介绍。
  • 上图中各区域的数据与采集场景有关,例如区域1仅在msproftx或其他框架场景采集时生成;Communication和Overlap Analysis通信数据仅在多卡、多节点或集群等存在通信的场景可采集到数据等。请以采集数据实际情况为准。
  • msprof_*.json展示的数据是迭代内的数据,迭代外的数据不展示。

查看算子下发方向

在tracing中查看.json文件时,开启“Flow events”下的选项后,应用层算子到NPU算子之间通过连线方式展示下发到执行的对应关系。如图2所示。

主要包括的对应关系有:

  • async_npu:应用层算子 > Ascend Hardware的NPU算子的下发执行关系。
  • MsTx:推理训练进程打点任务 > Ascend Hardware的NPU打点算子的下发执行关系。调用aclprofMarkEx接口打点时生成。
  • async_task_queue:应用层Enqueue > Dequeue的入队列到出队列对应关系。
  • HostToDevice:CANN层Node(算子) > Ascend Hardware的NPU算子的下发执行关系(Host到Device)。
  • HostToDevice:CANN层Node(算子) > Communication通信算子的下发执行关系(Host到Device)。
  • fwdbwd:前向API > 反向API。
  • 由于软件测量的AI处理器频率与真实频率有误差,以及Host与Device的时间同步误差,可能会出现下层算子因错位而无法连线的问题。
  • 各层的对应关系是否呈现与对应采集场景是否采集该数据有关,请以实际情况为准。
图2 算子映射关系

通过单击连线两端的算子或接口,即可查看算子下发的方向。如图3所示。

图3 算子信息

其中Event(s)列查看该算子或接口的出入方向,Link列查看映射关系两端的信息。

查看AI Core频率

支持的型号:

  • Atlas 200I/500 A2 推理产品
  • Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品

msprof_*.json下的“AI Core Freq”层级展示AI Core芯片在执行AI任务的过程中频率的变化情况,如图4所示。

图4 查看AI Core频率

在148089.72045898438时刻下,AI Core处于高频状态,而在170178.44116210938时刻频率降低,那么在该时间段下AI任务的性能必然下降。AI Core芯片可能因温度升高,触发保护机制,降低频率;也可能因当前无AI任务运行,AI Core进入低功耗状态而降频。

在发生变频时,实际变频时间与软件监测到的时间存在0~1ms的延时,该延时可能导致变频前后统计出的算子执行时间与实际不符。

SIO数据分析

支持的型号:

  • 对于 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ,该数据均为0,不具有参考性。
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品
  • Ascend 950PR / Ascend 950DT

msprof_*.json下的“SIO”层级展示通道间传输带宽的信息。

Atlas A3 训练系列产品 / Atlas A3 推理系列产品 中,SIO数据的每条流使用两条虚拟通道,die 0和die 1。

图5 SIO( Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Ascend 950PR / Ascend 950DT 中,SIO数据是每条流使用四条物理通道U-DIE0、U-DIE1、D-DIE0、D-DIE1,其中D-DIE表示Die-to-Die也就是两个DIE间互连,U-DIE表示Die-to-Unit也就是DIE与Unit互连。而D-DIE0、D-DIE1为互连关系,数据相同,所以只采集一个D-DIE信息即可;U-DIE0与U-DIE1则是两个DIE分别连接两个Unit,所以分别采集两个U-DIE信息。

图6 SIO( Ascend 950PR / Ascend 950DT

图中色块横坐标对应时间Time,单位ms,纵坐标对应带宽Value,单位MB/s。

表1 字段说明

字段名

字段含义

dat_rx

数据流通道的接收带宽。

dat_tx

数据流通道的发送带宽。

req_rx

请求流通道的接收带宽。

req_tx

请求流通道的发送带宽。

rsp_rx

回应流通道的接收带宽。

rsp_tx

回应流通道的发送带宽。

snp_rx

侦听流通道的接收带宽。

snp_tx

侦听流通道的发送带宽。

QoS数据分析

msprof_*.json下的“QoS”层级展示设备QoS带宽信息。

支持的型号:

  • Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品
  • Ascend 950PR / Ascend 950DT
图7 QoS OTHERS

图中色块横坐标对应时间Time,单位ms,纵坐标对应带宽Value,单位MB/s。

计算及通信算子融合MC²

支持的型号:

  • Atlas 推理系列产品
  • Atlas A2 训练系列产品 / Atlas A2 推理系列产品

存在计算和通信算子融合的场景。

MC²:Matrix Computation & Communication,是CANN中一系列计算通信融合算子的统称,把原本串行的两个通信、计算算子融合到一起,内部通过Tiling切分成多轮通信计算,轮次间形成流水并行,从而掩盖通信耗时,提升整体执行性能。

具体算子一般以原计算通信算子名称按照依赖关系排列命名。比如AllgatherMatmul融合算子代表通信算子Allgather和计算算子Matmul融合,Matmul依赖Allgather输出。

通信轮次commTurn:即融合算子Tiling切分的份数。一般值为总数据量/单次通信量。

MC²实现中,内部分别在计算流、通信流上加载两个算子,两个算子内部实现协同完成流水并行执行:

  • 计算流对应算子名称为融合算子名称,比如AllgatherMatmul。
  • 通信流对应算子名称为融合算子名称+Aicpu,比如AllgatherMatmulAicpu。

通信算子根据融合算子Tiling切分执行多个通信轮次,每轮的基本流程是,根据计算算子下发的通信参数,执行集合通信算法,编排好具体任务,下发给硬件执行,并等待执行完成,通知计算侧执行结果。

  • 通信API场景暂不支持融合MC²,通信API场景包括:低bit通信MatmulAllReduce算子以及自定义的使用通信API的MC²算子。
  • Timeline的Communication部分仅呈现Level0级别的数据。

MC²性能数据结果示例如下:

图8 MC²

图8展示了MatmulAllReduceAddRmsNormAicpu融合算子,内部各阶段含义介绍如表2所示。

表2 字段说明

字段名

字段含义

StartServer

KFC初始化时间。

TaskWaitRequest

等待计算算子下发通信参数。

TaskOrchestration

通信算子内部执行集合通信算法,编排执行任务耗时。

TaskLaunch

任务下发耗时。

TaskExecute

等待硬件任务执行完成耗时。

Finalize

KFC结束流程。

电压数据分析

msprof*.json下的“Voltage Info”层级展示设备电压变压信息。

支持的型号:

  • Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品

变压特性曲线结果示例如下:

图9 电压数据分析

图9展示了变压特性曲线,图中色块横坐标对应时间,单位ms,纵坐标对应电压Value,单位mV。各字段含义介绍如表3所示。

表3 字段说明

字段名

字段含义

Aicore Voltage(mV)

AI Core电压,单位mV。

Bus Voltage(mV)

互联总线电压,单位mV。

DPU数据分析

msprof_*.json下的“DPU”层级展示在DPU下算子的执行耗时信息。

支持的型号:

  • Ascend 950PR / Ascend 950DT
图10 DPU数据(在DPU下执行task算子)
表4 字段说明(在DPU下执行task算子)

字段名

字段含义

Thread Id

线程ID。

Physic Stream Id

物理流ID。

Task Id

Task任务的ID。

Task Type

任务类型。

图11 DPU数据(在DPU下执行HCCL算子)
表5 字段说明(在DPU下执行HCCL算子)

字段名

字段含义

Thread Id

线程ID。

Physic Stream Id

物理流ID。

Task Id

Task任务的ID。

OP Type

算子类型。

AI CPU Device Id

对应关联的AI CPU的设备ID。

AI CPU Task Id

对应关联的AI CPU的Task任务ID。

Plane Id

网络平面ID。

Notify Id

集合通信任务等待的ID。

Duration Estimated(us)

预估任务持续时间

Src Rank

源Rank。

Dst Rank

目的Rank。

对于 Ascend 950PR / Ascend 950DT 本地片内操作显示为与src rank一致的数值。

对于其他产品若此字段显示为4294967295,则为本地片内操作。

Transport Type

传输类型,包含:LOCAL、SDMA、RDMA、UB和ROCE等。

Size(Byte)

数据量,单位Byte。

Bandwidth(GB/s)

带宽大小,单位GB/s。

Data Type

数据格式。

Link Type

链路类型,包含:HCCS、PCIE、ROCE、UBoE、SIO、HCCS_SW、STANDARD_ROCE、UB和ON_CHIP等。

Rdma Type

RDMA类型,包含:RDMASendNotify、RDMASendPayload等。

Fusion Task数据分析

msprof_*.json下的“Fusion Task”层级展示Fusion任务数据。

支持的型号:

  • Ascend 950PR / Ascend 950DT
图12 Fusion Task
表6 字段说明

字段名

字段含义

task_id

Fusion任务的ID。

acc_id

加速器的ID

task_type

执行该Task的加速器类型,对于Fusion任务,固定为FUSION。task_time为l0时,不采集该字段,显示为N/A。

fusion_task_type

Fusion小任务的加速器类型,包含AICORE、AIVECTORCORE、AICPU等。task_time为l0时,不采集该字段,显示为N/A。

SIMT数据分析

msprof_*.json下的“Ascend Hardware”层级中的部分算子为SIMT算子,主要通过Grid Dim和Block Dim字段体现SIMT编程模型的线程层次结构。

支持的型号:

  • Ascend 950PR / Ascend 950DT
表7 字段说明

字段名

字段含义

Model ID

模型ID。

Task Type

执行该Task的加速器类型,对于SIMT算子,当前仅包含AI_VECTOR_CORE。task_time为l0时,不采集该字段,显示为N/A。

Physic Stream Id

物理流ID。

Task Id

Task任务的ID。

Batch Id

对应任务的Batch ID。

Subtask Id

对应任务的Subtask ID。

connection_id

CANN层API向NPU算子下发时二者关联的标识。

Grid Dim

体现SIMT编程模型的线程块网络(Grid)中启用的线程块个数,同一时刻一个AIV核只执行一个线程块任务。

Block Dim

体现SIMT编程模型的线程块(Thread Block)启用的线程个数,一个线程块最多可以启用2048个线程。

Ascend Hardware采集间隙说明

支持的型号:

  • Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品
  • Ascend 950PR / Ascend 950DT
图13 Ascend Hardware采集间隙

如上图所示在Ascend Hardware层级中,当出现MEM_WAIT_VALUE或CAPTURE_WAIT时,后续的timeline会出现一段空白的间隙,这段间隙包含两个事件:

  • 一是为了减少Profiling数据量,而自动关闭了Profiling采集,这段时间的性能数据是重复执行MEM_WAIT_VALUE或CAPTURE_WAIT,故只保留了前面的若干条。
  • 二是在出现MEM_WRITE_VALUE或CAPTURE_RECORD到正常采集算子耗时的时间段,这段间隙为重新启动Profiling的时间。这段间隙无性能参考意义,正常情况下未使用Profiling采集时,这段间隙实际不存在。