AI

AI 基础设施软件栈

·15 分钟阅读·5792 字

AI 基础设施从 GPU 硬件到推理服务与运维监控的软件栈分层

📋 目录

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),建议按照下面的顺序深入:

  1. Linux NVIDIA Driver:理解驱动、设备文件、模块加载以及 GPU 与操作系统的关系。

  2. NVML:使用 Python 编写 GPU 监控脚本,获取利用率、显存、温度、功耗、进程等指标。

  3. DCGM:学习 GPU 健康检查、诊断、策略管理和高级监控能力。

  4. DCGM Exporter + Prometheus + Grafana:搭建完整的 GPU 可观测性平台,这是 Kubernetes GPU 运维的核心实践。

  5. CUDA Runtime:理解 CUDA 程序是如何调用驱动并执行 GPU Kernel 的。

  6. NCCL 与 MIG:学习多 GPU 通信和 GPU 资源切分,为分布式训练和 GPU 多租户打基础。

  7. TensorRT、vLLM、Triton:进入 AI 推理基础设施领域,理解模型部署与推理优化。

对于你目前的 RTX 3050 笔记本 来说,完全可以完成前六步中的绝大部分实验,包括 NVML 编程、DCGM(部分功能)、GPU 指标采集、Prometheus + Grafana、Kubernetes GPU 节点监控以及 CUDA 基础开发。等需要学习多 GPU 通信(NCCL)或大规模训练时,再租用按小时计费的云 GPU 即可,这样总体成本会低得多。

Yanche Blog

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

© 2026 Yanche Blog. All rights reserved.

Powered by Astro