跳转到内容

为什么会有 AI Infra

2012 年,AlexNet 在两块 GTX 580 上训练了大约六天。每块卡只有 3 GB 显存,装不下整个网络,于是作者手写了跨卡的通信代码,把网络按通道切成两半。

这在当时是一个工程细节,不是一个领域。

十三年后,训练一个前沿模型需要上万张加速器协同数月,机房的电力供应成为比芯片供应更硬的约束,一根光模块的误码能让整个集群慢 20%,而"每百万 token 多少钱"成了产品能否成立的前提。中间发生的事,就是 AI Infra 从"细节"变成"学科"的过程。

本章讲这个过程,以及它留下的四个约束——后面十一章都在这四个约束里打转。

第一次:从一块卡到一台机器(约 2012–2016)

Section titled “第一次:从一块卡到一台机器(约 2012–2016)”

深度学习复兴的头几年,核心问题是"怎么用好一块 GPU"。

为什么是 GPU? 神经网络的主体运算是矩阵乘法——大量彼此独立的乘加。CPU 为低延迟的串行任务优化,有复杂的分支预测、乱序执行、大缓存,但只有几十个核心;GPU 为高吞吐的并行任务优化,砍掉这些复杂机制,换来数千个简单核心。对矩阵乘这类"算术密度高、分支少、数据规整"的负载,GPU 的吞吐能高出一到两个数量级。

CUDA(2006 年发布)让通用计算成为可能,cuDNN(2014)把卷积、池化、归一化等标准算子做到接近硬件极限。这一阶段的关键词是算子优化:把单个 kernel 写快。

同时出现了第一批分布式训练系统:Google 的 DistBelief(2012)、参数服务器架构(Li et al., 2014)。它们主要服务两类负载——大规模稀疏模型(广告点击率预估)和 CNN 的数据并行。

第二次:从一台机器到一个集群(约 2017–2021)

Section titled “第二次:从一台机器到一个集群(约 2017–2021)”

Transformer(2017)改变了模型的形状。它几乎全部由稠密矩阵乘构成,参数量可以随层数和宽度自由堆叠,且堆叠确实带来效果提升——这就打开了"往大了做"的正反馈。

BERT-Large(2018,340M 参数)还能在单机八卡上训完,GPT-3(2020,175B)就必须切到几千张卡上。"模型放不进一张卡"从例外变成常态,于是并行策略成了必修课。

这一阶段诞生了今天仍在用的核心工具:

年份工作解决什么问题
2017Volta / Tensor Core专用矩阵乘单元,半精度吞吐提升一个数量级
2018混合精度训练成熟用 FP16 算、FP32 存,省显存省带宽
2019Megatron-LM张量并行:在单个算子内部切矩阵
2019GPipe / PipeDream流水线并行:按层切,并处理由此产生的空闲
2020ZeRO把冗余的优化器状态、梯度、参数分片存储
2020NCCL 成熟集合通信的事实标准

关键词从算子优化变成并行策略。工程师要回答的问题不再是"这个 kernel 能不能更快",而是"这个模型该怎么切、切完通信量是多少、能不能和计算重叠"。

第三次:从算力约束到系统约束(约 2022 至今)

Section titled “第三次:从算力约束到系统约束(约 2022 至今)”

模型继续变大,但瓶颈换了位置。四件事同时发生:

内存墙。 算力的增长速度持续快于带宽的增长速度。结果是越来越多的算子不再受限于"能算多快",而是受限于"数据搬得多快"。FlashAttention(2022)是这个转变的标志性工作——它的加速完全来自减少显存读写,一个浮点运算都没有省。这类"不改变数学、只改变数据流动"的优化,此后成为主流。

推理成本主导。 模型训练一次,推理无数次。当一个模型每天服务数十亿次请求,推理侧 1% 的成本优化就超过训练侧 50% 的优化。vLLM 的 PagedAttention(2023)把显存碎片消除、吞吐提升数倍,这类工作的经济价值超过多数训练侧改进。

可靠性成为一等问题。 万卡集群的平均无故障时间以小时计。一个训练作业跑两个月,中间必然遇到几十次硬件故障。于是"有效训练时间占比"成了比峰值性能更重要的指标——一个跑得慢但从不掉链子的集群,实际产出可能高于一个跑得快但天天挂的集群。

电力成为硬约束。 单卡功耗从 300 W 走向 1000 W 以上,单机柜从 10 kW 走向 100 kW 以上,风冷让位于液冷。很多地方买得到卡,但供不上电、散不掉热。这是唯一一个软件解决不了的约束。

关键词变成端到端效率:不是某一层快,而是从数据到美元的整条链路不浪费。

这个领域被推着走的根本原因,是训练算力的增长速度远超硬件本身的进步:

里程碑年份训练算力(约)硬件规模(约)
AlexNet20125×10175 \times 10^{17}2 块 GTX 580,6 天
ResNet-5020151×10181 \times 10^{18}8 卡,数天
BERT-Large20186×10196 \times 10^{19}64 TPU,4 天
GPT-3 175B20203×10233 \times 10^{23}约万卡·天量级
PaLM 540B20222.5×10242.5 \times 10^{24}6144 TPU v4,约 2 个月
Llama 3 405B20244×10254 \times 10^{25}16384 张 H100,约 2 个月

从 AlexNet 到 Llama 3,训练算力增长了约八个数量级。同期单卡算力(同精度、稠密)大约增长了两个半数量级。

