第 1 章

AI 为什么需要 GPU

·约 16 分钟

考试本身的介绍(题量、费用、三个领域的权重)在 AWS 与 NVIDIA 认证概览 里写过,这里直接从内容开始。

整个合集按"一块 GPU → 一座 AI 数据中心"的顺序往外扩。第一步先回答最底层的问题:AI 到底在算什么,为什么这种计算偏偏适合 GPU。

AI、机器学习、深度学习

三个词是一层套一层的关系:

  • 人工智能(AI):最大的圈,泛指让机器完成原本需要人类智能的任务,比如识别、推理、决策、对话。早期的专家系统靠人手写规则,也算 AI。
  • 机器学习(ML):AI 的一个子集。不再由人写规则,而是让程序从数据里学出规律。垃圾邮件分类、房价预测、推荐系统都是典型的机器学习。
  • 深度学习(DL):机器学习的一个子集,用多层神经网络学习。和传统机器学习最大的区别是特征也由模型自己学:传统方法要人先设计特征(比如"邮件里出现了几次'免费'"),深度学习直接吃原始数据(像素、文字、声音),在层层网络里自己提炼特征。

生成式 AI 和大语言模型(LLM)又是深度学习里的一类,基本都建立在 Transformer 架构上。

传统编程传统机器学习深度学习
规则从哪来人写从数据学从数据学
特征从哪来人定人设计模型自己学
需要的数据量不需要中等大量
需要的算力低中等,CPU 通常够用高,基本离不开 GPU

深度学习里常见的几种网络结构:

网络擅长典型应用
CNN(卷积神经网络)提取图像的局部特征图像分类、目标检测、医学影像
RNN / LSTM按顺序逐个处理序列早期的语音识别和机器翻译,现在大多被 Transformer 取代
Transformer用注意力机制同时看整段序列,训练可以并行大语言模型、机器翻译,也用到了图像上(ViT)
GAN(生成对抗网络)生成器和判别器互相博弈图像生成、风格迁移
扩散模型从噪声出发一步步去噪文生图、视频生成

机器学习按学习方式还可以分几类,考纲不深究,知道名字即可:

  • 监督学习:数据带标签(这张图是猫),学输入到标签的映射。分类、回归都属于这类。
  • 无监督学习:数据没标签,让模型自己找结构,比如聚类、降维。
  • 强化学习:模型在环境里试错,按奖励调整策略。下棋、机器人控制、LLM 的 RLHF 对齐阶段都用到。
  • 自监督学习:从数据本身造标签,比如遮住句子里的一个词让模型猜。大语言模型的预训练就是这么做的,所以才能用上海量无标注文本。

AI 这几年为什么突然加速

深度学习的基本思想几十年前就有了,真正爆发是 2012 年以后。通常归结为几个条件同时成熟:

  1. 算力。2012 年 AlexNet 用两块 GTX 580 训练,在 ImageNet 比赛上大幅领先,GPU 训练神经网络从此成为主流。之后 GPU 每一代都专门为 AI 加硬件单元(后面讲的 Tensor Core),单卡 AI 算力每一代都成倍提升。
  2. 数据。互联网积累了海量的图片、文本、视频,ImageNet 这样的大规模标注数据集让训练深度模型成为可能。
  3. 算法。2017 年的 Transformer 让模型可以高效并行训练,而且规模越大效果越好(scaling law),直接催生了大语言模型。
  4. 软件生态。CUDA 在 2006 年推出,让 GPU 能做通用计算;之后 PyTorch、TensorFlow 这些框架把 GPU 编程的门槛降到了"写 Python",开源模型和社区又让新方法传播得很快。
  5. 获取门槛降低。云厂商按小时出租 GPU,小团队不用自建机房也能训练模型。开源和商用的预训练基础模型越来越多,企业不用从头训练,拿来微调或者直接调用 API 就能用上。

这几条互相推动:更多算力让更大的模型可行,更大的模型效果更好,吸引更多投资去造更多算力。

AI 用在哪些行业

行业典型用例
医疗与生命科学医学影像辅助诊断、药物发现、基因组分析
金融欺诈检测、风险评估、智能客服
零售与电商推荐系统、需求预测、商品识别
制造视觉质检、预测性维护、数字孪生
汽车与交通自动驾驶、智能交通
电信网络优化、故障预测
通用办公大模型对话、代码助手、文档总结、语音识别与合成
科研天气与气候预测、蛋白质结构预测

NVIDIA 针对不少行业做了专门的软件平台(医疗的 Clara、自动驾驶的 DRIVE、机器人的 Isaac 等),放在第 2 章一起看。

训练和推理

一个模型的一生分两段:训练是让模型从数据里学出参数,推理是用学好的模型处理新输入。两者对硬件的要求差别很大。

训练在算什么

训练一遍一遍地重复三步:

  1. 前向传播:输入数据,按当前参数算出预测结果;
  2. 反向传播:比较预测和正确答案,算出每个参数该往哪个方向调(梯度);
  3. 更新参数:优化器按梯度更新参数。

整个数据集可能要过好几遍(epoch),大模型训练动辄几周。训练关心的是吞吐,也就是单位时间内能处理多少数据,以及多久能把模型训完。

