昇腾社区首页
中文
注册
开发者
下载

慢节点诊断

功能说明

对于AI集群中出现的节点训练性能劣化现象,提供支持实时检测计算域问题或网络导致的慢节点,以便用户通过切换或其他方式隔离慢节点。

当前仅支持与ClusterDNodeD集成进行在线部署,请参见《MindCluster 集群调度用户指南》的“安装 > 安装部署”章节完成ClusterDNodeD部署。

  • 慢节点算法:基于训练场景关键性能指标,感知实时劣化状态;针对通信算子、计算算子同步关系,实现慢计算卡、慢通信域问题定界。
  • 慢节点清洗:对节点内部增量数据转化并清洗,生成清洗结果csv文件。
  • 慢节点调度:调度慢节点整体流程,控制数据清洗和慢节点算法。

使用示例

启动慢节点诊断任务。

  1. 为获取并行域信息,需在训练脚本的训练迭代循环中增加获取并行域信息的函数调用。以下示例为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()
    
  2. 完成使用前准备部署形态
  3. 使用kubectl apply -f ajob-2pod-16npu.yaml命令,创建慢节点诊断任务写入configMap。

  4. 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:关闭任务。

查询慢节点诊断结果

在创建慢节点任务后,可通过查询ClusterDNodeD的日志查看其诊断任务详情。

方式一:通过K8s日志查询集群侧慢节点诊断日志

  1. 通过kubectl get pods -n mindx-dl命令,查询启动的ClusterDNodeD节点数据。
  2. 再使用kubectl logs -n mindx-dl clusterd-7d5db546d8-kdslz | grep "got degradation, slow rank"查询日志数据。
  3. 若日志中出现如下图所示,则表明出现节点劣化。

方式二:通过落盘日志查询集群侧慢节点诊断日志

  1. 使用cat /var/log/mindx-dl.clusterd.clusterd.log | grep "got degradation, slow rank"命令查询日志数据。
  2. 若日志中出现如下图所示,则表明出现节点劣化。

方式三:查询节点侧的慢节点诊断日志。

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

已支持的慢节点网络故障

故障码

故障说明

故障级别

110001010

慢节点故障,一次性消息上报。

SubHealthFault:亚健康故障。

100001011

故障劣化已恢复。

NotHandleFault:暂不处理故障。