慢节点诊断
功能说明
对于AI集群中出现的节点训练性能劣化现象,提供支持实时检测计算域问题或网络导致的慢节点,以便用户通过切换或其他方式隔离慢节点。
当前仅支持与ClusterD和NodeD集成进行在线部署,请参见《MindCluster 集群调度用户指南》的“安装 > 安装部署”章节完成ClusterD和NodeD部署。
- 慢节点算法:基于训练场景关键性能指标,感知实时劣化状态;针对通信算子、计算算子同步关系,实现慢计算卡、慢通信域问题定界。
- 慢节点清洗:对节点内部增量数据转化并清洗,生成清洗结果csv文件。
- 慢节点调度:调度慢节点整体流程,控制数据清洗和慢节点算法。
使用示例
启动慢节点诊断任务。
- 为获取并行域信息,需在训练脚本的训练迭代循环中增加获取并行域信息的函数调用。以下示例为PyTorch-MindSpeed场景,需在./mindspeed_llm/training/training.py文件增加如下加粗字段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
def train(forward_step_func, model, optimizer, opt_param_scheduler, train_data_iterator, valid_data_iterator, process_non_loss_data_func, config): …… if is_profile_enabled(): prof = get_profiler() prof.start() m_iter = 0 while iteration < args.train_iters: …… args.curr_iteration = iteration loss_dict, skipped_iter, grad_norm, num_zeros_in_grad = \ train_step(forward_step_func, train_data_iterator, model, optimizer, opt_param_scheduler, config) iteration += 1 m_iter += 1 if m_iter == 5: from taskd.python.adaptor.pytorch.group_info import dump_group_info dump_group_info() batch_size = mpu.get_data_parallel_world_size() * \ args.micro_batch_size * \ get_num_microbatches()
- 完成使用前准备和部署形态。
- 使用kubectl apply -f ajob-2pod-16npu.yaml命令,创建慢节点诊断任务写入configMap。

- ajob-2pod-16npu.yaml内容如下所示,各回显数据说明请见表1。

表1 YAML文件回显说明 字段名
默认值
说明
jobNamespace
default
任务所在的namespace。
jobName
-
任务名。
normalNumber
20
计算初始阈值(正常数量)。
nSigma
3个
设置σ的个数以计算其上下界。
degradationPercentage
0.3
阈值,劣化的百分比,0.3表示劣化30%。
nConsecAnomaliesSignifySlow
3次
设置异常次数,连续出现多次异常后才进行检测。
nSecondsDoOneDetection
30秒
设置间隔时长,进行检测,单位为秒。
clusterMeanDistance
1.3
聚类后,两个类别之间的阈值距离(mean1、mean2)。
cardOneNode
16张卡
一个节点的卡片数量。
slowNode
默认为1,开启任务。
是否开启任务。
- 1:开启任务。
- 0:关闭任务。
查询慢节点诊断结果
在创建慢节点任务后,可通过查询ClusterD和NodeD的日志查看其诊断任务详情。
方式一:通过K8s日志查询集群侧慢节点诊断日志
- 通过kubectl get pods -n mindx-dl命令,查询启动的ClusterD和NodeD节点数据。

- 再使用kubectl logs -n mindx-dl clusterd-7d5db546d8-kdslz | grep "got degradation, slow rank"查询日志数据。
- 若日志中出现如下图所示,则表明出现节点劣化。

方式二:通过落盘日志查询集群侧慢节点诊断日志
- 使用cat /var/log/mindx-dl.clusterd.clusterd.log | grep "got degradation, slow rank"命令查询日志数据。
- 若日志中出现如下图所示,则表明出现节点劣化。

方式三:查询节点侧的慢节点诊断日志。
使用kubectl logs -n mindx-dl node-9ld8k | grep "is degradation"命令进行查询,若日志中出现如下图所示数据,则表明出现节点劣化。

已支持的慢节点网络故障
|
故障码 |
故障说明 |
故障级别 |
|---|---|---|
|
110001010 |
慢节点故障,一次性消息上报。 |
SubHealthFault:亚健康故障。 |
|
100001011 |
故障劣化已恢复。 |
NotHandleFault:暂不处理故障。 |