Skip to content

第一部分 GPU 与 AI 算力基础(第 1~4 章)

本部分是整本教材的起点。即使你对 GPU 一无所知也没有关系——我们会从"GPU 是什么、AI 为什么离不开它"讲起,逐步认识 NVIDIA GPU 硬件、CUDA 软件生态,以及训练、推理等 AI 工作负载的特征。学完后,你将具备学习后续驱动安装、K8s 调度、监控排障所需的全部背景知识。


第 1 章 为什么 AI 需要 GPU

本章目标

  • 理解 CPU 与 GPU 在设计哲学上的本质区别
  • 了解 GPU 并行计算的基本原理(SIMT、海量核心、高显存带宽)
  • 理解 AI 大模型对算力需求的量级,掌握 FLOPs 这一基本概念
  • 明确 GPU 集群运维工程师的角色定位与职业价值

1.1 CPU 与 GPU 的本质区别

一个类比:一位教授 vs 一万名小学生

想象你要完成一项任务:计算一万道加减乘除算术题

  • 方案 A(CPU 的思路):请一位数学教授来做。教授做题极快,还能处理复杂的证明题,但他一次只能做一道题,做完一道再做下一道。一万道题要花不少时间。
  • 方案 B(GPU 的思路):请一万名小学生,每人分一道题,老师一声令下同时开始。虽然每个小学生做题比教授慢得多,但一万道题几乎在同一瞬间就完成了。

这就是 CPU 与 GPU 的本质区别:

对比维度CPU(中央处理器)GPU(图形处理器)
核心数量几个到上百个(服务器级)数千到上万个
单个核心能力强,擅长复杂逻辑、分支判断弱,只做简单运算
擅长任务串行、逻辑复杂的任务并行、结构单一的重复计算
设计目标低延迟,快速响应各种指令高吞吐,同时完成海量计算

CPU 的设计目标是把一件复杂的事情尽快做完(低延迟);GPU 的设计目标是把海量简单的事情同时做完(高吞吐)。

为什么 AI 计算恰好适合 GPU

深度学习的核心运算是矩阵乘法:神经网络的每一层,本质上都是输入向量与权重矩阵相乘,再加激活函数。矩阵乘法有一个美妙的特点——结果矩阵中每个元素的计算互相独立,天然可以被拆分成成千上万份同时计算。

而且神经网络计算量大但逻辑简单:没有复杂的 if-else 分支,就是一遍遍做"乘加、乘加"。这正是"一万名小学生"最擅长的场景。

一句话总结:AI 计算 = 海量、简单、可并行的矩阵运算;GPU = 为海量并行简单计算而生的芯片。两者是天作之合。

1.2 GPU 并行计算原理简述

作为运维工程师,你不需要会写 CUDA 程序,但需要理解 GPU 的几个基本概念,否则后面看不懂硬件规格表。

海量核心:SM 与 CUDA Core

NVIDIA GPU 内部由许多个 SM(Streaming Multiprocessor,流式多处理器) 组成,每个 SM 里又包含几十个到一百多个 CUDA Core(最基本的浮点运算单元)。一块数据中心 GPU 的 CUDA Core 总数通常在数千到上万个量级——这就是"一万名小学生"。

SIMT:单指令多线程

GPU 采用 SIMT(Single Instruction, Multiple Threads,单指令多线程) 的执行模式:一批线程(称为一个 warp,通常 32 个线程)同时执行同一条指令,只是各自处理不同的数据。

类比:老师(指令发射器)喊"所有人算自己面前那道题的加法",全班同学(线程)同时动笔,但每人纸上的数字(数据)不同。

这解释了为什么 GPU 适合"结构单一的重复计算":如果大家要做的"动作"各不相同,SIMT 的效率就会大打折扣。

高显存带宽:喂饱一万名小学生

光有一万名小学生还不够,还得有人飞速地把题目(数据)发到他们手上,否则大家只能干等。GPU 使用专门的高带宽显存(HBM,后面章节详述),显存带宽可达每秒数 TB 的量级,是 CPU 内存带宽的十倍以上。

运维视角:很多 GPU 任务跑不快,不是算力不够,而是"数据喂不上来"(带宽瓶颈、IO 瓶颈)。这个认知在后续性能调优章节会反复用到。

1.3 AI 大模型时代:训练与推理对算力的需求

FLOPs:衡量算力的"尺子"

FLOPs(Floating Point Operations) 指浮点运算次数,是衡量计算量和算力的基本单位:

  • FLOPs(大写复数):表示一次计算任务需要的总计算量(如"训练某模型需要 10²³ FLOPs")
  • FLOPS(大写 S 结尾)/ FLOP/s:表示每秒能完成多少次浮点运算,即算力速度

