AI 基础设施软件栈
结合你目前的学习方向(AIOps、Kubernetes、Python、GPU集群运维、大模型基础设施),建议你不要把 NVIDIA 看成”一家显卡公司”,而应该把它理解成一套完整的 AI 基础设施软件栈(AI Infrastructure Stack)。
很多人只知道 CUDA,其实 CUDA 只是其中一层。
真正的 NVIDIA 全栈,大概可以分成下面几个层次(从硬件一直到 AI 应用)。
AI Application
-----------------------------------------
PyTorch TensorFlow vLLM Triton NeMo
↑
AI Framework & Libraries
-----------------------------------------
cuDNN NCCL TensorRT RAPIDS DALI cuBLAS
↑
CUDA Runtime & Driver API
-----------------------------------------
CUDA Runtime CUDA Driver API
↑
GPU Driver(驱动)
-----------------------------------------
NVIDIA Linux Driver + Kernel Module
↑
GPU Management(运维管理)
-----------------------------------------
NVML DCGM nvidia-smi Fabric Manager MIG
↑
GPU Hardware Communication Layer
-----------------------------------------
PCIe NVLink NVSwitch DMA BAR
↑
NVIDIA GPU Hardware
-----------------------------------------
RTX / Tesla / A100 / H100 / B200 ...
这就是整个 NVIDIA 全栈。
下面我们逐层介绍。
第一层:GPU Hardware(GPU 硬件)
这一层就是大家熟悉的显卡。
例如:
-
RTX3050(笔记本)
-
RTX4090
-
L40S
-
A100
-
H100
-
B200
GPU 内部包含:
-
CUDA Core
-
Tensor Core
-
RT Core
-
显存(HBM / GDDR)
-
PCIe Controller
-
NVLink Controller
例如:
CPU
│
PCIe
│
GPU
├── SM
│ ├── CUDA Core
│ ├── Tensor Core
│ └── Warp Scheduler
│
├── L2 Cache
│
└── HBM Memory
这一层几乎不用编程。
第二层:GPU Driver(驱动)
Linux 并不能直接控制 GPU。
真正控制 GPU 的,是 NVIDIA Driver。
安装以后会得到:
/dev/nvidia0
/dev/nvidiactl
/dev/nvidia-uvm
/dev/nvidia-modeset
以及 Kernel Module:
nvidia
nvidia_uvm
nvidia_modeset
nvidia_drm
可以查看:
lsmod | grep nvidia
驱动主要负责:
-
GPU 初始化
-
显存管理
-
DMA
-
Kernel Launch
-
Context
-
GPU Scheduling
CUDA 所有 API 最终都会调用 Driver API,再由驱动与 GPU 通信。
第三层:CUDA
很多人误以为 CUDA 就是 GPU。
其实 CUDA 是一个软件平台。
它包括:
CUDA Toolkit
│
├── nvcc
├── Runtime API
├── Driver API
├── cuBLAS
├── cuFFT
├── cuRAND
├── cuSPARSE
├── profiler
└── debugger
CUDA 主要负责:
把 CPU 上的程序:
vector_add()
转换成:
GPU Kernel
例如:
__global__
void add(...)
然后 Driver 再把 Kernel 提交给 GPU。
整个流程:
Application
↓
CUDA Runtime
↓
CUDA Driver
↓
GPU
第四层:CUDA Libraries(计算库)
这是 AI 最重要的一层。
如果没有这些库,PyTorch 根本跑不起来。
主要包括:
cuBLAS
矩阵计算。
例如:
A × B
全部调用 cuBLAS。
cuDNN
Deep Learning Library。
负责:
-
Conv
-
Pooling
-
Activation
-
RNN
-
Attention
几乎所有深度学习框架都会调用 cuDNN。
NCCL
NVIDIA Collective Communication Library。
负责:
GPU0
GPU1
GPU2
GPU3
之间通信。
包括:
-
AllReduce
-
Broadcast
-
Reduce
-
Gather
训练 Llama 时几乎离不开 NCCL。
TensorRT
推理优化。
例如:
PyTorch
↓
ONNX
↓
TensorRT
↓
GPU
速度可以提升数倍。
DALI
Data Loading。
GPU 上完成:
-
Decode
-
Resize
-
Crop
-
Normalize
避免 CPU 成为瓶颈。
RAPIDS
GPU DataFrame。
可以理解为:
Pandas
↓
GPU
非常适合数据分析。
第五层:GPU Management(GPU 运维)
这一层与你以后学习 AIOps、GPU 集群监控关系最大。
包括:
NVML
↓
DCGM
↓
nvidia-smi
↓
Prometheus
↓
Grafana
这一层很多人容易混淆。
下面分别介绍。
NVML(NVIDIA Management Library)
NVML 是最底层的 GPU 管理 API。
可以理解成:
Linux
↓
Driver
↓
NVML
↓
程序
所有 GPU 状态几乎都来自 NVML。
例如:
温度
利用率
显存
功耗
ECC
风扇
时钟
PCIe
进程
Python 可以直接调用:
from pynvml import *
nvmlInit()
handle = nvmlDeviceGetHandleByIndex(0)
util = nvmlDeviceGetUtilizationRates(handle)
print(util.gpu)
实际上:
nvidia-smi
底层就是调用 NVML。
nvidia-smi
它只是一个命令行工具。
流程:
nvidia-smi
↓
NVML
↓
Driver
↓
GPU
例如:
nvidia-smi
或者:
nvidia-smi dmon
或者:
nvidia-smi topo -m
这些都是调用 NVML 获取数据。
DCGM(Data Center GPU Manager)
DCGM 可以理解成:
NVML++
它建立在 NVML 之上,面向数据中心和 GPU 集群管理,提供了更高级的监控、健康检查、策略管理和诊断能力。官方文档也说明 DCGM 的核心库位于 NVIDIA Driver、NVML 和 CUDA Toolkit 之上,并支持独立运行或嵌入其他管理工具中。(NVIDIA Docs)
它除了读取 GPU 数据,还增加了:
-
GPU 健康检测
-
GPU 诊断
-
XID 错误分析
-
ECC 统计
-
GPU 分组管理
-
功耗策略
-
时钟策略
-
GPU 监控缓存
-
集群统一管理
因此:
NVML
↓
DCGM
↓
dcgm-exporter
↓
Prometheus
↓
Grafana
DCGM 还提供:
dcgmi
例如:
dcgmi discovery -l
dcgmi health -c
dcgmi diag -r 3
都属于 DCGM。
DCGM Exporter
这是 Kubernetes GPU 监控最重要的组件。
它运行方式通常是:
DaemonSet
每个 GPU Node 一个 Pod。
流程:
GPU
↓
NVML
↓
DCGM
↓
DCGM Exporter
↓
Prometheus
↓
Grafana
Exporter 暴露:
/metrics
例如:
DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_MEM_COPY_UTIL
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_POWER_USAGE
DCGM_FI_DEV_GPU_TEMP
Prometheus 周期性抓取这些指标,再由 Grafana 展示。DCGM 官方也将 Exporter 作为 Kubernetes 生态中的 GPU 遥测方案。(NVIDIA Developer)
MIG(Multi-Instance GPU)
A100/H100 支持:
1 块 GPU
↓
7 块 GPU
例如:
A100
↓
GPU0
↓
7 个 MIG Instance
每个实例:
-
独立显存
-
独立计算资源
-
独立调度
Kubernetes 可以把每个 MIG 实例当成独立 GPU 分配给不同 Pod。
Fabric Manager
如果使用:
NVSwitch
例如:
8 × H100
GPU 之间通过 NVSwitch 构成高速互联。
Fabric Manager 负责:
-
初始化 NVSwitch
-
配置 GPU 拓扑
-
管理 Fabric
在较新的 DCGM 中,它已经作为独立组件提供,而不是打包在 DCGM 中。(NVIDIA Docs)
第六层:AI Framework
这一层就是大家熟悉的:
PyTorch
TensorFlow
JAX
MXNet
它们不会直接操作 GPU。
例如:
x.cuda()
实际流程:
PyTorch
↓
CUDA Runtime
↓
cuBLAS
↓
cuDNN
↓
Driver
↓
GPU
第七层:AI 应用层
最上层就是具体的大模型与 AI 服务,例如:
vLLM
Triton Inference Server
NeMo
TensorRT-LLM
Ollama
这些应用最终都会依赖下面整套 NVIDIA 软件栈来完成训练或推理。
一张图理解 NVIDIA 全栈
AI Application
──────────────────────────────────────────
vLLM
Triton
TensorRT-LLM
Ollama
NeMo
PyTorch
TensorFlow
↓
CUDA Libraries
──────────────────────────────────────────
TensorRT
cuDNN
NCCL
cuBLAS
cuFFT
RAPIDS
DALI
↓
CUDA
──────────────────────────────────────────
Runtime API
Driver API
nvcc
↓
NVIDIA Driver
──────────────────────────────────────────
Kernel Module
User Driver
↓
GPU Management
──────────────────────────────────────────
DCGM Exporter
DCGM
NVML
nvidia-smi
Fabric Manager
MIG
↓
Hardware
──────────────────────────────────────────
RTX3050
A100
H100
B200
PCIe
NVLink
HBM
从 AIOps 与 Kubernetes 运维角度,最值得掌握的部分
结合学习目标(Kubernetes、GPU 集群、Python 自动化、AIOps),建议按照下面的顺序深入:
-
Linux NVIDIA Driver:理解驱动、设备文件、模块加载以及 GPU 与操作系统的关系。
-
NVML:使用 Python 编写 GPU 监控脚本,获取利用率、显存、温度、功耗、进程等指标。
-
DCGM:学习 GPU 健康检查、诊断、策略管理和高级监控能力。
-
DCGM Exporter + Prometheus + Grafana:搭建完整的 GPU 可观测性平台,这是 Kubernetes GPU 运维的核心实践。
-
CUDA Runtime:理解 CUDA 程序是如何调用驱动并执行 GPU Kernel 的。
-
NCCL 与 MIG:学习多 GPU 通信和 GPU 资源切分,为分布式训练和 GPU 多租户打基础。
-
TensorRT、vLLM、Triton:进入 AI 推理基础设施领域,理解模型部署与推理优化。
对于你目前的 RTX 3050 笔记本 来说,完全可以完成前六步中的绝大部分实验,包括 NVML 编程、DCGM(部分功能)、GPU 指标采集、Prometheus + Grafana、Kubernetes GPU 节点监控以及 CUDA 基础开发。等需要学习多 GPU 通信(NCCL)或大规模训练时,再租用按小时计费的云 GPU 即可,这样总体成本会低得多。
