概览(Summary)界面提供通信域识别、划分和耗时拆解、分析功能。支持自动识别通信域,用户也可自行配置;支持按照通信域对比stage耗时、计算耗时和通信耗时,从而分析同一通信域内的切分是否均匀,是否存在通信慢卡和慢链路问题,帮助开发者快速识别问题。
概览(Summary)界面由基本信息(Base Info)(区域一)和并行策略分析(Parallel Strategy Analysis)(区域二)组成,如图1所示。
“Profiling数据采集时长”在TEXT场景和DB场景下可能存在差异,TEXT场景下,Profiling数据采集时长是以采集到数据的时间为起始,数据结束为终止的时间周期,DB场景下,Profiling数据采集时长是以数据采集开始时间为起始,数据采集结束时间为终止的时间周期,二者的微小差异对于Profiling数据分析无影响。
并行策略概览包括并行策略设置和并行策略图展示,并行策略参数解释如表1所示,并行策略以图形展示,选择图中卡片,可悬浮显示该卡的耗时详情。
中文字段 |
英文字段 |
说明 |
---|---|---|
算法 |
Algorithm |
默认为Megatron-LM(tp-dp-pp),还可选Megatron-LM(tp-pp-dp)。 Megatron-LM是一种用于训练大规模深度学习模型的分布式训练框架,通过高效利用计算资源和内存来加速深度学习模型的训练过程,其中tp、dp、pp表示逻辑卡号的编号顺序。 |
PP大小 |
PP Size |
流水线并行大小。 流水线并行(Pipeline Parallelism)通过将模型的不同层次分布在不同的卡上执行,在一个卡执行当前批次数据时,另一个卡可以处理下一个批次的数据。 |
TP大小 |
TP Size |
张量并行大小。 张量并行(Tensor Parallelism)是一种将模型参数划分成多个部分,并分布到不同卡上进行计算。 |
DP大小 |
DP Size |
数据并行大小。 数据并行(Data Parallelism)将训练集分成不同多个批次,分配到不同卡上进行计算。 |
数据类型 |
Data Type |
可按照数据类型展示并行策略图。
|
计算/通信概览(Computation/Communication Overview),计算及通信概览,柱状图展示计算或通信算子的迭代耗时数据,折线图展示计算或通信算子的耗时占比数据,专家建议(Advice)是对计算通信域内各卡的计算时间、通信时间(未被覆盖)和空闲时间进行数据分析后给出的建议,帮助开发者快速分析,界面参数解释请参见表2所示。
中文字段 |
英文字段 |
说明 |
---|---|---|
迭代ID |
Step |
迭代ID,下拉框支持选择某一个迭代或者所有迭代。 |
通信域 |
Rank Group |
节点ID,下拉框支持选择一个、多个或者所有节点。 |
排序方式 |
Order By |
横坐标将从左至右根据选中迭代下的集群节点按以下选项进行降序排列:
|
前 |
Top |
可通过配置Top参数值选择展示“排序方式”的TopN条数据。 |
Time(μs) |
Time(μs) |
左侧纵坐标表示时长,单位μs。计算方式如下: 总时间 = 预处理时间 + 纯计算时间 + 通信时间(被覆盖) + 通信时间(未被覆盖)+ 间隙时间,其中Preparing为数据预处理时间。 |
Ratio |
Ratio |
右侧纵坐标表示耗时占比,包括以下占比信息:
|
专家建议 |
Advice |
慢卡分析建议,是对计算通信域内各卡的计算时间、通信时间(未被覆盖)和空闲时间进行数据分析后给出的专家建议。 慢卡分析规则(以计算时间为例):如果通信域内各卡的计算时间(最大值-最小值)/各卡总时间(计算时间+通信时间(未被覆盖)+空闲时间)的平均值大于5%,说明计算时间有异常。 |
中文字段 |
英文字段 |
说明 |
---|---|---|
加速器核 |
Accelerator Core |
AI加速核类型,包括AI Core、AI CPU等。 |
加速器核时长(μs) |
Accelerator Core Durations(μs) |
加速核的总耗时。 |
名称 |
Name |
算子名称。 |
类型 |
Type |
算子类型。 |
开始时间(ms) |
Start Time(ms) |
算子执行开始时间。 |
时长(μs) |
Duration(μs) |
当前算子执行耗时。 |
等待时间(μs) |
Wait Time(μs) |
算子执行等待时间。 |
Block数量 |
Block Dim |
运行切分数量,对应任务执行时的核数。 |
输入Shapes |
Input Shapes |
算子输入Shape。 |
输入数据类型 |
Input Data Types |
算子输入数据类型。 |
输入格式 |
Input Formats |
算子输入数据格式。 |
输出Shapes |
Output Shapes |
算子输出Shape。 |
输出数据类型 |
Output Data Types |
算子输出数据类型。 |
输出格式 |
Output Formats |
算子输出数据格式。 |
中文字段 |
英文字段 |
说明 |
---|---|---|
加速器核 |
Accelerator Core |
AI加速核类型,包括AI Core、AI CPU等。 |
通信时长(未被覆盖)(μs) |
Communication(Not Overlapped) Durations(μs) |
未被覆盖的通信时长,即纯通信时长。 |
通信时长(被覆盖)(μs) |
Communication(Overlapped) Durations(μs) |
被覆盖的通信时长。 |
名称 |
Name |
通信算子名称。 |
类型 |
Type |
通信算子类型。 |
开始时间(ms) |
Start Time(ms) |
通信算子执行开始时间。 |
时长(μs) |
Duration(μs) |
当前通信算子执行耗时。 |
等待时间(μs) |
Wait Time(μs) |
通信算子执行等待时间。 |
中文字段 |
英文字段 |
说明 |
---|---|---|
迭代ID |
Step |
迭代ID,下拉框支持选择某一个迭代。 |
Stage |
Stage |
流水线并行分组,下拉框支持选择分组,与并行策略区域流水线并行的分组对应。 |
Stage Time |
Stage Time |
硬件节点实际计算时间。 流水线并行时,stage时间表示的是节点运行除receive算子时间外的其他耗时。 |
Bubble Time |
Bubble Time |
receive算子时间,表示硬件节点执行过程中,receive算子耗时总和。 |