常用量级单位:

单位含义典型场景
TFLOPS每秒 10¹² 次(万亿次)单块 GPU 的算力常用单位
PFLOPS每秒 10¹⁵ 次(千万亿次)多台服务器合计算力
EFLOPS每秒 10¹⁸ 次(百亿亿次)超算中心、大型智算中心

大模型训练需要多少算力

以 GPT-3 这个级别的模型(1750 亿参数)为例,业界论文估算其完整训练一次的总计算量约为 3×10²³ FLOPs 量级。

这个数字有多夸张?做一个粗略的体感计算:

  • 假设一块高端数据中心 GPU 的实际有效算力约为每秒数百 TFLOPS(10¹⁴ 量级)
  • 一块卡训练一次,需要的时间以数十年
  • 因此实际训练使用数千块 GPU 组成的集群,把数十年压缩到几个月

以上仅为帮助理解量级的估算,实际数字与模型结构、并行效率、精度格式等密切相关,具体请以官方数据为准。

这就是为什么"GPU 集群"成为一个行业:单个 GPU 再强也远远不够,必须把成百上千、乃至上万块 GPU 通过网络连接起来协同工作。而让这些昂贵设备稳定高效地运转,正是运维工程师的职责。

训练 vs 推理:两种算力需求

  • 训练(Training):用海量数据反复调整模型参数,计算量极大,持续时间长(数周到数月),需要多卡多机协同。
  • 推理(Inference):模型训练好后对外提供服务(如聊天机器人回答问题),单次计算量小,但要求低延迟、高并发,且 7×24 小时在线。

两者对硬件、网络、调度方式的要求差异很大,第 4 章会详细展开。

1.4 GPU 集群运维工程师的角色与价值

你将要维护的是什么

一个 GPU 算力集群通常包含:

┌─────────────────────────────────────────────────┐
│              GPU 算力集群的组成                    │
├─────────────────────────────────────────────────┤
│  GPU 服务器:每台 4~8 块 GPU,功耗数千瓦            │
│  高速网络:InfiniBand / RoCE,200~800 Gb/s       │
│  存储系统:并行文件系统,存放训练数据和模型          │
│  软件栈:驱动 → CUDA → 容器 → K8s → 训练框架      │
│  平台层:任务调度、多租户、监控、计量计费           │
└─────────────────────────────────────────────────┘

为什么这个角色值钱

  1. 资源极其昂贵:一块数据中心级 GPU 价值数万到数十万元,一个千卡集群的硬件投入以亿元计。设备闲置或故障一小时,损失的都是真金白银。
  2. 故障模式特殊:GPU 有 XID 错误、掉卡、ECC 显存错误、NVLink 故障等特有故障模式,传统运维经验覆盖不到。
  3. 技术栈深且新:从硬件、驱动到容器、K8s、RDMA 网络、AI 框架,任何一层出问题都会表现为"训练任务失败了",定位问题需要全栈视角。
  4. 供不应求:AI 行业高速发展,懂 GPU 集群运维的工程师非常稀缺。

本章小结

  • CPU 像"一位教授",擅长复杂串行逻辑;GPU 像"一万名小学生",擅长海量并行简单计算。AI 的矩阵运算恰好是后者。
  • GPU 通过海量 CUDA Core + SIMT 执行模式 + 高带宽显存实现强大的并行计算能力。
  • 算力用 FLOPS 衡量,大模型训练的计算量可达 10²³ FLOPs 量级,必须依靠 GPU 集群完成。
  • GPU 集群运维工程师的核心价值:让昂贵的算力资源稳定、高效地运转。

动手实验与练习

  1. 思考题:以下任务更适合 CPU 还是 GPU?为什么?
    • (a)数据库事务处理 (b)图片批量缩放 (c)操作系统调度 (d)神经网络矩阵乘法
  2. 概念自测:用自己的话向一位完全不懂技术的朋友解释"为什么 AI 需要 GPU",要求用到"教授与小学生"的类比。
  3. 估算练习:某模型训练需要 10²³ FLOPs,单卡有效算力按 200 TFLOPS(2×10¹⁴)估算,用 1000 张卡大约需要多少秒?折算成多少天?(假设理想线性加速,实际会有折扣)
  4. 调研练习:打开云厂商(如阿里云、腾讯云)官网,查看 GPU 云服务器的产品页,记录 T4、A10、A100 实例的按小时价格,感受"算力的成本"。

第 2 章 NVIDIA GPU 硬件基础

本章目标

  • 了解 NVIDIA GPU 架构的演进脉络及各代代表产品
  • 熟悉数据中心 GPU 产品线,能说出主流型号的定位与典型场景
  • 读懂 GPU 硬件规格表中的关键指标
  • 理解 FP32/FP16/BF16/FP8/INT8 等精度格式的区别及使用场景
  • 对国产 GPU 与 AI 芯片有基本认识

