硬件炼体
你以为训练大模型最大的瓶颈是算力 FLOPS。可算力之门前,真正的战场在算力与带宽之间——GPU 的浮点吞吐每年翻倍,显存带宽却爬得像蜗牛。内存墙之壁在裂缝里立赌:你以为堆 GPU 就能加速,我赌你堆再多也逃不出等待。
算力之门
算力之门的门楣上刻着八个字:万算归物,瓶颈在墙。门内是一面巨壁——壁上刻着 GPU 的架构图,SM 阵列、显存堆栈、互联总线纵横交错。高斯老祖站在壁前,手里只有一块黑板,上面写着:瓶颈不是算力,是带宽。
「你训练大模型,以为瓶颈在浮点算力。可 GPU 的算力每年翻倍,显存带宽却增长缓慢——算得再快,数据喂不过来,GPU 就在空转。告诉我,训练大模型最大的瓶颈是什么?先猜,猜错了也没关系,内存墙会记账。」
「又来了一个想堆算力的。打个赌——你觉得训练大模型最大的瓶颈是什么?你每猜错一次,墙厚一分,我都记下来。」
瓶颈之赌 · 训练大模型最大瓶颈预测挑战器
反直觉下注(四选一,可连错)→ 挑战展开 → AI硬件全景图拼合
AI 硬件与计算架构全景 · 核心挑战图谱
详解 · K16-08 内存墙问题:DRAM 带宽 vs 算力需求的矛盾
内存墙不是"显存装不下",而是"数据搬不动"——算力与带宽的增速存在剪刀差。实测对照:A100 80GB 的 FP16 张量峰值 312 TFLOPS、HBM2e 带宽 2.0 TB/s;H100 SXM 的 FP16 峰值 989 TFLOPS、HBM3 带宽 3.35 TB/s。两年间算力涨 3.2 倍,带宽只涨 1.65 倍。Horowitz(ISSCC 2014)给出的长周期数据更刺眼:峰值算力约每两年翻一番以上,DRAM 带宽年增仅约 20%。后果可以用一个门槛值量化——算术强度门槛 = 峰值算力 ÷ 峰值带宽,A100 约 156 FLOP/Byte,H100 约 295 FLOP/Byte;任何算术强度低于这个值的算子,无论算力多强都只能跑在带宽限上。element-wise 算子读写 12 字节(FP32 的 2 读 1 写)只做 1 次浮点运算,算术强度约 0.08,比门槛低三个数量级,于是"312 TFLOPS 的卡只跑到 5%";而 GEMM 的算术强度随矩阵规模线性上升(方阵 n 时理想值约 n/6),n=1024 时约 171,逼近门槛,才配得上峰值算力。这也解释了本章序章那道四选的谜底:算力、显存、互联都能靠堆硬件缓解,唯独带宽受制于封装、引脚与功耗物理,是唯一不能"用钱直接买平"的一项。花书 12.1 与 Horowitz 2020 都把它列为 AI 硬件第一性约束。
GPU 架构 · SIMT 并行
壁上的架构图活了过来——无数小方格排成阵列,每个方格是一个 SM(流多处理器),每个 SM 里又藏着成百上千个 CUDA 核心。高斯老祖指着阵列:「GPU 不是一个大 CPU,是上千个小工人的合唱团。SIMT 让它们同唱一首歌——同一指令,不同数据。」
「CPU 追求低延迟,一个核心把一件事做到极致;GPU 追求高吞吐,上千个核心同时做很多件简单的事。SIMT(单指令多线程)是 GPU 的灵魂——32 个线程组成一个 warp,同一条指令同时执行,只是数据不同。线程块是协作单元,网格是线程块的集合。」
「上千个核心很威风?可它们都要从显存拿数据。喂不饱的时候,就集体空转。你看它们排队等数据的样子。」
GPU 架构可视化器 · SM 阵列 + SIMT + 线程网格
点击 SM 阵列看内部结构 → 切换 warp 视图 → 线程块/网格可视化
SM 阵列 · 流多处理器网格
SIMT 执行 · warp(32线程) 同指令
线程块与网格 · Block / Grid
详解 · K16-01 GPU 架构要点与训练卡选型:SM/SIMT 回顾与规格对比
把 GPU 看成一个"SM 阵列 + 多级存储 + 高速 I/O"的系统,选型才有抓手。以两块当代训练卡对账:A100 SXM 80GB——108 个 SM、FP16/BF16 张量峰值 312 TFLOPS(稀疏 624)、FP32 非张量 19.5 TFLOPS、HBM2e 2.0 TB/s、NVLink3 600 GB/s、TDP 400W;H100 SXM 80GB——132 个 SM、FP16/BF16 989 TFLOPS(稀疏 1979)、FP8 3958 TFLOPS、FP32 非张量 67 TFLOPS、HBM3 3.35 TB/s、NVLink4 900 GB/s、TDP 700W。SIMT 层面:32 线程组成一个 warp 锁步执行,一个 SM 容纳数十个 warp 常驻(H100 每 SM 最多 64 warp),靠切换 warp 掩盖访存延迟——这是"海量并行掩盖延迟"的机制,但掩盖不等于消除。训练卡选型看五件事:①单卡显存能否装下训练态(混合精度 Adam 约 18 字节/参数,70B 即 1.26 TB,必须多卡分片);②互联带宽(决定多卡扩展效率);③是否支持 BF16/FP8(直接决定可用算力档位);④HBM 带宽(决定非 GEMM 算子的下限时间);⑤软件栈与供货合规(出口管制版本如 A800/H800 会裁剪互联带宽)。推理卡则是另一套权衡:显存容量决定并发与 KV cache,单位 token 成本比峰值 TFLOPS 更重要。架构原理详见 CS 手册 ch23。
详解 · K16-04 GPU 并行计算的性能指标:FLOPS / 带宽利用率 / 占用率
三个指标各管一段,合起来才能定位瓶颈。①FLOPS 与 MFU:实际 FLOPS = 算子浮点运算次数 ÷ 时间(GEMM 为 2MNK),MFU = 实际 ÷ 硬件峰值。大模型训练的 MFU 能到 30%~50% 已属优秀(PaLM 报告 57.8%,LLaMA 系列约 40%),剩下的时间被通信、气泡、非 GEMM 算子吃掉。②带宽利用率:实测访存字节数 ÷ 时间 ÷ 峰值带宽,融合良好的 element-wise 应接近 80%~90%;低于 50% 通常是访存未合并(coalescing)或 cache line 浪费。③占用率 occupancy:活跃 warp 数 ÷ SM 支持的最大 warp 数,由每线程寄存器数与共享内存用量共同决定(H100 每 SM 64 warp 上限);占用率高只是"有足够多的 warp 可切换",不等于跑得快——若每个 warp 都在等全局内存,占用率再高也是空转。组合诊断:带宽高而 FLOPS 低 → 指令或延迟受限(增加 ILP、减少同步);两者都低 → 未合并访存或 kernel 启动开销;FLOPS 高而带宽低 → 计算受限,应上 Tensor Core 或降精度。PAP Ch7 与 Nsight Compute 的 SOL(Speed of Light)报告正是按这套口径组织的。
显存管理 · OOM 之痛
SM 阵列旁竖着一座显存塔——塔分四层:底层是模型权重,中层是梯度,上层是优化器状态,顶层是激活值。高斯老祖递给你一个算盘:「训练一个 7B 模型需要多少显存?你来算。算错了,OOM 教你做人。」
「训练显存 = 权重 + 梯度 + 优化器状态 + 激活。纯 FP32 训练 7B 模型:权重 28GB + 梯度 28GB + 优化器(m+v)56GB + 激活 28GB ≈ 140GB,单卡 80GB 放不下。混合精度把权重和梯度压到 FP16(各 14GB),但 Adam 仍需 FP32 主权重与 m/v 共 84GB——省下的只有权重量级,这就是 ZeRO 分片存在的理由。」
「你以为 80GB 显存很大?训练 70B 模型你试试。OOM 不是 bug,是物理定律——你的模型比你的显存大。」
显存估算器 · 参数规模 + 显存分解 + 混合精度
选择模型规模(7B/13B/70B) → 看显存四层分解 → 切换混合精度对比
模型规模选择
精度模式 · FP32 vs 混合精度(FP16+FP32)
详解 · K16-02 显存管理实战:模型/梯度/优化器/激活的估算与 OOM 排查
先立一个换算尺:1 字节/参数时,参数量 P(单位 B)对应 P 个 GB,即"1P = P GB"。纯 FP32 + Adam 的账:权重 4P + 梯度 4P + 一阶动量 m 4P + 二阶动量 v 4P = 16P,再加激活 4P,合计 20P;7B → 140GB,70B → 1.4TB。混合精度(AMP)的账:FP16 权重 2P + FP16 梯度 2P + 优化器 12P(FP32 主权重 4P + m 4P + v 4P)+ 激活 2P,合计 18P;7B → 126GB,70B → 1.26TB。注意这里最容易记错的一点:混合精度只把权重、梯度、激活减半,Adam 的状态反而因需要 FP32 主权重从 8P 涨到 12P,所以总账只从 20P 降到 18P,仅省 10%——不是"减半"。激活显存另有特点:随 batch × 序列长度 × 层数线性增长,是唯一可以用算力换的项——梯度检查点(activation checkpointing)只存层边界、反向时重算,约 +30% 算力换 -70% 激活。OOM 排查四步:①看 torch.cuda.max_memory_allocated 与 reserved 的差(reserved 远大于 allocated 是缓存分配器持有,非泄漏);②看碎片(reserved 够但仍 OOM,需 PYTORCH_CUDA_ALLOC_CONF=expandable_segments 或减 batch);③检查是否在推理段漏了 torch.no_grad / 是否在循环里累积了带梯度的张量;④临时救急用梯度累积把峰值批切小。PyTorch 官方显存优化文档与 d2l 的"硬件与显存"章节是标准出处。
详解 · K16-03 CUDA 的 AI 训练实战:性能分析 / 混合精度 / kernel 级调优
混合精度三件套:FP16 或 BF16 做前向与反向的矩阵运算、FP32 保存主权重、GradScaler 做损失缩放防梯度下溢。选 FP16 还是 BF16 看动态范围:FP16 是 5 位指数 10 位尾数,范围窄、需 loss scaling;BF16 是 8 位指数 7 位尾数,指数位与 FP32 同宽,训练几乎不用 loss scaling,代价是尾数精度只剩 8 位(约 2~3 位十进制有效位),因此被称为"深度学习的精度甜点"。H100 起引入 FP8(OCP 标准的 E4M3/E5M2),在 FP16 基础上再翻倍算力,但需要 per-tensor 或 per-channel 的缩放因子配合。性能分析两条路径:Nsight Systems 看 CPU/GPU 时间线与 kernel 间隙(找气泡与数据加载瓶颈),Nsight Compute 看单个 kernel 的 SOL 吞吐占比、访存模式与占用率(找算子内部瓶颈)。kernel 调优的入门四招:①算子融合——把 element-wise 与前一个 GEMM 合并,省掉一次全局内存往返(FlashAttention 就是把 Softmax 融合进注意力、把访存从 O(n²) 降到 O(n) 的典范);②访存合并——让同一 warp 的 32 个线程访问连续的 128 字节;③共享内存分块(tiling)复用数据;④避免 warp divergence(分支内线程走不同路径会串行执行)。编程模型细节见 CS 手册 ch23,官方文档见 CUDA Programming Guide 与 Nsight 用户手册。
第一崩塌 · 内存墙
显存塔崩塌,你跌入一道灰色的墙。墙的这一面是 GPU 的算力核心,标着"312 TFLOPS";墙的另一面是显存带宽,标着"2TB/s"。你启动训练,却发现 GPU 利用率只有 30%——大部分时间核心在空转,等着数据从显存搬过来。高斯老祖沉默了。墙里传来一个不带温度的声音:
「你的 GPU 算力 312 TFLOPS,显存带宽 2TB/s。算一个 element-wise 操作,每个数据只做 1 次运算,却要从显存读 4 字节——算力利用率不到 5%。你的 GPU 在等数据,不在算。第一笔账,我记下了。」
「算力利用率 = 实际算力 / 峰值算力。内存墙的本质:算力增长远快于带宽增长,算术密度低的算子(如 element-wise、softmax)变成带宽受限。你堆再多 TFLOPS,带宽跟不上,利用率就上不去。墙不会消失,只会被不断跨越。」
内存墙 · 算力利用率复现 + Roofline 分界诊断
拖训练步数看利用率崩塌 → 展开算力vs带宽分界 → 内存墙可视化
算力利用率崩塌 · 训练步数
step 1Roofline 分界 · 计算受限 vs 带宽受限
详解 · K16-09 HBM 高带宽内存:3D 堆叠与带宽优势
传统 GDDR 把显存颗粒焊在 PCB 上、靠板级走线连到 GPU,位宽受引脚与走线数量限制,单卡大约 1 TB/s 见顶,而且每 bit 传输的能耗随频率与距离上升。HBM 换了思路:把 DRAM die 用 TSV(硅通孔)垂直堆叠 8~12 层,通过硅中介层(interposer,如 CoWoS)与 GPU 并排互连,总线可以做到每 stack 1024 位、整卡 5000 位以上,用"极宽位宽 + 适中频率"替代"窄位宽 + 高频率"——同样的带宽,能耗低一个量级。数字上:HBM2e(A100)2.0 TB/s、HBM3(H100)3.35 TB/s、HBM3e(H200)4.8 TB/s、B 系列已到 8 TB/s 量级。但必须清醒:HBM 解决的是"搬得动",不是"装得下"——容量受堆叠层数与 die 密度限制,80GB~141GB 已是单封装的实用上限,价格与良率都高,且 CoWoS 封装产能本身曾是 2023~2024 年 AI 芯片出货的真实瓶颈。另一个常被忽略的点:HBM 带宽提升(1.65 倍)慢于算力提升(3.2 倍),意味着内存墙在每一代其实都在变宽而不是变窄,所以近存计算(HBM-PIM,把简单逻辑放进 DRAM 底座)与存内计算才会被当作长期解法。3D 堆叠 / TSV / 微凸块的工艺细节见半导体手册 ch19 与 ch24。
Roofline 模型 · 算力 vs 带宽
墙后是一片坐标系——横轴是算术密度(FLOPs/Byte),纵轴是可达算力(TFLOPS)。一条折线横亘其上:左侧是带宽斜坡,右侧是算力平顶,拐点处两者相交。高斯老祖:「这就是 Roofline 模型——它告诉你每个算子到底卡在哪。你把算子放上去,看谁在墙下,谁在墙顶。」
「Roofline 的核心:可达算力 = min(峰值算力, 峰值带宽 × 算术密度)。拐点 = 峰值算力 / 峰值带宽。GEMM 算术密度高,在平顶上——计算受限;element-wise 算术密度低,在斜坡上——带宽受限;Attention 介于两者之间。优化方向完全不同。」
Roofline 模型可视化器 · 曲线 + 算子定位 + 拐点
Canvas 绘制 Roofline 曲线 → 拖算子看定位 → 切换硬件参数看拐点移动
Roofline 曲线 · 算术密度 vs 可达算力(对数坐标)
算子定位 · 拖动算子到曲线
硬件参数 · 切换 GPU 看拐点移动
详解 · K16-11 脉动阵列 Systolic Array:AI 工作负载的映射要点
Kung 1982/1988 提出的脉动阵列,是"用数据流动换访存"的经典结构:二维 PE 网格中,每个 PE 每拍只做一次乘加,并把部分和沿着固定方向传给邻居;数据像心跳一样有节奏地在阵列里流动(systolic 一词即源于此)。关键在于只有阵列边缘与内存交互:做 n×n 矩阵乘时,访存量从 O(n³) 降到 O(n²),中间的 n³ 次部分和累加全在 PE 之间的寄存器传递中完成——这正是把 Roofline 斜坡上的算子拉向平顶的办法。TPU v1(Jouppi 2017)用 256×256 的 8 位阵列、700MHz 做到 92 TOPS,采用权重驻留(weight-stationary)数据流,并刻意去掉缓存、分支预测、乱序执行,把面积与功耗全部让给乘加单元与片上存储,换来同期 GPU 15~30 倍的 TOPS/W。代价同样明显:只擅长规整的 GEMM 与卷积,遇到稀疏、动态形状、复杂控制流效率骤降;映射效率取决于矩阵形状与阵列形状的匹配——小矩阵或瘦长矩阵要 padding 或切分,PE 利用率可能掉到一半以下。因此"能不能用脉动阵列"本质上是一道数据流映射题:编译器(如 XLA)要把计算图静态编译成阵列指令,无法静态化的部分就退回标量单元。数据流推导详见 CS 手册 ch24。
详解 · K16-10 存内计算 CIM:用物理定律算矩阵乘
既然瓶颈在搬运数据,最激进的办法是让计算就地发生在存储里。以忆阻器/ReRAM 交叉阵列为例:把权重写成每个交叉点的电导 G,把输入编码成字线电压 V,根据基尔霍夫电流定律,位线上汇聚的电流 I = Σ GᵢVᵢ 天然就是一次矩阵向量乘——一次读操作完成 O(n²) 次乘加,时间上是 O(1),且模拟计算的能耗比数字方案低 1~2 个数量级(Wong 2020 综述)。这正是"把 O(n³) 的搬运消灭掉"的终极形态。但工程现实要打三个折扣:①器件非理想性——电导漂移、写入噪声、I-V 非线性,使实际精度只有 4~8 位;②外围电路开销——阵列本身几乎不耗电,但 DAC/ADC 转换与驱动电路往往吃掉 60% 以上的面积与能耗(IEDM 多篇实测);③可编程性差——权重写入慢,适合权重固定的推理,不适合频繁更新的训练。因此 CIM 的现实落点是超低功耗边缘推理与 always-on 感知(关键词唤醒、微型视觉),而不是数据中心训练。与之区别的"近存计算"(HBM-PIM、UPMEM)仍用数字逻辑,只是把计算单元搬到 DRAM 旁边,牺牲通用性换取带宽,落地难度低得多。器件与电路细节见半导体手册 ch28。
Tensor Core · 矩阵加速
坐标系旁是一座熔炉——炉里有两块矩阵在不断分块、相乘、累加。高斯老祖递给你一个放大镜:「Tensor Core 不是普通的核心,它一个时钟周期做完一个 4×4×4 矩阵乘加。你拖动精度旋钮,看吞吐怎么变。」
「Tensor Core 是 GPU 的矩阵加速器——一个周期完成 D = A×B + C 的分块矩阵乘加。FP16 吞吐是 FP32 的 8 倍,INT8 是 FP16 的 2 倍,INT4 再翻倍。但低精度意味着精度损失——BF16 保留指数位是深度学习的甜点。GEMM 是大模型训练的核心算子,Tensor Core 把它推到 Roofline 平顶。」
Tensor Core 可视化器 · 矩阵分块 + 精度吞吐对比
看矩阵分块累加动画 → 切换 FP32/FP16/BF16/INT8 看吞吐 → GEMM 加速比
矩阵分块累加 · D = A×B + C
精度模式 · FP32 / FP16 / BF16 / INT8
计算吞吐对比 · TFLOPS
详解 · K16-05 Tensor Core:矩阵乘累加的硬件加速
Tensor Core 是一条"矩阵乘加"专用指令,自 Volta 起每周期完成一个 4×4×4 的分块运算 D = A×B + C(Ampere/Hopper 支持更大的块与 2:4 结构化稀疏)。它把通用 CUDA 核心几十条指令才能完成的 FMAs 压成一条指令,且输入用低精度、累加用 FP32——这是混合精度训练能在 Tensor Core 上跑通且数值稳定的关键设计。同卡吞吐对照(H100 SXM):非张量 FP32 约 67 TFLOPS,TF32 张量约 495,FP16/BF16 张量 989(稠密,稀疏 1979),FP8/INT8 3958——从 FP32 到 FP16 是 14.8 倍,这就是"把 GEMM 推到 Roofline 平顶"的量化含义。为什么偏偏是矩阵乘值得专用化:Transformer 的训练计算量中 GEMM 占 80% 以上,一次前向每个 token 约需 2N 次浮点运算(N 为参数量),7B 模型即约 1.4×10¹⁰ FLOPs/token;把这部分榨干,收益覆盖全局。但反过来看,被榨干之后剩下的就是新的瓶颈——Softmax、LayerNorm、激活这些 element-wise 与归约算子仍趴在 Roofline 斜坡上,Amdahl 定律立刻生效:GEMM 越快,非 GEMM 占比越高。FlashAttention 的融合思路(把整段注意力留在 SRAM 里一次算完)正是这一局面的直接产物。另外提一句精度家族的分工:BF16 保留 FP32 的 8 位指数位,训练时几乎不需要 loss scaling,是先落地的训练精度;FP8(E4M3/E5M2)在 H100 上把吞吐再翻一倍,主要服务推理与部分训练环节。详见 NVIDIA 白皮书与 Hopper 架构文档。
互联技术 · 多卡协同
熔炉后是一片星图——八颗 GPU 像星辰悬浮,之间用光带相连。有的光带粗(NVLink 900GB/s),有的细(PCIe 64GB/s),有的跨越机柜(InfiniBand 400Gb/s)。高斯老祖:「单卡放不下大模型,需要多卡并行——但卡之间要同步梯度,通信就是新的瓶颈。你切换拓扑,看 AllReduce 怎么走。」
「分布式训练的核心是 AllReduce——所有卡把梯度归约到一起再广播。Ring AllReduce 让每张卡只和邻居通信,通信量 = 2N×梯度大小/N,与卡数无关。NVLink 提供 GPU 间直连(900GB/s),NVSwitch 全互联,InfiniBand 跨节点。拓扑越快,通信占比越低,扩展性越好。」
GPU 拓扑可视化器 · 互联对比 + AllReduce 路径
切换拓扑(NVLink/NVSwitch/IB) 看带宽 → 看 AllReduce 通信路径 → 通信占比
互联拓扑选择
GPU 拓扑 · 8卡互联图
AllReduce 通信路径 · Ring AllReduce
带宽对比 · NVLink / PCIe / InfiniBand
详解 · K16-14 互联技术:NVLink / NVSwitch / InfiniBand / RoCE
互联分三层,带宽各差一个量级,选型与定位瓶颈都要先看懂这三层。①机内直连 NVLink:H100 每卡 18 条链路,双向合计 900 GB/s;A100 为 12 条、600 GB/s;作为对照,PCIe Gen5 x16 双向约 128 GB/s(Gen4 只有 64 GB/s),这就是为什么多卡训练必须通过 NVLink 而非 PCIe 交换梯度。②机内交换 NVSwitch:把 8 卡(DGX 机箱内)或更大域(NVLink Switch System 可到 256 卡)做成全互联,任意两卡间都能跑满 NVLink 带宽,避免 PCIe 树形拓扑的根节点拥塞。③机间网络 InfiniBand:NDR 400 Gb/s ≈ 50 GB/s 单向,DGX H100 每卡配一张 400G 网卡,8 卡共 3.2 Tb/s;另一种是 RoCEv2(RDMA over Converged Ethernet),用以太网承载 RDMA、成本更低,但需要 PFC/ECN + DCQCN 做无损与拥塞控制,调优难度高。工程上真正要算的是通信时间:AllReduce 一步的通信量约 2(P−1)/P × M(M 为梯度字节数),实测有效带宽通常只有标称峰值的 50%~70%(NCCL 效率与消息大小有关),7B 模型 FP16 梯度 14GB、8 卡 NVLink 下单步约 82ms。经验法则:当通信时间超过计算时间的 20%,就该考虑加大 local batch、梯度累积降频、换更快拓扑或改用 ZeRO/张量并行重排通信。详见 NVIDIA DGX 文档与 Mellanox/NVIDIA 网络资料。
详解 · K16-13 数据中心 AI 基础设施:GPU 集群 / 网络 / 存储
单卡是零件,集群才是机器。以 DGX H100 为单元:8 张 H100 经 4 个 NVSwitch 组成机内全互联(任意两卡 900 GB/s),每卡一张 ConnectX-7 400Gb/s 网卡对外,配双 CPU、2TB 系统内存、约 30TB NVMe 本地存储,整机功耗约 10.2 kW——一个机柜放 4~5 台就到风冷上限,这直接决定了液冷与机房配电的规划。再往上是 SuperPOD:数十台 DGX 组成数百至上千卡的规模域,机内用 NVSwitch、机间用 InfiniBand 胖树(fat-tree)或轨道优化(rail-optimized)拓扑,配合拓扑感知的任务调度(Slurm/Kubernetes + 亲和性放置)尽量把通信留在最快的链路上。存储常被低估:训练数据要能持续喂满 GPU(每个 GPU 每秒要吃几十到几百 MB 的样本),而 checkpoint 写入更凶——70B 模型混合精度权重 140GB,若每 30 分钟存一次,就需要数十 GB/s 的并行文件系统(Lustre/GPFS/云上对象存储 + 本地缓存)。此外还有弹性与容错:千卡规模下按 MTBF 估算几乎每天都有卡故障,所以 checkpoint 频率、热备节点与自动重启是基础设施的一部分,而不是可选项。参考 NVIDIA DGX/SuperPOD 文档与 Shoeybi 2020(Megatron-LM 在 3072 张 A100 上的实践)。
第二崩塌 · 能效之壁
星图碎裂,你跌入一座发电厂。厂里密密麻麻排列着数千台 GPU,每台功耗 700W,总功耗数兆瓦。墙上的电表在飞转——训练一个 70B 模型要烧掉一个小镇一年的用电量。高斯老祖:「算力不是免费的,每一 TFLOPS 都在烧电。能效比 TOPS/W 是硬件的终极指标。」
「你以为算力只是钱?训练 70B 模型需要 2048 张 H100,功耗 1.4MW,训练 3 个月——光是电费就要数十万美元(约 3.0 GWh × $0.12/kWh ≈ 36 万美元)。更可怕的是散热,数据中心约三成的电耗花在冷却与供电损耗上(PUE≈1.4)。能效之壁是算力的另一面——你堆得越多,烧得越多。第二笔账,我记下了。」
「能效比 = 峰值算力 / 功耗。H100 的 FP16 稠密能效约 1.4 TFLOPS/W(989 TFLOPS ÷ 700W),A100 约 0.78 TFLOPS/W(312 ÷ 400)——两年只翻了不到一倍,远慢于算力本身的增长。训练时实际能效还要再打折——因为利用率低、通信开销、散热与供电损耗。能效之壁的本质:算力增长靠堆功耗,但功耗有物理上限(散热、供电)。提升能效比靠架构创新,不靠堆料。」
能效之壁 · 训练能耗复现 + TOPS/W 分析
拖GPU数量看总功耗 → 对比硬件能效比 → 展开散热损耗
训练能耗复现 · GPU 数量滑块
8 张 GPUTOPS/W 能效比 · 硬件对比
散热损耗 · 数据中心能耗分配
详解 · K16-12 能效比指标:TOPS/W 与算力密度分析
能效比 = 峰值算力 ÷ 功耗,但比较前必须先对齐三个口径。其一,精度口径:A100 80GB 为 312 TFLOPS(FP16) ÷ 400W ≈ 0.78 TFLOPS/W;H100 SXM 为 989 ÷ 700 ≈ 1.41 TFLOPS/W;H200 算力与功耗相当(≈1.41,只是 HBM3e 带宽从 3.35 提到 4.8 TB/s);B 系列在 FP8 口径下可达约 9 TFLOPS/W——与 FP16 数字不能直接比,差 4 倍来自精度而非架构。其二,峰值口径:实际训练能效要再乘 MFU(30%~50%),因此"标称 1.41"落地常常只剩 0.4~0.7。其三,整机口径:数据中心还有 PUE≈1.3~1.5 的冷却与配电损耗,机架级能效还要打七折。为什么能效成为主线约束?看 Horowitz(ISSCC 2014)的能耗层级最直观:一次 32 位 DRAM 读取约 640 pJ,而一次 32 位浮点乘加约 3.7 pJ——搬运一个数的能耗是算它一次的 170 倍。这条数据解释了本章全部架构演进的方向:算子融合(少搬一次)、片上 SRAM 复用(不搬)、HBM 与近存(搬得便宜)、存内计算(干脆不搬)。也解释了为什么"堆功耗"这条路走不通:单卡 700W、单机 10.2 kW 已经逼近风冷与配电上限,靠提高单卡功耗换算力的边际收益正在被散热成本吃掉。硬件能效模型与 Dennard 缩放失效的推导见 CS 手册 ch24,实测数据来源 Horowitz 2014/2020。
算力经济学 · 成本之战
发电厂后是一片账房。账桌上摆着三本账册:GPU 小时成本、电力成本、总 TCO。高斯老祖递给你一个计算器:「训练大模型不只是技术问题,是经济问题。你来算一笔账——不同硬件方案,哪个性价比最高?」
「TCO = 硬件采购 + 电力 + 散热 + 运维 + 折旧。H100 单卡 $3 万,小时成本 $2-4(云),训练 70B 模型 2048 卡 3 个月 = 数千万美元。但性价比不只是单卡算力——A100 虽慢但便宜,H100 虽快但贵。性价比 = 有效算力 / 总成本,还要算上利用率。」
训练成本计算器 · GPU成本 + 电力 + TCO + 性价比
选模型规模和硬件 → 看成本分解 → 对比不同方案性价比
训练配置 · 模型规模 + 硬件方案
成本分解 · GPU小时 / 电力 / TCO
TCO 对比 · 不同硬件方案
详解 · K16-17 算力经济学:训练成本估算与 TCO 分析
训练成本的第一性公式:训练浮点运算量 ≈ 6ND(N 为参数量、D 为 token 数,6 = 前向 2 + 反向 4),因此 GPU 时数 = 6ND ÷ (峰值 FLOPS × MFU) ÷ 3600。手算一例:70B 模型、10T token、H100 峰值 989 TFLOPS、MFU 取 40%,则 6×70×10⁹×10¹³ = 4.2×10²⁴ FLOPs,有效算力 3.96×10¹⁴ FLOP/s,得 1.06×10¹⁰ 秒 ≈ 295 万 GPU 小时;按云上约 $2/卡时算约 590 万美元,再加电力(295 万 × 0.7 kW × $0.12/kWh ≈ 25 万美元)与冷却(PUE 1.4 后约 35 万美元),总 TCO 落在 600~700 万美元量级。注意台上那块成本表用的是理想式(未除 MFU),给的是 118 万 GPU 小时的下限——两者相差 2.5 倍,这一倍半的差额就是"算力利用率"的真实价格,也是 MFU 值得单独优化的经济理由。TCO 的完整口径 = 硬件采购(通常按 3 年折旧摊销)+ 电力 + 冷却 + 运维人力 + 机房/网络 + 存储;买还是租的分界点在利用率:自有集群利用率长期低于 50% 时,云上按量付费通常更划算,反之自建更省。还有一笔隐形账——碳排:训练能耗乘以电网碳强度(美国均值约 0.4 kg CO₂e/kWh)再加硬件隐含碳,Patterson 等(2021)专门讨论了选择低碳数据中心与时段能削减的量级。学会这套算法,"能不能训"才真正变成"值不值得训"。
详解 · K16-15 AI 芯片选型策略:训练 vs 推理 / 云端 vs 边缘
训练与推理是两套几乎相反的取舍。训练卡看:①单卡显存与互联(能否装下并分片训练态,混合精度 Adam 约 18 字节/参数);②HBM 带宽(非 GEMM 算子的时间下限);③BF16/FP8 支持与结构化稀疏;④多卡扩展效率(NVLink/NVSwitch/IB 拓扑与 NCCL 成熟度);⑤软件栈(CUDA/PyTorch 生态、编译器、调试工具)。推理卡看:①首 token 时延与单 token 时延(交互式服务通常要求 TTFT 在数百毫秒内);②吞吐(tokens/s/卡)与 KV cache 占用显存(长上下文场景常是显存先见底);③低精度量化支持(INT8/FP8/FP4 及相应精度损失评估);④单位 token 成本——这才是线上服务的真实账单,而不是峰值 TFLOPS。云端与边缘又是一层:云端能用大 batch 摊薄权重加载、显存可达 80~141GB、功耗不受限;边缘要压在几瓦到几十瓦、内存通常 8~16GB 且与系统共享,模型必须量化与裁剪,还要考虑离线与隐私。典型对照:H100/H800(训练与云端服务主力)、H200(大 KV cache 的长上下文服务)、L4/Ada 系列(视频与小模型推理)、Jetson Orin 系列(边缘 7~60W)、昇腾 910/310(国产训练与推理)。选型清单的最后一栏永远是软件迁移成本与供货合规——这两项在真实项目里常常推翻纸面算力对比。
Boss 战 · 硬件三问
账房尽头灰色重新合拢,温度骤降——内存墙之壁凝聚成形。它不是人形,是一道横亘算力与带宽之间的灰墙,墙面上刻着无数空转的 GPU 核心。它翻开一本账册:「你来了。带着你的两道刻痕,和你的墙账。三问。答对,我崩塌。答错,你的元婴修为归零。」
「你说堆算力就能加速——我不能。我住在你"以为算力是瓶颈"的地方。你每以为堆 GPU 就能提速,我就厚了一丈。证明给我看:你的两道刻痕不是耻辱,是你的排除法——每一条"此路不通",都在告诉你正确的路在哪里。」
墙账累计 0 笔 · 三问全对后清零
顿悟 · 硬件炼体
灰墙崩塌,你站在山顶。山脚是你走过的路——GPU 架构、显存管理、内存墙、Roofline 模型、Tensor Core、互联技术、能效之壁、算力经济学。山顶放着一面算力镜,镜中映着所有硬件交织成的知识图谱。高斯老祖:「你想理解算力。面前有三道认知:瓶颈不在算力在带宽、加速不在堆料在架构、成本不在单卡在系统。」
「AI 硬件的全部,是在算力、带宽、能效、成本之间寻找系统平衡。内存墙是算力与带宽的鸿沟,Tensor Core 是架构对算力的榨取,互联是多卡对规模的扩展,能效是功耗对算力的约束。没有单点最优,只有系统最优。元婴一层·硬件炼体——你已圆满。但元婴之路的下一块基石,在分布式训练的算法。」
硬件炼体 · 三道认知 + 知识图谱 + 元婴一层圆满
点亮三道认知 → 点亮 AI 硬件知识图谱 → 元婴一层圆满动画
三道认知 · 各三选一
AI 硬件知识图谱 · 硬件炼体
详解 · K16-06 TPU 使用视角:Pod 配置与适用场景
TPU 走的是与 GPU 相反的一条路:GPU 保留缓存、分支预测、乱序执行来维持通用性,TPU 把这些全部砍掉,把面积与功耗让给大规模乘加阵列与片上存储,靠编译器(XLA)做静态调度,执行完全确定(Jouppi 2017)。代价是只擅长规整的张量运算,收益是同期 TOPS/W 高出 15~30 倍。代际与规模:TPU v1(2015,推理)→ v2/v3(训练,引入 Pod 与液冷)→ v4(每 Pod 4096 芯片,bf16 约 1.1 EFLOPS,配备光路交换 OCS 的可重构拓扑)→ v5p/v5e(分别面向大规模训练与高性价比推理服务)。使用视角上最需要注意的是三件事:①编程栈是 JAX/XLA(PyTorch 需经 PyTorch/XLA 桥接),算子需能静态编译成阵列指令,动态形状与控制流会退回低效路径;②规模化依赖 Pod 级互联与拓扑,单芯片参数不如整机与调度能力重要;③适用场景是大规模规整 Transformer 的训练与高吞吐服务(Google 内部搜索、Gemini 训练),不适合小规模实验、频繁改结构的研究与依赖 CUDA 生态算子的工作流。因此"要不要上 TPU"常常不是性能题,而是软件栈迁移成本题。脉动阵列的架构原理见 CS 手册 ch24,原始文献 Jouppi 2017(ISCA)与 TPU v4 论文(2023)。
详解 · K16-07 AI 专用芯片 NPU 概览:选型关注要点
NPU 不是一种架构,而是一大类针对张量运算定制的芯片,按落点可分成三层。①云端大芯片:以昇腾 910 系列为代表,采用达芬奇架构的 3D Cube 矩阵单元,FP16 约 300 TFLOPS 量级、配 HBM 与高速互联,面向训练与大吞吐推理,配套 CANN/MindSpore 软件栈;同类还有 Graphcore IPU(大片上内存、细粒度并行)与 Cerebras(晶圆级引擎)。②边缘与终端 NPU:昇腾 310、寒武纪 MLU 系列、Apple Neural Engine(A17/M 系列约 35~38 TOPS)、高通 Hexagon NPU、特斯拉 FSD 芯片的 NPU,共同特点是功耗几瓦到几十瓦、内存受限、强调 INT8 与稀疏。③可重构方案:FPGA 时延低、数据流可改,适合原型验证与特定推理加速,但开发门槛与单位算力成本劣势明显。选型时最该警惕"TOPS 陷阱":厂商标称的 TOPS 通常是 INT8 口径、且常含结构化稀疏的理论峰值,与 FP16 稠密实测可以差 4~8 倍;更要紧的是算子覆盖度与编译栈成熟度——一个不支持的算子回落 CPU 执行,端到端性能会被拖垮。其余关注项:内存带宽与容量、互联与扩展能力、生态迁移成本、供货与合规。架构设计部分见 CS 手册 ch24。
详解 · K16-16 边缘 AI 硬件:移动端 NPU / FPGA / 嵌入式 GPU
边缘的约束是硬约束:功耗常年在几瓦(手机 SoC 的 NPU 峰值约 5W,IoT 设备不足 1W)、内存 8~16GB 且与系统共享(意味着模型权重常驻内存就是硬上限)、离线与隐私要求、以及按 BOM 计的成本。因此边缘方案从来不是"把云上的东西搬小",而是四条腿一起走:①模型侧——量化(INT8/INT4,权重量化 + KV cache 量化)、蒸馏、结构化剪枝、小模型(1~3B 级 SLM)、MoE 稀疏激活;②编译侧——TFLite / ExecuTorch / MNN / NCNN 等推理框架做算子融合与内存复用,避免中间张量落地;③硬件侧——异构调度(NPU 跑张量、GPU/DSP 跑非张量)、Apple Neural Engine、高通 Hexagon、Jetson Orin 系列(7~60W)、Coral Edge TPU(2~4 TOPS/W);④超低功耗场景引入存内计算做 always-on 感知(关键词唤醒、微型视觉常驻)。评价指标也要换:边缘看的是"每次推理的能耗与时延",而不是峰值 TOPS——一个 100 TOPS 但每次推理要搬 200MB 权重的方案,在边缘远不如 10 TOPS 且权重只有 50MB 的方案。工程上最实用的架构是端云协同:端上做预处理、缓存与小模型兜底,云上承载大模型与复杂推理。
详解 · K16-18 AI 硬件发展路线图:从 GPU 到 DSA 到存算一体
把近十年的演进摊开,是四条彼此咬合的主线。①通用 → 专用(DSA):CPU 的标量 → GPU 的 SIMT → Tensor Core 的矩阵指令 → TPU 的脉动阵列 → NPU 的定制数据流,每牺牲一份通用性,换回 1~2 个数量级的能效(Hennessy & Patterson 2018 图灵奖演讲把 DSA 列为后摩尔时代的主路径)。②精度下探:FP32 → FP16/BF16 → FP8(H100,OCP 的 E4M3/E5M2 标准)→ FP4/INT4(新一代推理卡),每降一档约翻倍算力,靠的是深度学习对数值噪声的容忍度,但要配套缩放因子与精度损失评估。③打破内存墙:HBM 堆叠 → 近存计算(HBM-PIM)→ 存内计算(ReRAM/忆阻器)→ 硅光与共封装光学(CPO,把 I/O 能耗从电互连的 pJ/bit 降到亚 pJ/bit),目标是让搬运成本不再主导能耗账单。④系统集成:Chiplet + 先进封装(CoWoS、SoIC)把多个 die 拼成超大芯片,用良率与复用换规模。但每一代"架构革命"的真正瓶颈都不在硬件而在软件:新架构往往比配套编译器与算子库早 2~3 年成熟,这也是过去十年真正跑赢的只有少数几条路线的原因(Horowitz 2020;Reagen 2021 关于 DSA 的收益边界)。
详解 · 复盘 · 硬件炼体主线:在算力、带宽、能效、成本之间找系统平衡
全章只有一条线:先看装不装得下(显存:混合精度 Adam 约 18 字节/参数,7B→126GB、70B→1.26TB),再看搬不搬得动(内存墙:H100 的算术强度门槛约 295 FLOP/Byte,element-wise 只有 0.08),然后用 Roofline 判断每个算子卡在哪一段(GEMM 在平顶、Softmax/LayerNorm 在斜坡),接着用 Tensor Core 把平顶再抬高(FP32→FP16 是 14.8 倍)、用互联把规模铺开(NVLink 900GB/s vs PCIe 128GB/s)、用能效看这条路能烧到哪(H100 约 1.4 TFLOPS/W,而一次 DRAM 读的能耗是一次乘加的 170 倍),最后用 TCO 回答值不值(70B×10T 约 295 万 GPU 小时、数百万美元)。三个"此路不通"——堆显存、堆算力、堆功耗——分别被优化器状态膨胀、算术强度门槛、散热与配电上限挡回。沉淀下来的方法论只有一句:遇到慢,先量三个数(FLOPS 利用率、带宽利用率、占用率),再定位 Roofline 位置,最后才决定是改算子(融合、量化、重计算)还是改架构(并行分片、换互联、换芯片)。教材与文献对照:NVIDIA 架构白皮书(Tensor Core/NVLink)、Horowitz ISSCC 2014 与 2020、Jouppi 2017(TPU)、Kung 1988(脉动阵列)、Shoeybi 2020(Megatron)、Patterson 2021(成本与碳排)、花书 12.1、PAP Ch7;下一章 ch17 器道融通将把这些硬件约束接入分布式训练的算法设计。
「GPU 之外,TPU 走的是脉动阵列(Systolic Array)——数据像心跳一样在阵列里有节奏地流动,每个单元只做一次乘加、把结果传给邻居。专为矩阵乘设计,算子利用率极高,是 Google TPU 的立身之本,也是 AI 芯片数据流映射的经典范式。」