国产AI加速卡集群运维:10万卡超算节点监控与故障排查

国产AI加速卡集群的运维挑战

国产AI加速卡集群正进入大规模部署阶段,全国首个10万卡AI超集群已在国家超算互联网郑州核心节点投用,日均处理作业超15万个。相比传统GPU集群,国产加速卡在驱动层、固件管理、拓扑感知等方面存在差异,运维团队需要建立针对性的监控体系和故障排查流程。本文聚焅10万卡规模下的硬件监控、作业调度异常诊断和日常维护操作。

集群拓扑感知与资源分配策略

10万卡集群通常采用多级交换网络拓扑:

1. 机柜级:每机柜8台服务器,每台8张加速卡,单柜64卡

2. 交换级:4个机柜接入1台叶交换机,256卡构成一个调度单元

3. 集群级:多个调度单元通过脊交换机互联

作业调度时需考虑拓扑亲和性,将多卡训练任务尽量调度在同一交换域内,减少跨交换机通信开销。Slurm调度器可通过switch_param插件实现拓扑感知调度:

SwitchType=switch/nic

TopologyParam=SwitchAsNodeRank

在作业脚本中指定拓扑约束:

#SBATCH --switches=1@640

#SBATCH --constraint=ascend910b

这将作业限制在640卡以内的单一交换域内运行。

硬件状态监控体系搭建

国产加速卡的监控依赖厂商提供的npu-smi工具(华为昇腾系列)或hy-smi工具(海光DCU系列)。以下以昇腾910B为例:

采集关键指标并接入Prometheus:

import subprocess, re, time

def collect_npu_metrics():

result = subprocess.run(["npu-smi", "info"], capture_output=True, text=True)

metrics = {}

lines = result.stdout.strip().split("\\n")

for line in lines:

if "NPU ID" in line:

npu_id = line.split(":")[-1].strip()

if "Temperature" in line:

metrics[f"npu_{npu_id}_temp"] = float(re.search(r"(\\d+)C", line).group(1))

if "Memory-Usage" in line:

used, total = re.search(r"(\\d+)/(\\d+)", line).groups()

metrics[f"npu_{npu_id}_mem_usage"] = int(used) / int(total) * 100

if "Power" in line:

metrics[f"npu_{npu_id}_power"] = float(re.search(r"(\\d+\\.\\d+)W", line).group(1))

return metrics

将上述采集脚本封装为Prometheus Node Exporter Textfile Collector,每30秒刷新一次指标文件。

常见故障模式与排查流程

故障1:加速卡掉卡(NPU Not Found)

症状:npu-smi info中部分卡位显示为空或N/A,Slurm作业报cuda(npu) not available

排查步骤:

1. 检查dmesg中是否有PCIe链路重置日志:dmesg | grep -i "pcie|aer|npu"

2. 执行lspci -vvv -s <PCI_SLOT>查看PCIe链路状态,确认LnkSta是否降速

3. 尝试软重置:npu-smi set -t reset -i <NPU_ID>

4. 软重置无效则整机重启;重启后仍掉卡,进入BIOS检查PCIe Slot配置,或更换Riser卡

故障2:训练任务OOM(Out of Memory)

10万卡场景下OOM通常不是单卡显存不足,而是梯度累积配置错误导致allreduce阶段内存溢出。

排查步骤:

1. 查看作业日志中的内存峰值:grep -i "oom|out of memory|kill" /var/log/slurm/slurmd.log

2. 确认并行策略配置:Megatron框架中--tensor-model-parallel-size--pipeline-model-parallel-size的乘积是否等于分配的卡数

3. 检查梯度累积步数:--gradient-accumulation-steps设置过高会导致激活值堆积

4. 监控npu-smi中的HBM使用曲线,判断是稳定增长还是突然跳变

故障3:HCCL通信超时

HCCL(Huawei Collective Communication Library)是多卡通信的基础库,超时往往由网络拥塞或路由配置错误引起。

排查步骤:

1. 开启HCCL调试日志:export HCCL_DEBUG=INFO

2. 查看超时发生的通信原语(AllReduce/AllGather/ReduceScatter)

3. 用hccn_tool检查RoCE链路状态:hccn_tool -i 0 -link -s

4. 排查是否有跨交换域的作业调度导致长距离通信

固件与驱动批量升级方案

10万卡集群的固件升级是高危操作,需严格分批执行:

1. 预检查:确认升级包MD5、记录当前版本号、备份当前驱动配置

2. 灰度发布:按交换域分批升级,每批640卡,升级后运行标准训练benchmark验证

3. 回滚机制:每个交换域升级前创建驱动快照:rpm -qa | grep npu > npu_pkg_list_<SWITCH_ID>.txt

4. 并行执行:使用Ansible批量推送升级命令,控制并发度为8:

ansible npu_workers -m shell -a "bash /opt/npu_upgrade.sh" -f 8 --batch-size 8

每批完成后自动执行健康检查脚本,全部通过后进入下一批。

日常巡检自动化脚本

编写巡检脚本定期检查集群健康状态:

#!/bin/bash

# npu_cluster_healthcheck.sh

FAILED_NODES=""

for node in $(scontrol show hostname $SLURM_NODELIST); do

ssh $node "npu-smi info -t board" > /dev/null 2>&1

if [ $? -ne 0 ]; then

FAILED_NODES="$FAILED_NODES $node"

fi

done

if [ -n "$FAILED_NODES" ]; then

echo "[ALERT] NPU异常节点: $FAILED_NODES"

fi

结合Cron每天凌晨3点执行,异常节点自动摘除并通知运维人员。10万卡规模下,单次巡检耗时约5-8分钟,可并行扫描提高速度。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/guo-chan-ai-jia-su-ka-ji-qun-yun-wei-10-wan-ka-chao-suan/

(0)
小编小编
上一篇 8小时前
下一篇 8小时前

相关推荐