AI

大模型训练集群运维重点

·14 分钟阅读·5529 字

从 GPU、通信、存储、调度与恢复维度梳理大模型训练集群的运维重点

📋 目录

大模型训练集群运维重点

在大模型训练集群里,运维工作的重点和普通 Kubernetes 集群不太一样。普通集群更多关注“服务是否可用”,而训练集群还必须关注 GPU 是否高效、分布式通信是否稳定、任务是否能持续推进、数据链路是否成为瓶颈、故障是否会导致大量训练成本浪费。

可以把重点分成六层:硬件、节点、网络通信、存储与数据、调度与任务、监控与恢复。


1. 第一优先级:GPU 硬件是否健康且高效

训练集群里最贵的资源通常是 GPU,所以首要目标不是单纯“GPU 没坏”,而是:

GPU 有没有真正持续做有效计算。

重点看:

  • GPU Utilization
  • SM Active
  • Tensor Core Active
  • HBM 使用量
  • HBM 带宽
  • GPU 温度
  • 功耗
  • SM Clock
  • ECC Error
  • Xid Error
  • PCIe / NVLink 状态

例如一个训练任务:

GPU Util       95%
Tensor Active  90%
HBM Used       85%
Temperature    72℃
Power          接近正常训练功耗
Clock          稳定

通常说明 GPU 使用比较健康。

但如果:

GPU Util       25%
HBM Used       90%
CPU Util       100%

这往往不是 GPU 故障,而是 GPU 在等 CPU 数据预处理。

所以 GPU 运维不能只看单指标,而要结合硬件链路判断。


2. 第二优先级:节点健康

一个训练节点不仅有 GPU,还包括:

CPU
RAM
GPU
PCIe
NIC
NVMe
OS
Driver
CUDA
Container Runtime

任何一个环节异常,都可能导致训练性能下降。

例如典型数据路径:

训练数据
  ↓
NVMe / 网络存储
  ↓
CPU RAM
  ↓
数据预处理
  ↓
PCIe
  ↓
GPU HBM
  ↓
SM / Tensor Core

因此节点侧通常需要重点监控:

2.1. CPU

关注:

  • CPU utilization
  • load average
  • iowait
  • context switch
  • NUMA

如果 GPU 利用率低而 CPU 满载,很可能 DataLoader 或数据解码成为瓶颈。

2.2. 内存

关注:

  • available memory
  • swap
  • OOM
  • page fault
  • NUMA locality

训练过程中 host memory 不足可能导致:

DataLoader异常
进程被OOM Kill
训练中断

2.3. 磁盘

尤其是本地 NVMe:

  • IOPS
  • throughput
  • latency
  • utilization

如果数据集放 NVMe,而磁盘 latency 上升,GPU 很容易出现周期性空闲。


3. 第三优先级:GPU 间通信

这是大模型训练区别于普通 GPU 任务的地方。

单卡训练主要看 GPU 自身,多卡训练则必须重点看:

GPU ↔ GPU

通信。

现代大模型通常使用:

  • Data Parallel
  • Tensor Parallel
  • Pipeline Parallel
  • Expert Parallel

这些模式都需要频繁交换数据。

典型链路:

GPU0
  │
NVLink / NVSwitch
  │
GPU1

跨节点则:

GPU
 ↓
PCIe
 ↓
NIC
 ↓
RoCE / InfiniBand
 ↓
NIC
 ↓
PCIe
 ↓
GPU

因此要重点关注:

  • NVLink bandwidth
  • NVLink error
  • PCIe throughput
  • NCCL latency
  • NCCL timeout
  • IB/RDMA throughput
  • packet loss
  • retransmission
  • NIC error
  • PFC / ECN

4. NCCL 是训练集群非常关键的观察对象

NVIDIA Collective Communications Library,简称 NCCL,是多 GPU 通信的核心库。

大模型训练经常执行:

AllReduce
AllGather
ReduceScatter
Broadcast

例如 Data Parallel:

每个 GPU 算完梯度:

GPU0 gradient
GPU1 gradient
GPU2 gradient
GPU3 gradient

        ↓

      AllReduce

        ↓

所有GPU得到统一梯度

如果 NCCL 出问题,训练通常不会表现为“GPU完全坏了”,而可能表现成:

某些 GPU 100%
某些 GPU 0%
训练 step 卡住

甚至:

NCCL watchdog timeout

因此生产环境里经常要监控:

  • NCCL collective latency
  • NCCL throughput
  • straggler GPU
  • timeout
  • rank failure

5. 第四优先级:训练任务有没有持续推进

训练任务和普通 Web 服务最大的区别之一是:

Pod Running 不代表训练正常。

例如:

kubectl get pod

Running

但是训练可能已经:

卡住2小时

所以必须监控训练业务指标。

最重要的包括:

  • training step
  • iteration time
  • samples/sec
  • tokens/sec
  • loss
  • learning rate
  • checkpoint time
  • data loading time

例如:

正常:

step 1000
step 1001
step 1002

异常:

step 1000

10分钟过去

仍然 step 1000

这就是训练 Hang。


6. 训练吞吐量是非常重要的 SLI

大模型训练真正关心的不是:

GPU Utilization

本身,而是:

Tokens / second

或者:

Samples / second

因为 GPU 100% 并不一定代表效率高。

例如:

机器 A:

GPU Util 100%
1000 tokens/s

机器 B:

GPU Util 95%
1800 tokens/s

显然 B 更高效。

所以运维层面最终应该围绕:

单位时间真正完成了多少有效训练工作。


7. 第五优先级:Straggler 问题

这是大规模训练集群里非常重要的问题。

假设有 1024 张 GPU。

每一步训练需要所有 GPU 同步。

如果其中一张:

比其他GPU慢20%

那么:

其他1023张GPU都要等它

结果整个集群吞吐量下降。

这就是:

Straggler,慢节点 / 慢 GPU。

例如:

GPU0  step time 1.0s
GPU1  step time 1.0s
GPU2  step time 1.0s
GPU3  step time 1.5s

整个 iteration:

≈1.5s

而不是 1.0s。

可能原因包括:

  • GPU thermal throttling
  • ECC 问题
  • PCIe 降速
  • NVLink异常
  • NIC异常
  • CPU瓶颈
  • NVMe latency
  • NUMA问题

因此大规模训练集群运维的核心能力之一就是:

找出慢 GPU / 慢节点。


8. 第六优先级:存储和数据链路

很多 GPU 低利用率问题其实不是 GPU 问题,而是数据没喂上。

训练数据可能来自:

Object Storage
NFS
Lustre
Ceph
Local NVMe

数据链路:

Storage
  ↓
Network
  ↓
CPU RAM
  ↓
Preprocessing
  ↓
GPU

因此要监控:

  • storage throughput
  • read latency
  • metadata latency
  • cache hit ratio
  • DataLoader latency
  • I/O wait

例如:

GPU Util     30%
CPU          20%
Disk Util    100%
Disk latency 高

很明显:

GPU在等磁盘。


9. Checkpoint 是训练运维非常重要的一部分

大模型可能训练:

几天
几周
几个月

如果训练到第 20 天:

GPU故障

没有 checkpoint:

训练可能全部重来。

因此运维需要关注:

  • checkpoint 是否成功
  • checkpoint 时间
  • checkpoint 大小
  • checkpoint 上传速度
  • 最近 checkpoint 时间

例如:

训练step 100000

最近checkpoint:
step 60000

这是很危险的状态。


10. 故障恢复能力

训练集群运维和普通业务运维最大的不同之一是:

一次故障可能直接浪费数十万甚至数百万 GPU 小时。

所以非常强调:

  • checkpoint
  • auto restart
  • elastic training
  • node replacement
  • GPU isolation

例如:

GPU Xid error
        ↓
标记GPU异常
        ↓
cordon node
        ↓