2.1 NVIDIA GPU 架构演进

NVIDIA 的 GPU 架构以科学家命名,每一代在制程、核心数量、显存技术、AI 专用单元上都有提升。作为运维工程师,了解架构演进的意义在于:看懂不同年代服务器的代际差异,理解为什么老卡跑不了新框架

架构发布年份代表产品关键特性
Kepler2012K80、GTX 780早期通用计算 GPU,已淘汰
Maxwell2014M40、GTX 980能效比大幅提升
Pascal2016P100、P4、GTX 1080首次引入 NVLink(P100)、半精度计算
Volta2017V100、Titan V首次引入 Tensor Core(AI 专用计算单元)
Turing2018T4、RTX 2080Tensor Core 支持 INT8/INT4,推理性价比高
Ampere2020A100、A10、RTX 3090第三代 Tensor Core、TF32 格式、MIG 切分
Ada Lovelace2022L40/L40S、RTX 4090推理与图形渲染强化,FP8 支持
Hopper2022H100、H200Transformer 引擎(FP8)、NVLink 4.0
Blackwell2024B200、GB200双芯封装、第二代 Transformer 引擎、NVLink 5.0

架构与产品的对应关系以 NVIDIA 官方发布为准。老架构(Kepler/Maxwell/Pascal)的卡在新版 CUDA 中已逐步停止支持,这是运维中"老服务器装不上新驱动"的常见原因。

记忆要点:Volta 引入 Tensor Core 是 GPU 从"图形/通用计算"转向"AI 加速"的分水岭;此后每一代的竞争焦点都围绕 AI 算力(更低精度、更高带宽、更强互联)。

2.2 数据中心 GPU 产品线

主流数据中心 GPU 一览

型号架构显存功耗(TDP)定位与典型场景
T4Turing16GB GDDR6约 70W入门级推理卡,低功耗,云上常见
V100Volta16/32GB HBM2250~300W上一代训练主力,存量大
A10Ampere24GB GDDR6约 150W推理、轻量训练、虚拟化场景
A100Ampere40/80GB HBM2e250~400W上代训练旗舰,支持 MIG 切分
L40SAda48GB GDDR6约 350W推理、AI 视觉、图形渲染
H100Hopper80GB HBM3350~700W大模型训练旗舰
H200Hopper141GB HBM3e约 700W大显存推理与训练
B200Blackwell约 180GB HBM3e1000W 级新一代训练/推理旗舰

上表数据为大致范围,不同形态(PCIe/SXM)功耗与算力不同,具体规格以 NVIDIA 官方数据表为准。

消费级 vs 数据中心级

很多初学者会问:RTX 4090 玩游戏很强,能不能拿去训练大模型?技术上可以跑,但两者定位差异明显:

对比项消费级(如 RTX 4090)数据中心级(如 A100/H100)
显存类型GDDR(无 ECC 或有限支持)HBM,支持 ECC 纠错
显存容量24GB 左右40~180GB
多卡互联通常无 NVLink 或受限完整 NVLink/NVSwitch 支持
虚拟化/MIG不支持支持 vGPU、MIG
稳定性设计间歇性高负载7×24 小时满负载设计
被动散热自带风扇被动散热,依赖服务器风道
驱动授权不允许用于数据中心(许可限制)正式支持

运维视角:数据中心级 GPU 为长期满载设计,支持 ECC 显存纠错和带外管理,这些是生产环境稳定性的基石。

2.3 GPU 关键硬件指标解读

拿到一台 GPU 服务器,你需要看懂这些指标:

CUDA Core 与 Tensor Core

  • CUDA Core:通用计算单元,负责常规浮点/整数运算,数量越多通用算力越强。
  • Tensor Core:AI 专用矩阵运算单元,一次完成一小块矩阵的乘加运算,AI 吞吐是 CUDA Core 的数倍到十几倍。训练/推理性能主要取决于 Tensor Core。

显存容量与带宽(HBM vs GDDR)

显存是 GPU 的"工作台",模型参数、中间计算结果都放在显存里。

对比项GDDR(GDDR6 等)HBM(HBM2e/HBM3/HBM3e)
形态分立颗粒,围绕 GPU 四周多层堆叠,与 GPU 封装在同一基板上
带宽数百 GB/s数 TB/s(高出一个数量级)
成本高(是数据中心卡贵的重要原因)
应用消费卡、推理卡(T4/A10/L40S)训练旗舰(V100/A100/H100/B200)