训练吃显存。除了模型参数本身,还要存梯度、优化器状态和中间激活值。用 Adam 优化器做混合精度训练时,一个粗略的估算是每个参数约 16 字节(半精度参数 2 + 梯度 2 + FP32 主参数 4 + Adam 的两份状态各 4),还没算激活值。按这个估算,一个 70 亿参数(7B)的模型全参数训练光这部分就要 112 GB,一张 80 GB 的卡装不下,必须多卡分摊。

推理在算什么

推理只做前向传播,不需要梯度和优化器状态,显存主要花在模型参数上:7B 模型用 FP16 存储约 14 GB,70B 模型约 140 GB,后者一张 80 GB 的卡也放不下。

推理关心的是延迟(一个请求多久返回)、吞吐(每秒能处理多少请求或生成多少 token)和成本(每个请求花多少钱)。常用手段:

  • 量化:把参数从 FP16 压到 INT8、FP8 甚至 FP4,显存减半或更多,速度更快,精度略有损失;
  • 批处理:把多个请求拼成一批一起算,提高 GPU 利用率,代价是单个请求要等凑批;
  • 横向扩展:多开几个模型副本分担请求。

大语言模型的推理还分两个阶段:prefill 一次性处理整段输入,计算密集;decode 一个 token 一个 token 地往外生成,每步都要把全部参数从显存读一遍,瓶颈在显存带宽而不是算力。所以大模型推理卡看重显存容量和带宽。

对照

训练推理
计算前向 + 反向 + 更新,反复多轮只有前向
关心什么吞吐、训完要多久延迟、吞吐、单次成本
显存参数 + 梯度 + 优化器状态 + 激活,远大于模型本身主要是参数,外加 KV cache 等
常用精度BF16、FP8 混合精度FP16、FP8、INT8、FP4
规模大模型要多卡、多机协同小模型单卡甚至一张卡的一部分(MIG)就够;大模型也要多卡
运行方式批处理作业,跑完就结束长期在线服务,随请求量伸缩

这张表后面会反复用到:第 3 章按用途选硬件、第 6 章选调度方式、第 7 章选 GPU 共享方式,出发点都是训练和推理的这些差别。

CPU 和 GPU 的架构差别

设计目标不同

CPU 为低延迟设计。 核心数量少(服务器 CPU 一般几十到一百多个核),但每个核都很强:大缓存、分支预测、乱序执行,尽量让一条指令流跑得快。操作系统、数据库、业务逻辑这些分支多、前后依赖强的代码,适合 CPU。

GPU 为高吞吐设计。 放了成千上万个相对简单的计算核心,组织成一个个 SM(流式多处理器)。它不追求单个线程快,而是同时跑海量线程:一批线程在等数据,就切换到另一批,用并行度掩盖延迟。

深度学习的计算主体是矩阵乘法:同一个操作作用在海量数据上,彼此独立、几乎没有分支,正好是 GPU 擅长的形状。

CPUGPU
核心几十到一百多个,单核强上万个,单核简单
优化目标单线程延迟整体吞吐
擅长串行、分支多的逻辑大规模并行的数值计算
缓存与控制逻辑占芯片面积大占比小,面积留给计算单元
内存DDR,容量大,带宽每秒几百 GBHBM,容量较小,带宽每秒数 TB(H100 SXM 约 3.35 TB/s)

GPU 不是取代 CPU

GPU 是插在服务器上的加速器,本身不跑操作系统。CPU 负责调度、数据预处理、读写磁盘和网络,把计算密集的部分交给 GPU。这种 CPU + GPU 分工的模式叫加速计算。所以 AI 服务器里 CPU、内存、网络、存储都不能太弱,否则 GPU 会闲着等数据(第 7 章讲 GPU 利用率低的原因时还会提到)。

Tensor Core 与数值精度

GPU 里有两类计算单元:

  • CUDA Core:通用的标量计算单元,做普通的浮点和整数运算;
  • Tensor Core:专门做矩阵乘加的单元,2017 年的 Volta 架构(V100)首次加入,一条指令完成一小块矩阵运算,AI 计算的主力。

Tensor Core 每一代都在支持更低的精度。精度越低,每个数占的位越少,同样的芯片面积和显存带宽能算更多的数,代价是表示范围和精度变差。

格式每个数占常见用途备注
FP648 字节科学计算(HPC)AI 基本不用
FP324 字节传统训练的基准精度
TF32内部格式Ampere 起 Tensor Core 处理 FP32 运算的格式FP32 的范围,精度更低,对用户透明
BF162 字节当前训练主流和 FP32 一样的表示范围,不容易溢出
FP162 字节训练与推理范围小,训练时要配合 loss scaling
FP81 字节训练与推理Hopper 起支持,配合 Transformer Engine 自动管理精度
INT81 字节推理量化
FP4半字节推理Blackwell 起支持

混合精度是训练的常规做法:大部分计算用 BF16 或 FP8 跑,保证速度;对精度敏感的部分(比如参数的主副本、累加)保留 FP32,保证训练稳定。

速查

词一句话
AI / ML / DL一层套一层:AI 最大,ML 从数据学规律,DL 用多层神经网络连特征也自己学
训练前向 + 反向 + 更新,吃算力和显存,看吞吐
推理只有前向,看延迟、吞吐和成本
prefill / decodeLLM 推理两阶段,前者吃算力,后者吃显存带宽
CPU vs GPU低延迟少核 vs 高吞吐众核,两者分工协作
Tensor Core专做矩阵乘加的单元,Volta 起
混合精度主体低精度提速,关键部分 FP32 保稳定