从 GPU 硬件结构到监控指标
对于 AI Infra / GPU 运维学习方式应该是:
先理解 GPU 内部有哪些硬件模块,以及每个模块负责什么计算;然后理解这些模块对应产生什么性能瓶颈;最后确定 Prometheus/DCGM 应该采集哪些指标。
1. GPU整体硬件架构
以 NVIDIA A100/H100 这类数据中心 GPU 为例,一个 GPU 本质上不是一个“大CPU”,而是一块高度并行计算设备。
整体结构:
GPU
+------------------------------------------------+
| GPU Die |
| |
| +----------------+ +----------------+ |
| | SM Cluster | ... | SM Cluster | |
| | | | | |
| +----------------+ +----------------+ |
| |
| GPU Memory Controller |
| | |
| | |
| HBM Memory |
| |
| Tensor Core |
| CUDA Core |
| L1 Cache |
| Shared Memory |
| |
| NVLink Interface |
| |
| PCIe Interface |
| |
| Power Management Unit |
| |
| Thermal Sensor |
| |
+------------------------------------------------+
主要组成:
-
SM(Streaming Multiprocessor)
-
CUDA Core
-
Tensor Core
-
GPU Cache
-
显存(HBM/GDDR)
-
Memory Controller
-
PCIe/NVLink通信模块
-
Power/Thermal管理模块
监控指标基本都是围绕这些硬件产生的。
2. SM:GPU真正执行计算的核心
3. 什么是SM?
SM:
Streaming Multiprocessor,流式多处理器
它类似CPU中的核心,但是粒度不同。
CPU:
CPU
Core0
Core1
Core2
Core3
GPU:
GPU
SM0
SM1
SM2
...
SM107
例如:
NVIDIA A100:
108个SM
H100:
132个SM
每个SM内部:
SM
+-----------------------+
| CUDA Core |
| |
| Tensor Core |
| |
| Register File |
| |
| Shared Memory |
| |
| L1 Cache |
+-----------------------+
4. CUDA Core:通用计算单元
CUDA Core主要负责:
-
FP32浮点计算
-
INT整数计算
例如:
矩阵:
传统计算:
大量:
加法
乘法
CUDA Core负责执行。
5. 对应监控指标
CUDA Core没有直接指标。
但是它体现为:
5.1. GPU利用率
DCGM_FI_DEV_GPU_UTIL
例如:
GPU Util = 95%
说明:
大量SM正在执行任务。
6. 异常分析
6.1. 情况:
GPU Util 20%
显存 90%
说明:
CUDA Core没有充分工作。
原因:
-
数据没有准备好
-
batch太小
-
IO瓶颈
7. Tensor Core:AI计算核心
这是现代GPU和普通GPU最大的区别。
Tensor Core专门优化:
矩阵乘法。
深度学习核心计算:
Transformer:
大量:
矩阵乘矩阵。
Tensor Core可以一次完成:
D = A × B + C
这种操作。
例如:
A100:
-
6912 CUDA Core
-
432 Tensor Core
H100:
-
16896 CUDA Core
-
528 Tensor Core
8. Tensor Core对应监控?
没有直接:
Tensor Core Utilization
但是可以通过:
8.1. FP16/FP8利用率
例如:
DCGM:
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
表示:
Tensor Pipeline 活跃程度。
例如:
训练大模型:
GPU Util 100%
Tensor Active 95%
说明:
GPU正在做AI计算。
如果:
GPU Util 100%
Tensor Active 5%
说明:
可能只是:
-
数据搬运
-
CUDA kernel
-
非Tensor计算
9. GPU Memory:显存系统
这是AI GPU最重要的部分。
GPU不像CPU直接访问内存。
它有自己的高速显存。
结构:
GPU
SM
|
L1 Cache
|
L2 Cache
|
Memory Controller
|
HBM
10. HBM显存
数据中心GPU:
A100:
40GB/80GB HBM2e
H100:
80GB HBM3
显存特点:
-
极高带宽
-
高成本
-
容量有限
11. 为什么AI需要显存?
训练:
模型参数:
weight
梯度:
gradient
优化器:
Adam states
全部需要存储。
例如:
70B模型:
参数:
约:
140GB
所以需要:
多GPU并行。
12. 显存对应监控
12.1. 显存使用量
DCGM_FI_DEV_FB_USED
例如:
70000MiB / 80000MiB
12.2. 显存带宽
这是另一个重要指标:
DCGM_FI_PROF_DRAM_ACTIVE
表示:
HBM是否成为瓶颈。
13. 故障分析
13.1. OOM
指标:
Memory:
99%
GPU:
20%
说明:
显存满了,但是计算没跑。
原因:
-
batch太大
-
模型太大
14. Memory Controller:显存控制器
很多人忽略这个。
GPU计算速度:
不仅取决于计算单元。
还取决于:
数据能不能快速送进去。
流程:
HBM
↓
Memory Controller
↓
SM
↓
CUDA/Tensor Core
如果:
Tensor Core很快。
但是:
Memory Controller慢。
GPU会:
等待数据。
对应指标:
Memory bandwidth utilization
例如:
DCGM_FI_PROF_DRAM_ACTIVE
15. Cache体系
GPU也有缓存:
16. L1 Cache
每个SM私有。
用途:
快速访问局部数据。
17. L2 Cache
所有SM共享。
结构:
SM
|
L1
|
L2
|
HBM
监控:
缓存命中率一般通过:
Profiling指标。
例如:
L2 hit rate
18. PCIe:CPU和GPU之间的数据通道
GPU不是孤立的。
CPU:
内存
|
PCIe
|
GPU
例如:
数据加载:
Storage
|
CPU RAM
|
PCIe
|
GPU Memory
PCIe指标:
PCIe RX
PCIe TX
表示:
数据进入/离开GPU。
19. 故障案例
GPU:
GPU Util 30%
但是:
PCIe RX 100%
说明:
GPU一直等数据。
原因:
CPU数据准备慢。
20. NVLink:GPU之间通信
多GPU训练:
例如:
8张H100。
结构:
GPU0 ---- NVLink ---- GPU1
| |
GPU2 ---- NVLink ---- GPU3
用途:
GPU之间交换:
-
参数
-
梯度
没有NVLink:
走:
GPU
|
PCIe
|
CPU
|
PCIe
|
GPU
慢。
监控:
NVLink TX/RX bytes
21. Power Management:功耗系统
GPU不是永远满频运行。
有:
动态频率调整。
结构:
Temperature
↓
Power Controller
↓
GPU Clock
监控:
22. 功耗
DCGM_FI_DEV_POWER_USAGE
23. 时钟
DCGM_FI_DEV_SM_CLOCK
案例:
正常:
GPU Util 100%
Power 350W
Clock 1800MHz
异常:
GPU Util 100%
Power 200W
Clock 900MHz
Temperature 90℃
说明:
热降频。
24. ECC和硬件健康
GPU显存非常复杂。
可能发生:
bit翻转。
例如:
原:
101010
变:
101000
ECC可以纠正。
指标:
Single Bit Error:
SBE
Double Bit Error:
DBE
严重情况:
Xid Error。
例如:
Xid 79
GPU fallen off the bus
表示:
GPU和PCIe通信断开。
25. 把硬件和监控指标对应起来
| 硬件模块 | 作用 | 关键指标 |
|---|---|---|
| SM | 执行计算 | GPU Util |
| CUDA Core | 通用计算 | GPU Util |
| Tensor Core | AI矩阵计算 | Tensor Active |
| HBM显存 | 存模型和数据 | Memory Used |
| Memory Controller | 显存访问 | Memory Bandwidth |
| Cache | 高速数据访问 | Cache Hit |
| PCIe | CPU-GPU通信 | PCIe RX/TX |
| NVLink | GPU-GPU通信 | NVLink RX/TX |
| Power Unit | 供电 | Power Usage |
| Thermal Unit | 散热 | Temperature |
| Clock Controller | 频率调节 | Clock |
| ECC模块 | 错误检测 | ECC Error |
26. 对于AIOps真正关注的GPU指标组合
单个指标没有意义。
生产一般做关联分析。
27. 场景1:GPU计算不足
GPU Util ↓
Memory ↓
PCIe ↓
判断:
任务没有运行。
28. 场景2:数据瓶颈
GPU Util ↓
Memory ↑
PCIe RX ↑
CPU ↑
判断:
数据加载不足。
29. 场景3:GPU过热
Temperature ↑
Clock ↓
Power ↓
GPU Util ↑
判断:
Thermal Throttling。
30. 场景4:显存不足
Memory Usage >95%
OOM error
判断:
模型/Batch过大。
31. 和你当前学习路线的连接
你现在学:
Prometheus
|
|
ServiceMonitor
|
|
Exporter
GPU环境对应:
GPU Hardware
↓
NVML/DCGM
↓
DCGM Exporter
↓
Prometheus
↓
Grafana
↓
AIOps Agent
所以未来你做 GPU AIOps,本质就是:
利用硬件结构知识,把 GPU 的异常指标映射到硬件瓶颈,再通过模型自动诊断。
比如:
Agent看到:
GPU Util 20%
Tensor Active 5%
Memory 90%
PCIe RX 高
不是简单说“GPU低利用率”,而是判断:
GPU计算单元空闲,主要瓶颈在CPU到GPU的数据传输链路。
这才是 AI Infra 运维需要掌握的深度。
你指出的问题是对的,GPU监控学习不能从指标列表开始,而应该从 硬件结构 → 数据流 → 性能瓶颈 → 监控指标 开始。你现在学习 AIOps,这种理解方式更接近实际生产环境。
关联文档
- GPU 计算与 CUDA 编程基础:GPU 计算与 CUDA 编程入口。