为什么大模型训练必须大显存:训练时显存要同时装下模型参数、梯度和优化器状态。一个百亿参数级别的模型,仅这些状态就需要数百 GB 显存,必须多卡分摊。显存不够,模型根本"装不进去",再强的算力也无用武之地。

  • NVLink:GPU 与 GPU 之间的点对点高速直连通道,带宽远高于 PCIe(H100 的 NVLink 总带宽达 900 GB/s 量级,而 PCIe 5.0 x16 约 128 GB/s)。
  • NVSwitch:NVLink 交换芯片,让一台服务器内的 8 块 GPU 实现任意两两全速互联,是 8 卡训练服务器(如 DGX/HGX)的核心部件。

类比:PCIe 是普通公路,GPU 之间通信要绕道 CPU 这个"收费站";NVLink 是 GPU 之间的直达高铁;NVSwitch 则是让所有高铁线路互联互通的枢纽站。

TDP 功耗

TDP(热设计功耗)直接决定数据中心的供电与散热设计:一块 H100 SXM 约 700W,一台 8 卡服务器仅 GPU 就近 6kW,整机功耗可达 10kW 量级。这也是 GPU 集群机房需要专门供电、液冷改造的原因。

互联拓扑:PCIe vs SXM

形态特点典型场景
PCIe 卡标准插槽,通用性好,卡间通信走 PCIe 总线推理服务器、轻量训练
SXM 模组专用插座,更高功耗上限,搭配 NVSwitch 实现全互联大模型训练服务器(HGX 架构)

用命令查看本机 GPU 拓扑(后续章节会深入学习):

bash
# 查看 GPU 之间的互联方式(NVLink 还是 PCIe)
nvidia-smi topo -m

输出中 NV# 表示 GPU 之间通过几条 NVLink 连接,PIX/PXB 表示通过 PCIe 连接。拓扑直接影响多卡训练性能。

2.4 算力单位:精度格式的区别

常见精度格式

"精度"指每个数字用多少二进制位表示。位数越少,单次计算越快、占用显存越少,但数值精度越低。

格式位宽说明典型用途
FP6464 位双精度,科学计算超算、仿真(AI 很少用)
FP3232 位单精度,传统默认早期训练、通用计算
TF3219 位(内部)Ampere 引入,FP32 的加速模式训练的折中方案
FP1616 位半精度训练主流(混合精度)
BF1616 位指数位与 FP32 相同,范围大不易溢出大模型训练主流
FP88 位Hopper/Ada 起支持大模型训练与推理(新趋势)
INT88 位整数量化推理推理部署,吞吐翻倍

FP16 与 BF16 的区别(面试常考):两者都是 16 位,但 FP16 用更多位数表示小数(精度高、范围小),BF16 用更多位数表示指数(范围大、精度略低)。大模型训练中数值范围波动大,BF16 不容易溢出,因此成为大模型训练的主流格式。

稠密算力 vs 稀疏算力

看 GPU 规格表时会发现同一格式有两个算力数字,稀疏(Sparsity)算力通常是稠密(Dense)的两倍:

  • 稠密算力:老老实实计算所有数据的算力,任何任务都能达到,是"真实水平"。
  • 稀疏算力:利用神经网络中大量权重为零的特点(结构化稀疏),跳过一半计算得到的理论峰值,需要特定优化才能达到。

运维与采购提示:比较不同 GPU 算力时,务必统一用稠密算力对比,并注明精度格式,否则容易被宣传数字误导。

为什么训练用 FP16/BF16、推理用 INT8/FP8

  • 训练:需要反向传播更新参数,数值稳定性要求高,FP16/BF16 是速度与精度的平衡点(配合"混合精度训练"技术)。
  • 推理:模型参数已固定,对精度容忍度更高,用 INT8/FP8 量化后,显存占用减半甚至更少、吞吐显著提升、成本大幅下降——这对 7×24 在线的推理服务至关重要。

2.5 国产 GPU 与 AI 芯片简介

受供应链与合规因素影响,国产 AI 芯片在国内算力中心建设中的占比持续提升,作为运维工程师很可能会接触到:

厂商/产品软件生态特点
华为昇腾(Ascend 910 系列)CANN + MindSpore,兼容 PyTorch(torch_npu)生态最成熟,国产训练主力
寒武纪(MLU 系列)Cambricon Neuware训练推理均有布局
海光(DCU 系列)DTK,类 CUDA 的 HIP 路线对 CUDA 代码迁移较友好
摩尔线程(MTT 系列)MUSA图形+AI 双线,兼容 CUDA 生态为卖点
燧原、壁仞、天数智芯等各自软件栈各有侧重