108⏟总算力增长÷102.5⏟单卡增长≈105.5\underbrace{10^{8}}_{\text{总算力增长}} \div \underbrace{10^{2.5}}_{\text{单卡增长}} \approx 10^{5.5}

差出来的五个半数量级,全部由系统工程填补——更多的卡、更好的并行策略、更高的利用率、更低的数值精度、更少的浪费。

这就是这个领域存在的理由:硬件给不了的,系统得想办法给。

今天做 AI Infra,实质是在四个约束下求解。

峰值算力是上限,但实际拿到多少取决于利用率。一个千卡训练如果只发挥出四成算力,意味着六成的钱打了水漂。利用率的损失来自哪里——通信没藏住、数据供不上、算子写得差、并行策略选错——是全书最主要的话题。

两层含义,都很硬:

  • 容量决定"放不放得下"。一个 70B 参数的模型,训练时光是模型状态就要 1.1 TB,远超单卡的 80–192 GB。
  • 带宽决定"跑多快"。当一个算子的运算量相对于它要搬的数据太少时,加速器大部分时间在等数据。

容量靠分片和卸载解决,带宽靠融合和降精度缓解。第三、四章会把这两件事量化。

模型切得越细,卡与卡之间要交换的数据越多。而通信带宽的层级落差巨大——同一台机器内部的卡间带宽,可以比跨机器高一个数量级。

于是并行策略的设计本质上是一个权衡:切得细省显存但通信重,切得粗通信轻但放不下。第六章讲通信的代价模型,第十章讲怎么权衡。

这是唯一一个不能靠软件解决的约束。它决定了:

  • 单机柜能放多少卡(功率密度)
  • 集群规模的物理上限(园区供电能力)
  • 为什么先进液冷机房把 PUE 做到 1.1 以下是件大事(同样的电,多出近两成给计算)
  • 为什么很多"有卡"的地方仍然建不成集群

这才是难的地方:

  • 降低数值精度同时缓解算力、内存、通信三项——但可能损害模型质量。
  • 增加并行度缓解内存——但加重通信。
  • 提高功耗上限换取性能——但撞散热墙,且能效未必更好。
  • 增大批量提高算力利用率——但增加内存占用,且可能影响收敛。

AI Infra 的工作就是在这个四维空间里找可行解,而不是在任何单一维度上求最优。

一句话:让上层的人不必关心下层的细节,而在必须关心时,替他们关心。

具体分三类:

类型做什么典型产出什么时候最值钱
让它跑起来环境、驱动、框架、集群搭建、打通链路一个能用的训练/推理平台从 0 到 1 时
让它跑得快并行策略、内核优化、通信调优、数据管道利用率从两成到四成百卡到千卡规模
让它一直跑故障检测、检查点、弹性、监控、容量规划有效时间占比从七成到九成五千卡以上规模

三类工作的相对价值随集群规模变化。小规模时第二类回报最高;万卡规模时第三类反而更值钱——因为在那个规模上,"不挂"比"快"稀缺得多。

与算法/建模:算法决定要算什么,Infra 决定怎么算得快、算得省。边界经常模糊——FlashAttention 是算法还是系统?MoE 是模型设计还是并行策略?量化是压缩方法还是工程手段?这些交叉地带往往收益最大,也最需要两边都懂的人。

与传统 HPC:共享大量工具(MPI、InfiniBand、Slurm、拓扑感知调度)与思路(强扩展、通信避免、roofline 分析)。差别在于 HPC 多用双精度、紧耦合、问题规模固定;AI 多用低精度、可容忍一定异步、规模可变。从 HPC 转过来的人上手最快,缺的主要是框架与生态。

与云计算/SRE:共享容器、调度、可观测性、SLO 这套方法论。差别在于 AI 负载的资源粒度粗(整卡起步)、作业是全有或全无的、状态巨大(TB 级检查点)、且对拓扑敏感。

从这三个方向转过来的人,缺的东西各不相同:

背景通常缺建议重点读
算法 / 建模硬件与网络直觉第 3、6 章,第二、三卷
HPC框架、生态、低精度第 5、12 章,第四、五卷
云原生 / SRE加速器、数值、并行第 3、5、10 章,第二、四卷
后端 / 一般软件以上全部顺序读完本卷

"AI Infra 就是运维 GPU 集群。" 运维是其中一部分,但核心工作是性能工程与系统设计。判断标准很简单:一个纯运维岗不需要知道 6ND6ND 是什么,而 AI Infra 需要天天算这个(第十一章)。

"只要买最强的卡就行。" 软件栈成熟度往往比峰值算力更决定实际吞吐。一块峰值高但算子覆盖不全、通信库不成熟的卡,实际产出可能只有标称的零头。

"大模型是全部。" 按集群规模与营收贡献计,推荐/广告系统在多数大型互联网公司长期是最大的 AI 负载,只是它不上新闻。第八章会讲清它与大模型在系统层面的根本差异。

  • 三次转折:算子优化(2012–2016)→ 并行策略(2017–2021)→ 端到端效率与可靠性(2022–)。
  • 训练算力十三年增长约八个数量级,单卡算力只增长约两个半——差额五个半数量级由系统工程填补。
  • 四个约束:算力、内存(容量 + 带宽)、通信、电力散热;它们互相耦合,只能求可行解不能求单项最优。
  • 三类工作:让它跑起来、跑得快、一直跑;集群越大,第三类越值钱。
  • 参数服务器至今仍是推荐系统主流;别把大模型的经验当作全部。