MindStudio Insight定位
MindStudio Insight提供了丰富的调优分析手段,可视化呈现真实软硬件运行数据,多维度分析性能数据,定位性能瓶颈点,支持百卡、千卡及以上规模的可视化集群性能分析。可以根据《MindStudio Insight工具用户指南》中的“基础操作 > 导入数据”,在MindStudio Insight中导入上一步采集的性能数据,根据下述流程使用可视化能力分析性能数据。
概览界面总览数据情况
可以通过概览页了解每个模块的具体内容。详细介绍请参见《MindStudio Insight工具用户指南》中的“系统调优 > 概览(Summary)”。
- 在“并行策略分析”模块,提供PP、TP、CP、DP、EP等不同并行策略分析视角:
- 点击复选框选择并行策略,通过方框标注识别并行分组。
- 选择不同的“数据类型”会展示对应的热力图,根据热力图找到存在性能问题的通信域,越偏向红色表示性能越差。
图1 并行策略分析 - 在计算/通信概览部分展示所选通信域下每张卡的计算、通信、空闲时间占比情况,并提供专家建议。如下图,由于391卡通信未覆盖时间显著小于其他卡,那么可以初步推断该集群中通信时间存在一些问题。图2 计算/通信概览各图例相关数据指标的含义如下:
表1 数据指标 图例
含义
总计算时间
昇腾设备上的内核时间总和。
纯计算时间
纯计算时间 = 总计算时间 – 通信时间(被覆盖)。
通信时间(被覆盖)
被覆盖的通信时长,即计算和通信同时进行的时长。
通信时间(未被覆盖)
未被覆盖的通信时长,即纯通信时长。
空闲时间
未进行计算或通信的时长。
不同的指标现象可以定界不同的性能问题:
- 计算问题:通常表现为通信域中总计算时间占比的极大值和极小值差异过大。如果某些计算卡的计算时间明显超出了正常范围,那很可能意味着这张卡承担了过于繁重的计算任务,比如要处理的数据量过大,或者模型计算的复杂程度过高,也有可能是卡本身的性能受到了限制。
- 调度问题:通常表现为通信域中空闲时间占比的极大值和极小值差异过大。如果计算卡的空闲时间过长,那就说明存在Host侧至Device侧的下发异常,这同样会对集群的性能造成不利影响。
- 通信问题:如果通信时间(未被覆盖)过长,那就表明计算和通信之间的协同出现了问题,可能对应多种情况。也许是通信方式存在优化空间,又或者是网络带宽不稳定,导致通信无法和计算良好配合。
计算问题
当数据指标现象指示为计算问题时,可以直接查看异常卡的算子数据,并与正常卡进行比较。此时可以使用MindStudio Insight的卡间性能比对功能,根据《MindStudio Insight工具用户指南》中的“系统调优 > 算子(Operator) > 使用说明”,设置两卡进入比对模式,并在算子界面查看结果。下图是一个存在计算问题的例子,可以看到在算子数量相等的前提下,MatMul类算子平均耗时明显增多,造成了两张单卡的计算时间差异。

根据经验,MatMul类算子很可能在特定shape下劣化,可以将分组方式切换到“计算算子名称和输入shape”,并根据总耗时排序,进一步定位在哪些shape下MatMul类算子的劣化最为严重。定位到算子问题后,可以找相关算子开发人员进一步确认问题原因。

调度问题
当数据指标现象指示为调度问题时,需要到时间线界面将异常卡和正常卡进行比较,进一步定位出现问题的算子,可以根据《MindStudio Insight工具用户指南》中的“系统调优 > 时间线(Timeline)”了解界面详情。进入时间线界面,选择HostToDevice连线类型,HostToDevice展示了CANN层算子到Ascend Hardware的算子的下发执行关系和CANN层算子到HCCL通信算子的下发执行关系,用于定位调度问题。
HostToDevice的连线通常有两种形态,倾斜和竖直。下图是一个存在调度问题的案例,如果HostToDevice连线如左侧所示,是倾斜的,说明此时间段调度任务安排合理,昇腾设备是满负荷执行计算和通信任务的。如果HostToDevice连线如右侧所示,是竖直的,说明昇腾设备此时快速执行完了CPU下发的任务,未满负荷进行计算和通信任务,这一般表示存在调度问题。此时,可以通过增大batch size、绑核、融合算子替换等方法进行调优。

通信问题
当数据指标现象指示为通信问题时,需要进入通信界面进一步分析。通信界面用于展示集群中全网链路性能以及所有节点的通信性能,通过集群通信与计算重叠时间的分析可以找出集群训练中的慢主机或慢节点。通常,我们会根据关键指标通信矩阵、通信时长来分析性能问题。
通信矩阵

上图是MindStudio Insight通信矩阵可视化界面,可以获取各个通信域下,卡间的带宽、传输大小、链路方式和传输时长情况等信息。
- 可以先查看传输大小,分析在这个集合通信中,每张卡的传输量是否存在差异,是否有分配不均的情况。
- 其次,再查看传输时长和带宽情况,如果不同卡间的传输时长和带宽数值异常或者差异过大,那都意味着通信域中存在异常链路。
通信时长
通信时长是指计算卡之间进行通信所花费的时间。导致通信耗时过长的因素很多,比如通信协议配置错误、传输数据量过大等,只有找到这些通信耗时过长的链路并妥善解决问题,才能让数据在计算卡之间更加顺畅地传输,进而提高集群的整体性能。
用户选择具体通信域后,即可在通信时长界面中查看通信域中各个计算卡的耗时汇总情况,以及通信算子的HCCL缩略图和通信时长的分布图,从而快速获得通信算子的相对位置关系以及详细通信数据。


上图是一份性能数据中某一个通信域内的通信耗时分析。从通信时长数据中,我们发现3卡的同步时间最长,4卡的同步时间最短,且同步时间差距较为明显。同步时间较长一般意味着这张卡在等待其它卡,而同步时间较短一般意味着其它卡在等待这张卡,据此可以初步定界出3卡是快卡,4卡是慢卡。