运维上的主要差异

  • 管理工具不同:NVIDIA 用 nvidia-smi,昇腾用 npu-smi,寒武纪用 cnmon,海光用 hy-smi
  • K8s 调度需要各厂商自己的 Device Plugin
  • 故障码、监控指标、容器工具链各不相同,但运维方法论是相通的:驱动管理、设备发现、资源调度、监控告警、故障诊断的思路完全一致

本教材以 NVIDIA 生态为主线(市场占有率最高、资料最全),掌握后迁移到国产芯片会很快。

本章小结

  • NVIDIA 架构演进:Kepler → … → Volta(首引入 Tensor Core)→ Ampere(MIG、TF32)→ Hopper(FP8、Transformer 引擎)→ Blackwell。
  • 数据中心 GPU 与消费级 GPU 的核心差异:HBM 显存 + ECC、NVLink 互联、MIG/vGPU、7×24 满载设计。
  • 关键指标:Tensor Core 决定 AI 算力;显存容量决定"模型装不装得下";显存带宽和 NVLink 决定"数据喂得快不快";TDP 决定机房供电散热。
  • 精度格式:训练主流 FP16/BF16,推理主流 INT8/FP8;对比算力要看稠密算力并注明精度。
  • 国产芯片生态各异,但运维方法论相通。

动手实验与练习

  1. 有 GPU 环境:执行以下命令,记录自己 GPU 的型号、显存、功耗:
bash
# 查看 GPU 基本信息
nvidia-smi

# 查看详细信息(架构、显存类型、功耗上限等)
nvidia-smi -q | less

# 查看 GPU 名称与显存
nvidia-smi --query-gpu=name,memory.total,power.limit --format=csv
  1. 无 GPU 环境:执行 lspci | grep -i -E "nvidia|vga" 查看本机是否有显卡;在 NVIDIA 官网查阅 H100 与 A100 的数据表(Datasheet),对比两者的显存容量、带宽和 FP16 稠密算力。
  2. 思考题:为什么大模型训练服务器普遍采用 SXM 形态而不是 PCIe 形态?从功耗和互联两个角度回答。
  3. 面试题自测:FP16 和 BF16 有什么区别?为什么大模型训练更常用 BF16?

第 3 章 CUDA 软件生态

本章目标

  • 理解 CUDA 是什么,理清驱动、CUDA Toolkit、cuDNN 的层次关系
  • 理解驱动版本、CUDA 版本、框架版本的兼容性概念
  • 了解主流 AI 框架与 CUDA 的关系
  • 理解容器时代"镜像自带 CUDA、宿主机只装驱动"的原理

3.1 CUDA 是什么

CUDA(Compute Unified Device Architecture) 是 NVIDIA 推出的并行计算平台和编程模型,是让开发者能用 GPU 做通用计算(而不只是画图)的软件基础。没有 CUDA,就没有今天的 AI 大爆发。

作为运维工程师,你需要理清 GPU 软件栈的层次关系:

┌──────────────────────────────────────────────┐
│  AI 应用与框架层                                │
│  PyTorch / TensorFlow / vLLM / TensorRT-LLM   │
├──────────────────────────────────────────────┤
│  深度学习加速库                                 │
│  cuDNN(神经网络算子)/ NCCL(多卡通信)        │
│  TensorRT(推理优化)/ cuBLAS(矩阵运算)       │
├──────────────────────────────────────────────┤
│  CUDA Toolkit(开发层)                        │
│  CUDA Runtime API、编译器 nvcc、工具链          │
├──────────────────────────────────────────────┤
│  NVIDIA 驱动(内核层,装在宿主机上)             │
│  内核模块 nvidia.ko + 用户态库 libcuda.so      │
├──────────────────────────────────────────────┤
│  GPU 硬件                                      │
└──────────────────────────────────────────────┘

各层职责:

  • NVIDIA 驱动:唯一直接与硬件打交道的软件,以内核模块形式安装在操作系统上。nvidia-smi 看到的就是驱动层信息。一台宿主机只需装一次驱动
  • CUDA Toolkit:面向开发者的工具包,包含运行时库(CUDA Runtime)、编译器(nvcc)、调试分析工具(nsight、nvprof 的继任者)等。
  • cuDNN:基于 CUDA 实现的深度学习基础算子库(卷积、归一化等),框架调用它来获得极致性能。
  • NCCL:多卡/多机通信库,分布式训练的"神经中枢"(第五部分会专门讲)。

3.2 版本兼容性:运维的"版本地狱"

GPU 运维的日常痛苦之一,就是处理版本兼容问题。兼容性有三条主线:

主线一:驱动版本 ≥ CUDA 版本要求

每个 CUDA 版本都要求最低驱动版本。CUDA 具有向后兼容性:新驱动可以运行旧 CUDA 编译的程序,反之不行。

bash
# 查看当前驱动支持的最高 CUDA 版本(右上角 "CUDA Version")
nvidia-smi