终止训练worker
        ↓
从checkpoint恢复
        ↓
替换节点

11. Kubernetes / 调度层重点

如果训练集群基于 Kubernetes,还需要重点看:

11.1. GPU Resource

resources:
  limits:
    nvidia.com/gpu: 8

关注:

  • allocatable GPU
  • allocated GPU
  • idle GPU
  • fragmentation

例如:

一个节点:

8 GPU

现在剩:

3 GPU

但是任务需要:

4 GPU

虽然总集群还有很多空闲 GPU,却调度不了。

这叫:

GPU fragmentation。


12. Gang Scheduling

分布式训练常常需要:

64 GPU

任务必须同时启动。

不能:

先分配10张
等另外54张

否则前面10张一直空等。

因此通常使用:

  • Volcano
  • Kueue

之类实现 Gang Scheduling。

例如:

需要 64 GPU

当前只有 50 GPU

↓

整个任务等待

而不是先启动50个worker

这对提升 GPU 利用率非常关键。


13. GPU 集群的核心监控面

生产 GPU 训练集群的监控至少可以分为以下几层:

层级重点
GPU硬件SM、HBM、温度、功耗、ECC、Xid
节点CPU、RAM、NVMe、PCIe
GPU通信NVLink、NVSwitch
网络IB/RDMA、RoCE、NIC
分布式通信NCCL
存储吞吐、latency、IOPS
训练任务step、loss、tokens/s
调度GPU分配、Pending、碎片率
恢复checkpoint、restart
成本GPU utilization、有效GPU小时

14. 最值得关注的不是“GPU利用率”,而是 GPU 有效利用率

一个训练集群可能:

GPU Utilization = 90%

看起来很好。

但是:

  • NCCL等通信占了很多时间
  • DataLoader等待
  • checkpoint频繁
  • straggler严重

最后真正用于 Tensor Core 计算的时间可能只有:

50%

因此大型 AI Infra 会越来越关注类似:

MFU(Model FLOPs Utilization)

MFU 可以粗略理解为:

MFU=模型实际完成的有效 FLOPsGPU 理论最大 FLOPsMFU = \frac{\text{模型实际完成的有效 FLOPs}} {\text{GPU 理论最大 FLOPs}}

例如:

H100 理论能力非常高。

但是训练实际只发挥:

40%

那么:

MFU ≈ 40%

对于大模型训练,这比单纯 GPU Util=100% 更有意义。


15. 运维排障时推荐的思考顺序

以后如果遇到:

“训练速度突然下降 30%”

不要直接看 Kubernetes Pod。

建议按照数据流查:

Training throughput
        ↓
Step time
        ↓
GPU compute
        ↓
GPU memory
        ↓
NVLink/NCCL
        ↓
PCIe
        ↓
CPU
        ↓
Storage
        ↓
Network

例如看到:

tokens/s ↓40%
GPU Util ↓
CPU正常
Disk正常
NVLink TX/RX ↑
NCCL latency ↑

那么问题很可能在:

GPU-GPU 通信。

而不是 GPU 本身。


16. 训练集群运维的五项核心能力

从运维与 SRE 视角,可以按以下顺序确定排查优先级:

  1. 能判断 GPU 是计算瓶颈、显存瓶颈、数据瓶颈还是通信瓶颈。
  2. 能定位 Straggler GPU / Node。
  3. 能排查 NCCL、RDMA、NVLink 等分布式通信问题。
  4. 能设计 checkpoint、任务恢复和故障节点隔离机制。
  5. 能从集群视角优化 GPU utilization、MFU 和 GPU-hour 成本。

换句话说,大模型训练集群运维的最终目标不是:

“保证 Kubernetes Pod Running。”

而是:

让昂贵的 GPU 尽可能长时间稳定地做有效计算,并且发生故障时尽可能少损失训练进度。

这也是传统 Kubernetes 运维向 AI Infrastructure / GPU SRE 转型之后最大的思维变化。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro