界面介绍
功能说明
在昇腾异构计算架构中,MindStudio Insight工具以时间线(Timeline)的呈现方式将训练/推理过程中的host、device上的运行详细情况平铺在时间轴上,直观呈现host侧的API耗时情况以及device侧的task耗时,并将host与device进行关联呈现,帮助用户快速识别host瓶颈或device瓶颈,同时提供各种筛选分类、专家建议等功能,支撑用户进行深度调优。
界面展示
- 区域一:工具栏,包含常用快捷按钮,从左至右依次为标记列表、过滤(支持按卡或按泳道过滤展示)、搜索、连线事件、重置缩放(页面复原)和时间轴缩小放大按钮。
- 区域二:时间线树状图,TEXT场景和DB场景显示会有所不同,具体泳道信息请参见表1。
- TEXT场景:显示集群场景下各设备的分层信息,以Rank维度显示分层信息,一层级为Rank ID,二层级为进程或专项分层,三层级为线程等名称。二层级包括Python层数据(包含PyTorch和打点数据的耗时信息)、CANN层数据(包含AscendCL、GE和Runtime组件的耗时数据)、底层NPU数据(包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、Communication和Overlap Analysis通信数据、Memory内存数据以及其他昇腾AI处理器系统数据)和AI Core Freq等层级,层级内容展示随导入的数据而变化。
- DB场景:显示各机器下的信息,一层级为机器名称,二层级为Host和Rank ID。Host层级是按照进程与线程级维度展示PyTorch和CANN的数据;Rank ID层级包括底层NPU数据(包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、Communication和Overlap Analysis通信数据、Memory内存数据以及其他昇腾AI处理器系统数据)和AI Core Freq等层级,且卡下属层级内容的展示随导入的数据而变化。
- 区域三:图形化窗格,展示的数据是迭代内的数据,图形化窗格对应时间线树状图,逐行对时间线进行图形化展现,包括上层应用算子、各组件及接口的执行序列和执行时长。
- 区域四:数据窗格,统计信息或算子详情信息展示区,选中详情(Slice Detail)为选中单个算子的详细信息、选中列表(Slice List)为某一泳道选中区域的算子列表信息、系统视图(System View)为某类算子的汇总信息、以及发现(Find)为搜索的算子信息。
一层级泳道名称 |
二层级泳道名称 |
说明 |
---|---|---|
Host |
process |
仅db格式文件支持展示此泳道,在二层级process泳道下存在三层级泳道Thread,四层级泳道pytorch、CANN和MsTx,分别展示的是PyTorch框架下上层应用线程运行的耗时信息、CANN框架下线程运行的耗时信息和打点信息。 |
Python |
Thread |
应用层数据,每个子泳道Thread包含上层应用线程运行的耗时信息,需要使用PyTorch Profiler或msproftx采集。仅支持在TEXT格式文件下展示该泳道。 |
CANN |
Thread |
CANN层数据,每个子泳道Thread主要包含AscendCL、GE、Runtime组件以及Node(算子)的耗时数据。 如果是db格式文件,二层级泳道名称可能包含acl,model,node,hccl,runtime,op,queue,trace,mstx等。 |
MindSpore |
Thread |
在MindSpore场景下,展示当前Thread下运行的阶段耗时。 |
Scope Layer |
Thread |
在MindSpore场景下,展示当前Thread网络层级的执行耗时。 |
Python GC |
Python GC |
在PyTorch场景下,profiler采集数据时开启了GC检测功能后,如果在采集的时间周期内发生了GC事件,则采集到的数据中会记录GC事件并显示在Python GC泳道中。 |
Ascend Hardware |
Stream <id> |
底层NPU数据,任务调度信息数据,记录AI任务运行时,各个Task在不同加速器下的执行耗时。 |
Step Trace |
迭代轨迹数据。仅支持在TEXT格式文件下展示该泳道。 |
|
HBM |
HBM <id>/Read |
HBM内存读取速率,单位为MB/s。 |
HBM <id>/Write |
HBM内存写入速率,单位为MB/s。 |
|
DDR |
Read |
DDR内存读取速率。 |
Write |
DDR内存写入速率。 |
|
LLC |
LLC <id> Read/Hit Rate LLC <id> Write/Hit Rate |
三级缓存读写速率数据,三级缓存读取、写入时的吞吐量。 |
LLC <id> Read/Throughput LLC <id> Write/Throughput |
三级缓存读取、写入时的命中率。 |
|
NPU_MEM |
APP/DDR |
进程级DDR内存占用,单位KB。 |
APP/HBM |
进程级HBM内存占用,单位KB。 |
|
APP/MEMORY |
进程级DDR和HBM内存占用和,单位KB。 |
|
Device/DDR |
设备级DDR内存占用,单位KB。 |
|
Device/HBM |
设备级HBM内存占用,单位KB。 |
|
Device/MEMORY |
设备级DDR和HBM内存占用和,单位KB。 |
|
Communication |
Group <id> Communication |
通信域下的通信算子。一个卡(Rank)可以存在于不同的通信域中,一个Group标识当前卡在当前通信域的行为。 |
Plane <id> |
集合通信算子信息。网络平面ID,对多个收发通信链路的并行调度执行,每个Plane就是一个并发通信维度。 |
|
Stars Soc Info |
L2 Buffer Bw Level |
SoC传输带宽信息,L2 Buffer带宽等级信息。 |
Mata Bw Level |
Mata带宽等级信息。 |
|
acc_pmu |
Accelerator {accId}/readBwLevel |
DVPP和DSA加速器读带宽。 |
Accelerator {accId}/readOstLevel |
DVPP和DSA加速器读并发。 |
|
Accelerator {accId}/writeBwLevel |
DVPP和DSA加速器写带宽。 |
|
Accelerator {accId}/writeOstLevel |
DVPP和DSA加速器写并发。 |
|
Overlap Analysis |
Communication |
通信时间。 |
Communication(Not Overlapped) |
未被计算掩盖的通信时间。 |
|
Computing |
计算时间。 |
|
Free |
Device侧既不在计算也不在通信的时间。按Step维度拆解时,会被进一步区分为Preparing和Free,其中Preparing在做数据预处理,加载拷贝等操作。 |
|
AI Core Utilization |
Average |
AI Core指令占比数据的均值。AI Core Utilization泳道仅支持在TEXT格式文件下展示。 |
Core <id> |
各AI Core在执行Task的total cycle(从AI Core开始执行算子的第一条指令开始计数,到最后一条指令执行完成)占比情况。 |
|
AI Core Freq |
AI Core Freq |
展示AI Core芯片在执行AI任务的过程中频率的变化情况。 AI Core Freq泳道仅支持展示 |
SIO |
dat_rx、dat_tx |
数据流通道的接收、发送带宽。SIO泳道仅支持在TEXT格式文件下展示。 SIO泳道仅支持展示 |
req_rx、req_tx |
请求流通道的接收、发送带宽。 |
|
rsp_rx、rsp_tx |
回应流通道的接收、发送带宽。 |
|
snp_rx、snp_tx |
侦听流通道的接收、发送带宽。 |
|
QoS |
QoS <id>:OTHERS |
设备QoS带宽信息。QoS泳道仅支持在TEXT格式文件下展示。 |
NIC |
Port <id>/Rx Port <id>/Tx |
泳道名称会根据导入的数据不同而变化。 |
RoCE |
Port <id>/Rx Port <id>/Tx |
RoCE通信接口带宽数据。RoCE泳道仅支持在TEXT格式文件下展示。 |
PCIe |
PCIe_cpl |
接收写请求的完成数据包,单位MB/s。Tx表示发送端,Rx表示接收端。 |
PCIe_nonpost |
PCIe Non-Posted数据传输带宽,单位MB/s。Tx表示发送端,Rx表示接收端。 |
|
PCIe_nonpost_latency |
PCIe Non-Posted模式下的传输时延,单位us。Tx表示发送端,Rx表示接收端。PCIe_nonpost_latency无Rx,取固定值0。 |
|
PCIe_post |
PCIe Posted数据传输带宽,单位MB/s。Tx表示发送端,Rx表示接收端。泳道名称会根据导入的数据不同而变化。 |
|
HCCS |
txThroughput rxThroughput |
HCCS集合通信带宽数据,展示接收带宽和发送带宽,单位MB/s。 |
biu_group |
Bandwidth Read |
BIU总线接口单元读取指令时的带宽。biu_group泳道仅支持在TEXT格式文件下展示。 |
Bandwidth Write |
BIU总线接口单元写入指令时的带宽。 |
|
Latency Read |
BIU总线接口单元读取指令时的时延。 |
|
Latency Write |
BIU总线接口单元写入指令时的时延。 |
|
aic_core_group |
Cube |
矩阵类运算指令在本采样周期内的cycle数和占比。aic_core_group泳道仅支持在TEXT格式文件下展示。 |
Mte1 |
L1->L0A/L0B搬运类指令在本采样周期内的cycle数和占比。 |
|
Mte2 |
片上内存->AICORE搬运类指令在本采样周期内的cycle数和占比。 |
|
Mte3 |
AICORE->片上内存搬运类指令在本采样周期内的cycle数和占比。 |
|
aiv_core_group |
Mte1 |
L1->L0A/L0B搬运类指令在本采样周期内的cycle数和占比。aiv_core_group泳道仅支持在TEXT格式文件下展示。 |
Mte2 |
片上内存->AICORE搬运类指令在本采样周期内的cycle数和占比。 |
|
Mte3 |
AICORE->片上内存搬运类指令在本采样周期内的cycle数和占比。 |
|
Scalar |
标量类运算指令在本采样周期内的cycle数和占比。 |
|
Vector |
向量类运算指令在本采样周期内的cycle数和占比。 |
|
Stars Chip Trans |
PA Link Rx |
PA流量接收等级。当有集合通信带宽时,不建议参考该字段值,该字段为粗粒度的统计值。Stars Chip Trans泳道仅支持在TEXT格式文件下展示。 |
PA Link Tx |
PA流量发送等级。当有集合通信带宽时,不建议参考该字段值,该字段为粗粒度的统计值。 |
|
PCIE Read Bandwidth |
PCIe读带宽。当有PCIe带宽时,不建议参考该字段值,该字段为粗粒度的统计值。 |
|
PCIE Write Bandwidth |
PCIe写带宽。当有PCIe带宽时,不建议参考该字段值,该字段为粗粒度的统计值。 |
|
CPU Usage |
CPU <id> |
Host侧CPU利用率数据。 |
Memory Usage |
Memory Usage |
Host侧内存利用率数据。 |
Disk Usage |
Disk Usage |
Host侧磁盘I/O利用率数据。 |
Network Usage |
Network Usage |
Host侧网络I/O利用率数据。 |
OS Runtime API |
Thread |
Host侧syscall和pthreadcall数据。OS Runtime API泳道仅支持在TEXT格式文件下展示。 |

通过观察时间线视图各个层级上的耗时长短、间隙等判断对应组件和算子是否存在性能问题,如算子下发是否存在瓶颈、是否存在高耗时的kernel以及是否存在冗余的转换类算子。