注意:nvidia-smi 显示的 "CUDA Version" 是驱动所支持的最高 CUDA 版本,不代表系统里实际安装了该版本的 CUDA Toolkit——这是初学者最容易误解的地方。

主线二:框架版本 ↔ CUDA 版本

PyTorch 等框架发布时会针对特定 CUDA 版本编译,例如 PyTorch 2.x 有 cu118、cu121、cu124 等多个变体。装错组合轻则性能下降,重则直接报错 CUDA error: no kernel image is available for execution on the device

主线三:CUDA 版本 ↔ GPU 架构

每个 GPU 架构有对应的**计算能力(Compute Capability)**编号(如 A100 是 8.0,H100 是 9.0)。新版 CUDA 会放弃对过老架构的支持;新架构的卡则要求足够新的 CUDA。

运维应对策略

  1. 驱动适当装新:驱动向后兼容,装较新的稳定版(如生产常用 LTS 分支驱动)可以覆盖大多数 CUDA 需求。
  2. 用容器隔离 CUDA:不同任务用不同镜像,各自携带匹配的 CUDA(见 3.4 节)。
  3. 查官方兼容性矩阵:遇到版本问题,先查 NVIDIA 官方"CUDA Compatibility"文档和框架官方安装页,以官方文档为准。

3.3 常见 AI 框架与 CUDA 的关系

框架定位与 CUDA 的关系
PyTorch训练与研究的事实标准预编译包自带匹配的 CUDA Runtime,pip 安装即用
TensorFlow老牌框架,工业界仍有存量同上,版本与 CUDA/cuDNN 绑定严格
vLLM大模型推理服务框架基于 PyTorch + 自定义 CUDA 算子(如 PagedAttention)
TensorRT-LLMNVIDIA 官方推理优化框架深度绑定 TensorRT,编译期针对具体 GPU 架构优化
DeepSpeed / Megatron-LM分布式训练框架基于 PyTorch,依赖 NCCL 做分布式通信

关键点:框架本身不带驱动,它们通过用户态库 libcuda.so(由驱动提供)与 GPU 通信。这就是为什么"容器里装 CUDA 也能用宿主机的 GPU"(下一节展开)。

3.4 容器时代的 CUDA

传统痛点

在裸机时代,部署 AI 环境要依次安装:驱动 → CUDA Toolkit → cuDNN → Python 框架,任何一步版本不匹配都要重来。两个项目需要不同 CUDA 版本时,一台机器上很难共存。

容器方案:镜像自带 CUDA,宿主机只装驱动

现代 GPU 平台的标准做法是:

  • 宿主机:只安装 NVIDIA 驱动 + NVIDIA Container Toolkit(容器运行时插件)
  • 容器镜像:自带完整 CUDA Runtime + cuDNN + 框架(如官方镜像 nvcr.io/nvidia/pytorch:24.xx-py3
宿主机:  [ GPU ] ← [ NVIDIA 驱动 ] ← [ NVIDIA Container Toolkit ]

容器内:  [ PyTorch + cuDNN + CUDA Runtime ] ←─ 通过挂载的驱动库访问 GPU

原理解析:容器启动时,NVIDIA Container Toolkit 会把宿主机的驱动用户态库(libcuda.so 等)和 GPU 设备文件(/dev/nvidia*)挂载进容器。容器内的 CUDA Runtime 通过这些库与驱动对话,从而使用 GPU。因为驱动是向后兼容的,只要驱动版本 ≥ 容器内 CUDA 的要求即可。

bash
# 验证:启动一个自带 CUDA 的容器,测试能否看到 GPU
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

这种方式带来三大好处:

  1. 环境隔离:不同任务用不同镜像,CUDA 版本互不干扰
  2. 快速交付:镜像即环境,拉下来就能跑
  3. 宿主机极简:只需维护驱动,升级驱动即可支撑所有容器

这也是 Kubernetes 调度 GPU 的基础——K8s 上跑的所有 GPU 任务都是容器,第二部分会详细讲解工具链安装。

本章小结

  • CUDA 是 NVIDIA GPU 通用计算的软件基石,软件栈层次为:驱动 → CUDA Toolkit → cuDNN/NCCL 等加速库 → AI 框架。
  • 版本兼容三主线:驱动 ≥ CUDA 要求;框架匹配 CUDA;CUDA 支持对应 GPU 架构。遇版本问题查官方矩阵。
  • nvidia-smi 显示的 CUDA Version 是驱动支持的最高版本,不等于实际安装的 Toolkit 版本。
  • 容器时代:宿主机只装驱动,CUDA 随镜像走,通过 NVIDIA Container Toolkit 挂载驱动库实现容器内访问 GPU。

动手实验与练习

  1. 概念辨析:向同学解释"为什么 nvidia-smi 里显示的 CUDA Version 和我 pip list 里 PyTorch 的 CUDA 版本可以不一样"。
  2. 有 GPU 环境
bash
# 查看驱动版本与支持的最高 CUDA 版本
nvidia-smi

# 查看 GPU 设备文件(容器挂载的就是这些)
ls -l /dev/nvidia*

# 查看驱动内核模块
lsmod | grep nvidia
  1. 有 Docker 环境:执行 3.4 节的 docker run --gpus all 实验,对比容器内外 nvidia-smi 输出。
  2. 调研练习:访问 PyTorch 官网安装页(pytorch.org),查看当前版本提供了哪几个 CUDA 变体;访问 NVIDIA 官方 CUDA Compatibility 文档,查 CUDA 12.4 要求的最低驱动版本。

第 4 章 AI 工作负载特征与算力平台

本章目标

  • 掌握训练、推理、开发调试三类负载的特征差异
  • 理解 KV Cache、checkpoint 等运维必须懂的概念
  • 了解算力平台的整体架构:资源池化、多租户、调度、计量
  • 理解 GPU 利用率低的常见原因,建立后续学习的整体地图

4.1 训练负载特征

训练任务是 GPU 集群的"重工业",特征鲜明:

特征一:长时间运行

大模型训练动辄数周到数月不间断运行。这意味着:

  • 任何一次硬件故障都可能中断训练,造成数小时甚至数天的进度损失
  • 对集群稳定性要求极高,运维的每一项操作(升级、重启)都要避开训练任务

特征二:多卡多机协同

大模型单机 8 卡放不下,需要几十到几千台服务器协同。所有 GPU 像"一个人"一样步调一致地工作,每个训练步骤(step)结束时要通过网络同步梯度——任何一台机器、一条链路慢了,整个集群都在等它(俗称"短板效应"或"掉队者效应")。

特征三:对网络与存储敏感

  • 网络:梯度同步产生巨大的东西向流量,依赖 InfiniBand/RoCE 高速网络。网络抖动直接表现为训练变慢。
  • 存储:训练需要持续高速读取数据集,存储跟不上,GPU 就会空转等待数据。

特征四:Checkpoint(断点续训)是生命线

训练过程中会定期把模型当前状态保存到存储上,这个快照叫 checkpoint

  • 训练中断后可以从最近的 checkpoint 恢复,而不是从头再来
  • checkpoint 文件巨大(大模型可达数百 GB 到 TB 级),写 checkpoint 时对存储冲击明显
  • 运维视角:checkpoint 的保存频率、存储可靠性、恢复演练,都是训练保障的重点

4.2 推理负载特征

推理是模型"上班干活"的阶段,特征与训练截然不同:

特征一:低延迟要求

用户问一句话,期望秒级响应。推理服务有严格的延迟指标(如首 token 延迟 TTFT、每秒输出 token 数),容量规划要按峰值并发设计。

特征二:高并发、7×24 在线

推理服务面向用户,通常需要多副本 + 负载均衡 + 弹性伸缩,业务高峰低谷明显(如白天高、凌晨低)。

特征三:显存占用与 KV Cache

大模型推理生成文本是逐字(token)生成的:每生成一个字,都要"回看"之前所有内容。为避免重复计算,框架会把历史中间结果缓存在显存中,这就是 KV Cache

  • KV Cache 占用与并发数 × 对话长度成正比,长对话、高并发时 KV Cache 可占掉大半显存
  • 显存装不下更多 KV Cache,就无法接纳更多并发请求——这是推理容量的核心约束
  • vLLM 等推理框架的核心创新(PagedAttention)就是对 KV Cache 的精细化管理

运维视角:推理服务的 GPU 显存监控要重点关注 KV Cache 占用率,它是"还能接多少请求"的直接信号。

特征四:弹性伸缩

推理负载随业务波动,平台需要按负载自动扩缩容推理实例,这是 K8s 大显身手的场景(HPA、KPA 等,后续章节展开)。

4.3 开发调试负载

第三类负载容易被忽视,但在真实集群中占比往往不小:算法工程师用 Jupyter Notebook / SSH 交互式环境开发和调试代码。

资源碎片问题

开发负载的痛点在于:

  • 占用不规律:工程师白天调试几小时,卡挂上任务后可能人去吃饭,GPU 空占着
  • 长期独占:一个 notebook 可能挂着几天不关,整块 GPU 被"占着茅坑不拉屎"
  • 粒度粗:调试代码往往用不满一张卡,却独占整卡

这就是典型的资源碎片:集群账面上"卡都分完了",实际利用率却很低。后续的 GPU 共享技术(MIG、vGPU、HAMi 显存切分)和调度策略(抢占、超售)主要就是为解决这类问题而生。

4.4 什么是算力平台

当集群规模到了几十台、服务几十个团队时,靠人工"SSH 上去占卡"就完全不可行了,需要建设算力平台(智算平台)。其核心思想:

  1. 资源池化:把所有 GPU 汇成一个大池子,用户按需申请,而不是把卡固定分给某人
  2. 多租户:不同团队/项目隔离使用,互不干扰,有配额限制
  3. 任务调度:自动把任务放到有空闲资源的节点上,排队、优先级、抢占
  4. 计量计费:记录谁用了多少卡时,支撑成本核算

整体架构(简化版):

┌───────────────────────────────────────────────────────┐
│  用户层:算法工程师 / 训练任务 / 推理服务                │
├───────────────────────────────────────────────────────┤
│  平台层:Web 控制台 / API / 计量计费 / 用户与配额管理    │
├───────────────────────────────────────────────────────┤
│  调度层:Kubernetes + GPU 调度器(Device Plugin、      │
│         Volcano 批调度、GPU 共享方案)                  │
├───────────────────────────────────────────────────────┤
│  运行时层:容器运行时 + NVIDIA Container Toolkit + 驱动 │
├───────────────────────────────────────────────────────┤
│  资源层:GPU 服务器 | IB/RoCE 网络 | 并行存储          │
└───────────────────────────────────────────────────────┘
        ▲                                ▲
        └──── 可观测性体系:DCGM 监控 / 日志 / 告警 ────┘

对应到本教材:第二部分解决"资源层→运行时层"(驱动与环境),第三、四部分解决"调度层"(虚拟化、K8s 调度),第五部分解决网络,第六部分解决可观测性,第七、八部分解决稳定运行与成本优化。

4.5 GPU 利用率为什么常常很低

很多集群的 GPU 平均利用率只有 20%~40%,钱花了,算力却闲着。常见原因:

原因说明解决方向(后续章节)
数据加载瓶颈存储/网络喂不上数据,GPU 空转等待数据预热、缓存、并行加载(第八部分)
通信等待多卡同步时慢节点拖累全局NCCL 调优、拓扑感知调度(第五部分)
资源独占浪费开发任务独占整卡但用不满MIG/共享切分、超卖(第三、四部分)
任务编排不合理小任务占大卡、任务间空窗期长批调度、混部、弹性伸缩(第四、八部分)
代码效率低用户代码没用好 Tensor Core、batch 太小性能分析工具、混合精度(第八部分)

运维的目标不是让 GPU 100% 跑满(这可能以牺牲任务排队时间为代价),而是在保障 SLA 的前提下,让每一份昂贵算力创造最大价值。 这条主线贯穿全书。

本章小结

  • 训练负载:长时间、多机协同、对网络存储敏感、靠 checkpoint 保命。
  • 推理负载:低延迟、高并发、显存瓶颈在 KV Cache、需要弹性伸缩。
  • 开发负载:交互式、占用不规律,是资源碎片和利用率低的重灾区。
  • 算力平台 = 资源池化 + 多租户 + 任务调度 + 计量计费,K8s 是调度层的事实标准。
  • GPU 利用率低的根因:数据瓶颈、通信等待、独占浪费、编排不合理、代码低效——后续章节逐一解决。

动手实验与练习

  1. 思考题:某集群有 100 张 GPU,账面分配率 95%(几乎都分出去了),实际平均算力利用率只有 25%。结合本章内容,列出至少三种可能的原因。
  2. 概念自测:用自己的话解释 KV Cache 是什么,为什么它决定推理服务能同时接待多少用户。
  3. 有 GPU 环境:执行 nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv -l 2,观察空闲 GPU 的利用率与显存占用,理解"分配≠使用"。
  4. 架构练习:参照 4.4 节的框图,画出你心目中"为 50 人算法团队服务的 GPU 平台"架构草图,标注每一层你目前已知的组件。

本部分总结

通过本部分 4 章的学习,你已经建立了 GPU 集群运维的完整背景知识框架:

  • 为什么:AI 的矩阵运算天然适合 GPU 的海量并行架构,大模型算力需求催生了 GPU 集群
  • 是什么:认识了 NVIDIA GPU 硬件(架构、产品线、关键指标、精度格式)与 CUDA 软件生态
  • 干什么:理解了训练/推理/开发三类负载的特征,以及算力平台的整体架构
  • 难在哪:版本兼容、资源碎片、利用率低——这些正是后续章节要解决的问题

下一部分将进入实操:GPU 服务器与驱动环境,你将亲手完成驱动安装、CUDA 部署和容器工具链配置。