系统假设
系统假设
粗略估算的可信度取决于其所依据的输入,而这些输入很容易被忽略:加速器的峰值速率、模型的参数量、电价,以及每次运算的能耗。本附录将这些基准值和单位约定汇集为一份参考表,以便对本书中的任何定量估算进行核查、使用较新的数值进行更新,或跨章节进行校验。本附录还明确了这些估算所依赖的单位约定。这样,各章便可依据数值展开论证,而无须反复说明每个数值的来源。
如何使用本附录
当某一章指出 H100 具有某个脊点,或训练一个 7B 模型需要一定的内存容量时,其所依据的带宽、容量和模型规模均列于此处。局部估算可使用相关的“数值”和“单位”条目。各表按主题分组:加速器、参考模型、单次访问能耗、互连带宽、经济因素、生产规模基准,以及单位约定。这些假设来自厂商数据手册中的峰值、已发表的研究或行业报告、用于说明的市场或电网统计数据,以及本书的约定;section 1.1 集中列出了这些来源。
下面的计算展示了哪些假设对各项估算起主导作用,因此,当硬件规格或价格发生变化时,可以直接将变化代入计算,而无须改变方法。
本附录中的常量支持快速且可复现的计算。下面三个示例分别将其用于性能、容量和成本估算。
Napkin Math 1.1: 判定 Roofline 模型中的受限区间
变量: 对于处于 FP16/BF16 峰值性能下的 H100,采用 989 TFLOP/s 的峰值算力和 3.35 TB/s 的内存带宽。
计算: 将峰值 FLOP/s 除以内存带宽,得到 Roofline 模型的脊点:989 TFLOP/s/3.35 TB/s \(\approx\) 295.2 FLOP/byte。对于 \(n=\) 4,096 的大规模通用矩阵乘法(GEMM),其算术强度为 \(n/3 \approx\) 1,365.3 FLOP/byte。
结果: 算术强度高于 295.2 FLOP/byte 的操作受计算限制;低于该值的操作受内存限制。此处的 GEMM 示例受计算限制,而算术强度为 \(\approx 1\) FLOP/byte 的单词元自回归解码则严重受内存限制。
系统启示: 同一加速器可以同时具有充裕的算力和受限的内存资源。算术强度决定了工作负载实际消耗哪种资源。
吞吐量只是约束之一。训练还需要足够的容量来容纳权重、梯度和优化器状态。
Napkin Math 1.2: 估算训练状态的内存需求
变量: 混合精度 Adam 存储 BF16 权重、梯度、FP32 主权重、动量和方差。模型状态的内存预算为每个参数 16 字节。
计算: 对于 7B 个参数,模型状态占用为 7 \(\times 10^9 \times\) 16 字节 = 112 GB。
结果: 一块 H100 配备 80 GB 的高带宽内存(HBM),因此,即使尚未计入激活值,仅模型状态就已超出单个加速器的容量。
系统启示: 优化器状态决定了训练内存需求的下限,而不能只看权重。仅从参数所占字节数出发进行容量规划,会低估实际需求。
模型能够装入内存,只能说明其具备可行性,尚不能确定运行成本。功率和运行时长提供了初步估算电费所需的其余量。
Napkin Math 1.3: 估算加速器电费
变量: 采用 1,024 块 A100,每个加速器的功率为 400 W,实际运行时长为 ~25 days,电价为 $0.12/kWh。
计算: 此次运行大约需要 \(3.14 \times 10^{23}\) FLOPs。按 A100 等效场景估算的电费为 ~25 days 的实际运行时长 \(\times\) 1,024 块 A100 \(\times\) 24 h/day \(\times\) 0.4 kW \(\times\) $0.12/kWh = ~$29,491.2。
结果: 仅加速器的电费约为 ~$29,491.2。这一仅依据加速器热设计功耗(TDP)的估算不包括主机 CPU、网络、存储、冷却和设施开销。最初的 GPT-3 训练使用的是 V100 时代的基础设施;这里采用的是本书为说明而设定的 A100 等效场景,并非已报告的配置,其运行时长也并非仅由峰值 FLOP/s 推导而来。
系统启示: 能耗可由功率和时间计算,但完整的成本核算还必须包括资本利用率、网络、存储、人员,以及失败或重复运行所产生的成本。
加速器规格
以下是本书 Roofline 模型、训练内存、能耗和成本示例所使用的加速器假设:各章所引用的每代加速器的峰值吞吐量、内存带宽、内存容量和 TDP。这些数值是厂商数据手册中的峰值——即粗略估算所用的上限,并非持续运行时的利用水平——来源包括 NVIDIA 产品文档和 IEEE Micro 架构文章 (NVIDIA Corporation 2017, 2020b, 2020a, 2021, 2018, 2024; Choquette et al. 2021; Choquette 2023)、AMD MI300X 文档 (AMD 2023)、Google 张量处理单元(TPU)相关出版物 (Jouppi et al. 2023),以及 Google Cloud 当前的 TPU v6e 规格页面 (Google Cloud 2026)。容量行保留了官方以十进制 GB 标示的标称值。各表从 table 2(Volta)和 table 3(Turing)开始,依次涵盖当前及面向未来的各代产品。
加速器规格总矩阵
table 1 中的加速器总矩阵汇总了主要 GPU、TPU、晶圆级加速器和领域专用 AI 加速器的规格。
| 架构/芯片 | 工艺节点(nm) | TDP(W) | 计算峰值 TFLOPs/TOPS | 内存容量与带宽 | 片上 SRAM | \(I_{\text{ridge}}\)(FLOP/B) |
|---|---|---|---|---|---|---|
| NVIDIA V100 (SXM2 32 GB) | 12nm (TSMC) | 300 | FP64: 7.8, FP32: 15.7, FP16: 125 (TC), INT8: 125 (TC) | 32 GB HBM2 @ 0.90 TB/s | 16 MB | 138.9 |
| NVIDIA A100 (80 GB SXM4) | 7nm N7 (TSMC) | 400 | FP64: 9.7/19.5, FP32: 19.5, TF32: 156, FP16/BF16: 312, INT8: 624 | 80 GB HBM2e @ 2.04 TB/s | 40 MB | 153.0 |
| NVIDIA H100 (80 GB SXM5) | 4nm 4N (TSMC) | 700 | FP64: 34/67, FP32: 67, TF32: 494, FP16/BF16: 989, FP8: 1,978, INT8: 1,978 | 80 GB HBM3 @ 3.35 TB/s | 50 MB | 295.2 |
| NVIDIA H200 (141 GB SXM5) | 4nm 4N (TSMC) | 700 | FP64: 34/67, FP32: 67, TF32: 494, FP16/BF16: 989, FP8: 1,978, INT8: 1,978 | 141 GB HBM3e @ 4.80 TB/s | 50 MB | 206.0 |
| NVIDIA B200 (192 GB SXM) | 4nm 4NP (TSMC) | 1000 | FP64: 45/90, FP32: 90, TF32: 1,250, FP16/BF16: 2,250, FP8: 4,500, INT8: 4,500 | 192 GB HBM3e @ 8.00 TB/s | 128 MB | 281.3 |
| NVIDIA L40S (48 GB PCIe) | 4nm 4N (TSMC) | 350 | FP64: 1.4, FP32: 91.6, TF32: 183, FP16/BF16: 366, FP8: 733, INT8: 733 | 48 GB GDDR6 @ 0.86 TB/s | 96 MB | 423.6 |
| Google TPU v1 | 28nm (TSMC) | 75 | INT8: 92 TOPS(浮点格式不适用) | 8 GB DDR3 @ 0.034 TB/s | 28 MB | 不适用(2,705.9 INT8) |
| Google TPU v2 | 16nm (TSMC) | 280(板卡) | BF16/FP16: 45 TFLOPs | 16 GB HBM @ 0.60 TB/s | 32 MB | 75.0 |
| Google TPU v3 | 16nm (TSMC) | 450(板卡) | BF16/FP16: 123 TFLOPs | 32 GB HBM2 @ 0.90 TB/s | 32 MB | 136.7 |
| Google TPU v4 | 7nm N7 (TSMC) | 170 | BF16/FP16: 275, FP32: 275, INT8: 275 | 32 GB HBM2 @ 1.20 TB/s | 48 MB | 229.2 |
| Google TPU v5e | 7nm N7 (TSMC) | 140 | BF16/FP16: 197, FP8: 394, INT8: 394 | 16 GB HBM2e @ 0.82 TB/s | 32 MB | 240.5 |
| Google TPU v5p | 4nm 4N (TSMC) | 450 | BF16/FP16: 459, FP8: 918, INT8: 918 | 95 GB HBM3 @ 2.76 TB/s | 96 MB | 166.3 |
| Google TPU v6e (Trillium) | 4nm 4N (TSMC) | 400 | BF16/FP16: 926, FP8: 1,852, INT8: 1,852 | 32 GB HBM3 @ 1.64 TB/s | 64 MB | 564.6 |
| Cerebras WSE-3 | 5nm N5 (TSMC) | 23,000 | FP16/BF16: 125,000, FP8: 250,000, INT8: 250,000 | 44,000 GB SRAM @ 21,000 TB/s | 44,000 MB | 5.95 |
| AMD Instinct MI300X | 5nm+6nm 3D | 750 | FP64: 163.4, FP32: 163.4, TF32: 653.7, FP16/BF16: 1,307.4, FP8: 2,614.9 | 192 GB HBM3 @ 5.30 TB/s | 256 MB | 246.7 |
| Intel Habana Gaudi 2 | 7nm N7 (TSMC) | 600 | FP32: 38.5, TF32: 154, FP16/BF16: 307, FP8: 614, INT8: 614 | 96 GB HBM2e @ 2.45 TB/s | 48 MB | 125.3 |
| Intel Habana Gaudi 3 | 5nm N5 (TSMC) | 900 | FP32: 115, TF32: 460, FP16/BF16: 1,835, FP8: 3,670, INT8: 3,670 | 128 GB HBM3e @ 3.70 TB/s | 96 MB | 495.9 |
NVIDIA V100
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP16 张量吞吐量(V100) | 125 | TFLOP/s |
| 峰值 FP32 吞吐量(V100) | 15.7 | TFLOP/s |
| HBM 带宽(V100) | 900 | GB/s |
| HBM 容量(V100) | 32 | GB |
| TDP(V100) | 300 | W |
NVIDIA T4
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP16 张量吞吐量(T4) | 65 | TFLOP/s |
| 峰值 INT8 吞吐量(T4) | 130 | TOPS |
| 内存带宽(T4) | 320 | GB/s |
| TDP(T4) | 70 | W |
NVIDIA A100
Ampere 代际的规格(table 4)是本书大多数训练示例的参照。
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP16 张量吞吐量(A100) | 312 | TFLOP/s |
| 峰值 FP32 吞吐量(A100) | 19.5 | TFLOP/s |
| 峰值 INT8 吞吐量(A100) | 624 | TOPS |
| 峰值 TF32 吞吐量(A100) | 156 | TFLOP/s |
| HBM 带宽(A100) | 2039 | GB/s |
| HBM 容量(A100) | 80 | GB |
| TDP(A100) | 400 | W |
NVIDIA H100
对于 Hopper 时代的估算,参考值包括 FP8 Tensor Core 和 Transformer Engine(table 5)。
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP16 张量吞吐量(H100) | 989 | TFLOP/s |
| 峰值 FP32 CUDA 吞吐量(H100) | 67 | TFLOP/s |
| 峰值 FP8 张量吞吐量(H100) | 1979 | TFLOP/s |
| 峰值 INT8 吞吐量(H100) | 1979 | TOPS |
| 峰值 TF32 吞吐量(H100) | 494 | TFLOP/s |
| HBM 带宽(H100) | 3.35 | TB/s |
| HBM 容量(H100) | 80 | GB |
| TDP(H100) | 700 | W |
NVIDIA B200
前瞻性容量规划示例采用 Blackwell 代际的规格(table 6)。
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP16 张量吞吐量(B200) | 2250 | TFLOP/s |
| 峰值 FP8 张量吞吐量(B200) | 4500 | TFLOP/s |
| 峰值 FP4 吞吐量(B200) | 9000 | TFLOP/s |
| HBM 带宽(B200) | 8 | TB/s |
| HBM 容量(B200) | 180 | GB |
| TDP(B200) | 1000 | W |
AMD Instinct MI300X
为与其他部分使用的 H100 级硬件进行比较,MI300X 的容量、带宽、吞吐量和功耗规格提供了跨厂商基准(table 7)。
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP16 张量吞吐量(MI300X) | 1307 | TFLOP/s |
| HBM 带宽(MI300X) | 5.3 | TB/s |
| HBM 容量(MI300X) | 192 | GB |
| TDP(MI300X) | 750 | W |
Google TPU v4 和 v6e
在比较不同加速器系列的训练经济性时,TPU 的指标提供了一种基于专用集成电路(ASIC)的替代方案(table 8)。
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 BF16 吞吐量(TPU v4) | 275 | TFLOP/s |
| 内存带宽(TPU v4) | 1200 | GB/s |
| 峰值 BF16 吞吐量(TPU v6e) | 918 | TFLOP/s |
| 内存带宽(TPU v6e) | 1638 | GB/s |
CPU 和移动端/边缘处理器
边缘和移动端机器学习示例采用不同的性能基准(table 9),与数据中心吞吐量形成鲜明对比,以说明部署目标为何会影响每一项设计决策。
| 假设 | 数值 | 单位 |
|---|---|---|
| 峰值 FP32 吞吐量(参考 CPU) | 1 | TFLOP/s |
| DRAM 带宽(参考服务器) | 50 | GB/s |
| 参考 NPU 吞吐量(iPhone 15 Pro) | 35 | TOPS |
| 内存带宽(iPhone 15 Pro) | 51.2 | GB/s |
| TDP(移动设备,参考值) | 5 | W |
| 功耗(边缘目标检测器,参考值) | 2 | W |
| 电池容量(手机,参考值) | 15 | Wh |
模型规格
以下是训练成本、内存占用和推理工作负载示例所依据的参考模型假设:参数量、单次推理的 FLOP 预算,以及已发表的训练规模参照值。已发表的模型规模依据原始论文、模型报告和官方模型文档 (Devlin et al. 2019; Radford et al. 2019; Brown et al. 2020; Dubey et al. 2024; He et al. 2016; Sandler et al. 2018; Ultralytics 2023)。推理 FLOP 预算由本书推导得出:BERT-Base 使用序列长度 128,ResNet-50 和 MobileNetV2 使用 224 \(\times\) 224 图像,YOLOv8-Nano 使用 640 \(\times\) 640 图像;视觉模型将每次乘加计为两次 FLOP。GPT-3 的训练 FLOP 数依据 (Brown et al. 2020);25 天与 1,024 块 A100 的组合由本书编者设定。GPT-4 的参数量和训练 GPU 天数采用公开的第三方混合专家(MoE)估算值 (Patel and Wong 2023),因为 GPT-4 技术报告未披露架构规模。章节在估算 GPT-3 规模的训练时间时,使用 table 10。
| 假设 | 数值 | 单位 |
|---|---|---|
| 推理 FLOP 数(BERT-Base) | 2.2e+10 | flop |
| 参数量(BERT-Base) | 1.1e+08 | param |
| 参数量(Llama 3 8B) | 8.03e+09 | param |
| 隐藏维度(GPT-2) | 1600 | - |
| 层数(GPT-2) | 48 | - |
| 参数量(GPT-2) | 1.5e+09 | param |
| 参数量(GPT-3) | 1.75e+11 | param |
| 情景持续时间(GPT-3 规模) | 25 | d |
| 参考训练 FLOP 数(GPT-3) | 3.14e+23 | flop |
| 参数量(GPT-4,公开 MoE 估算值) | 1.76e+12 | param |
| 参考训练 GPU 天数(GPT-4) | 2.5e+06 | GPU-days |
| 推理 FLOP 数(ResNet-50) | 8.2e+09 | flop |
| 参数量(ResNet-50) | 2.56e+07 | param |
| 推理 FLOP 数(MobileNetV2) | 6e+08 | flop |
| 参数量(MobileNetV2) | 3.50487e+06 | param |
| 推理 FLOP 数(YOLOv8-Nano) | 8.7e+09 | flop |
训练内存约定
训练内存的粗略估算采用粗略估算提示框及若干训练章节中使用的混合精度 Adam 存储模型:BF16 权重、BF16 梯度、FP32 主权重,以及 Adam 的一阶矩和二阶矩缓冲区(每个参数合计 16 字节)。这是本书的约定,而非实测的硬件常数。BF16 数据通路遵循既有的 BFLOAT16 混合精度实践 (Kalamkar et al. 2019);FP32 主权重模式沿用早期 FP16 研究 (Micikevicius et al. 2017; NVIDIA 2017),Adam 的一阶矩和二阶矩缓冲区则依据 (Kingma and Ba 2015)。Table 11 列出了各组成部分的字节宽度;将每个参数的字节数(混合精度 Adam)乘以参数量,即可得到不含激活值的训练状态内存占用。
| 假设 | 数值 | 单位 |
|---|---|---|
| 权重/梯度位宽(BF16) | 2 | bytes |
| 主权重位宽(FP32) | 4 | bytes |
| 每个参数的主权重 + Adam 状态(FP32) | 12 | bytes |
| 每个参数的字节数(混合精度 Adam) | 16 | bytes |
硬件和模型假设确定了什么在何处运行;能耗假设 则从运算和内存访问层面确定设计在散热和经济上是否可行。
能耗常数
Horowitz 对 45 nm 工艺下算术运算和 32 位 DRAM 访问的估计 (Horowitz 2014),以及本书为寄存器和 SRAM 访问、MobileNetV2 推理及 5G 传输提供的示例参考值,共同构成了本书效率比较的依据,但这些值并非与工艺无关。Table 12 列出了从寄存器到 DRAM 的访问能耗层级。这一层级量化说明了数据复用为何在内核设计中起主导作用。
| 假设 | 数值 | 单位 |
|---|---|---|
| 寄存器访问能耗 | 0.1 | pJ |
| L1 SRAM 访问能耗 | 0.5 | pJ |
| L2 SRAM 访问能耗 | 2 | pJ |
| DRAM 访问能耗(32 位) | 640 | pJ |
| DRAM 访问能耗(每字节) | 160 | pJ/byte |
| FP16 乘法能耗(45 nm) | 1.1 | pJ/multiply |
| FP32 乘法能耗(45 nm) | 3.7 | pJ/multiply |
| INT8 乘法能耗(45 nm) | 0.2 | pJ/multiply |
| MobileNetV2 推理能耗(参考值) | 0.1 | mJ |
| 每 MB 的 5G 传输能耗 | 100 | mJ/MB |
精度与算术运算能耗层级
table 13 中的算术运算能耗层级比较了现代 7nm、5nm 和 3nm 硅工艺节点上,不同浮点、张量和整数精度下加法与乘法每次运算所需的能量(\(E_{\text{op}}\),单位为 pJ/op)。
| 精度/数据格式 | 7nm 节点(\(E_{\text{op}}\) pJ) | 5nm 节点(\(E_{\text{op}}\) pJ) | 3nm 节点(\(E_{\text{op}}\) pJ) | 相对 FP32 的能耗比(3nm) |
|---|---|---|---|---|
| FP64(64 位浮点数) | 加法: 0.90/乘法: 2.50 | 加法: 0.58/乘法: 1.62 | 加法: 0.38/乘法: 1.05 | 2.23\(\times\) |
| FP32(32 位浮点数) | 加法: 0.40/乘法: 1.10 | 加法: 0.26/乘法: 0.72 | 加法: 0.17/乘法: 0.47 | 1.00\(\times\)(基准) |
| TF32(19 位 TensorFloat) | 加法: 0.28/乘法: 0.65 | 加法: 0.18/乘法: 0.42 | 加法: 0.12/乘法: 0.27 | 0.57\(\times\) |
| FP16(16 位 IEEE 浮点数) | 加法: 0.20/乘法: 0.45 | 加法: 0.13/乘法: 0.29 | 加法: 0.08/乘法: 0.19 | 0.40\(\times\) |
| BF16(16 位 Bfloat16) | 加法: 0.18/乘法: 0.40 | 加法: 0.12/乘法: 0.26 | 加法: 0.08/乘法: 0.17 | 0.36\(\times\) |
| FP8(E4M3/E5M2) | 加法: 0.09/乘法: 0.20 | 加法: 0.06/乘法: 0.13 | 加法: 0.04/乘法: 0.08 | 0.17\(\times\) |
| INT32(32 位整数) | 加法: 0.10/乘法: 0.80 | 加法: 0.06/乘法: 0.52 | 加法: 0.04/乘法: 0.34 | 0.72\(\times\) |
| INT8(8 位整数) | 加法: 0.03/乘法: 0.20 | 加法: 0.02/乘法: 0.13 | 加法: 0.013/乘法: 0.085 | 0.18\(\times\) |
| INT4(4 位整数) | 加法: 0.010/乘法: 0.060 | 加法: 0.006/乘法: 0.039 | 加法: 0.004/乘法: 0.025 | 0.053\(\times\) |
这些能耗成本体现在芯片层面,但实际机器学习系统还需要通过互连搬移数据,包括加速器之间、机架之间以及通过广域网传输数据。下一节列出各章估算通信开销时使用的带宽假设。
互连与网络带宽
这些带宽假设 适用于各章分析梯度同步、流水线气泡、检查点 I/O 或跨数据中心延迟的场景。NVLink 和 PCIe 的速率依据加速器产品文档 (NVIDIA Corporation 2017, 2020a; Choquette 2023);InfiniBand 架构规范为该协议族提供依据 (InfiniBand Trade Association 2000),而当前的高速产品系列和以太网路线图则为现代链路速率示例提供依据 (NVIDIA 2026; Ethernet Alliance 2025);光纤中光速所确定的下限来自物理恒等关系。Table 14 列出了 NVLink、InfiniBand、PCIe、非易失性内存快速接口(NVMe)和以太网的速率,以及光在光纤中的传播速度。
| 假设 | 数值 | 单位 |
|---|---|---|
| NVLink 带宽(V100) | 300 | GB/s |
| NVLink 带宽(A100) | 600 | GB/s |
| NVLink 带宽(H100) | 900 | GB/s |
| InfiniBand HDR 链路速率 | 200 | Gb/s |
| InfiniBand NDR 链路速率 | 400 | Gb/s |
| InfiniBand XDR 链路速率 | 800 | Gb/s |
| PCIe Gen4 x16 速率 | 32 | GB/s |
| PCIe Gen5 x16 速率 | 64 | GB/s |
| NVMe 顺序读取带宽 | 7 | GB/s |
| 10 GbE 链路速率 | 10 | Gb/s |
| 100 GbE 链路速率 | 100 | Gb/s |
| 光纤中的光速 | 200000 | km/s |
互连与网络互连结构物理规格表
table 15 中的物理规格表详细列出了主机总线、加速器互连、网络互连结构和缓存一致性接口的带宽、延迟、成帧方式、直接内存访问(DMA)支持以及每比特能耗。
| 总线/互连标准 | 单向与聚合带宽 | 延迟 | 编码/成帧 | DMA/GPUDirect 支持 | 能耗成本(\(E_{\text{link}}\)) |
|---|---|---|---|---|---|
| PCIe Gen3 (x16) | 15.75 GB/s 单向/31.5 GB/s 聚合 | 400–500 ns | 128b/130b NRZ | PCIe P2P, GPUDirect RDMA | 14.0 pJ/bit |
| PCIe Gen4 (x16) | 31.50 GB/s 单向/63.0 GB/s 聚合 | 250–400 ns | 128b/130b NRZ | PCIe P2P, GPUDirect RDMA | 10.0 pJ/bit |
| PCIe Gen5 (x16) | 63.00 GB/s 单向/126.0 GB/s 聚合 | 150–250 ns | 128b/130b NRZ | PCIe P2P, GPUDirect RDMA, CXL 1.1/2.0 | 8.0 pJ/bit |
| PCIe Gen6 (x16) | 126.00 GB/s 单向/252.0 GB/s 聚合 | 100–150 ns | PAM4(256B 微片) | PCIe P2P, GPUDirect RDMA, CXL 3.0/3.1 | 6.0 pJ/bit |
| PCIe Gen7 (x16) | 252.00 GB/s 单向/504.0 GB/s 聚合 | <100 ns | PAM4(512B 微片) | PCIe P2P, GPUDirect RDMA, CXL 3.1+ | 4.5 pJ/bit |
| NVLink 1 (P100) | 20 GB/s 单向/40 GB/s 聚合(每链路) | 200–300 ns | NRZ (20 Gb/s) | GPUDirect P2P/RDMA | 10.0 pJ/bit |
| NVLink 2 (V100) | 25 GB/s 单向/50 GB/s 聚合(每链路) | 150–200 ns | NRZ (25.78 Gb/s) | GPUDirect P2P/RDMA | 8.0 pJ/bit |
| NVLink 3 (A100) | 25 GB/s 单向/50 GB/s 聚合(每链路) | 100–150 ns | NRZ (50 Gb/s) | GPUDirect P2P/RDMA | 6.5 pJ/bit |
| NVLink 4 (H100) | 25 GB/s 单向/50 GB/s 聚合(每链路) | 80–100 ns | PAM4 (100 Gb/s) | GPUDirect P2P, SHARP 聚合 | 4.5 pJ/bit |
| NVLink 5 (B200) | 50 GB/s 单向/100 GB/s 聚合(每链路) | 60–80 ns | PAM4 (200 Gb/s) | GPUDirect P2P, NVLink 网络卸载 | 3.5 pJ/bit |
| NVSwitch 1 (Volta) | 每芯片聚合带宽 900 GB/s | ~100 ns | NRZ | 硬件 P2P 交叉开关路由 | 8.5 pJ/bit |
| NVSwitch 2 (Ampere) | 每芯片聚合带宽 2.4 TB/s | ~90 ns | NRZ | 硬件 P2P 交叉开关, SHARP v2 | 6.5 pJ/bit |
| NVSwitch 3 (Hopper) | 每芯片聚合带宽 3.2 TB/s | ~70 ns | PAM4 | SHARP v3 网内计算 | 4.5 pJ/bit |
| NVSwitch 4 (Blackwell) | 每芯片聚合带宽 14.4 TB/s | ~50 ns | PAM4 | SHARP v4, FP8 归约引擎 | 3.2 pJ/bit |
| InfiniBand EDR | 100 Gbps(12.5 GB/s 单向) | ~0.50 \(\mu\text{s}\) (500 ns) | 64b/66b NRZ | GPUDirect RDMA(Verbs) | 15.0 pJ/bit |
| InfiniBand HDR | 200 Gbps(25.0 GB/s 单向) | ~0.60 \(\mu\text{s}\) (600 ns) | 64b/66b PAM4/NRZ | GPUDirect RDMA, SHARP v2 | 10.0 pJ/bit |
| InfiniBand NDR | 400 Gbps(50.0 GB/s 单向) | ~0.50 \(\mu\text{s}\) (500 ns) | 256b/257b PAM4 | GPUDirect RDMA, SHARP v3 | 7.0 pJ/bit |
| InfiniBand XDR | 800 Gbps(100.0 GB/s 单向) | ~0.40 \(\mu\text{s}\) (400 ns) | PAM4(200G/通道 微片) | GPUDirect RDMA, SHARP v4 | 5.0 pJ/bit |
| RoCE v2 以太网 | 100–800 Gbps(12.5–100 GB/s 单向) | 1.0–2.5 \(\mu\text{s}\) | NRZ/PAM4 (802.3) | GPUDirect RDMA (RoCEv2 UDP/IP) | 8.0–12.0 pJ/bit |
| CXL 1.1 | 63 GB/s 单向/126 GB/s 聚合 (x16) | ~200 ns | 128b/130b NRZ | cxl.io, cxl.cache, cxl.mem | 8.0 pJ/bit |
| CXL 2.0 | 63 GB/s 单向/126 GB/s 聚合 (x16) | ~180 ns | 128b/130b NRZ | SLD/MLD 内存池化 | 7.5 pJ/bit |
| CXL 3.0 | 126 GB/s 单向/252 GB/s 聚合 (x16) | ~120 ns | 256B 微片 PAM4 | P2P 内存池化与互连结构交换机 | 5.5 pJ/bit |
| CXL 3.1 | 126 GB/s 单向/252 GB/s 聚合 (x16) | ~110 ns | 256B 微片 PAM4 | 全局集成内存, TEE | 5.0 pJ/bit |
经济常数
这些价格假设 为 table 16 中总拥有成本(TCO)和能源成本的粗略估算提供基础。它们是用于比率分析的示例性费率,处于超大规模云服务商的量级(其思路与 (Patterson et al. 2021) 中的碳核算示例类似),并非针对特定地区或合同的报价。当绝对价格起主导作用时,应以本地数值替换这些参考值。
| 假设 | 数值 | 单位 |
|---|---|---|
| 云端电价 | 0.12 | dollar/kWh |
| 云端每 GB 出站流量价格 | 0.09 | dollar/GB |
经济常数确定了单位计算和数据传输的价格,但如果不了解所涉及的规模,这些常数就意义有限。生产环境中的机器学习系统每天处理数百万至数十亿次请求——这些数字如此庞大,以至于缺少具体参照就很难形成直观认识。
规模参考
table 17 中的这些规模假设 为容量规划示例中的“多大才算大?”提供参照,给出电子邮件和搜索量、自动驾驶车辆传感器流以及标准 1080p 和 4K 视频格式的示例性数量级基准。它们是量级参考值,并非针对特定年份经审计的统计数据。
| 假设 | 数值 | 单位 |
|---|---|---|
| Gmail 每日邮件量 | 1.21e+11 | - |
| Google 每日搜索量 | 8.5e+09 | - |
| Waymo 传感器数据速率(低值) | 1 | TB/h |
| Waymo 传感器数据速率(高值) | 19 | TB/h |
| 1080p 帧宽度 | 1920 | - |
| 1080p 帧高度 | 1080 | - |
| 4K 帧宽度 | 3840 | - |
| 4K 帧高度 | 2160 | - |
| 每个 RGB 像素的字节数 | 3 | bytes |
| 视频帧率(标准) | 30 | Hz |
上述假设采用统一的单位约定:十进制数据前缀、彼此区分的 FLOPs 和 FLOP/s 量,以及下一节定义的别名。
单位约定
Table 18 明确了本书所有定量示例采用的单位约定。每一行给出 1 alias \(=\) \(k\) base 中的乘数 \(k\)。数据前缀采用十进制 SI(\(\mathrm{KB} = 10^3\) 字节,而非 1024 字节)。二进制 IEC 存储前缀出现在少数专门讨论存储的内容中,但此处未予列出,因为本书多数集群规模估算采用十进制 KB/GB/TB。吞吐量(FLOP/s、GB/s)将这些别名与时间结合;将量纲不相容的量相加(将字节数与 FLOP/s 相加)是粗略估算中的类别错误,而非单位换算。
硬件容量是唯一有意保留的例外。厂商使用十进制符号标注内存,但实际交付的是二进制数量。标称为 80 GB 的加速器提供 \(80 \times 2^{30}\) 字节,而标称配备 512 KB SRAM 的微控制器提供 \(512 \times 2^{10}\) 字节。本书同时保留厂商给出的数值和单位标注,因此,写作 80 GB 的容量是标称值,而非将其换算为十进制后的结果。所有其他数据量,包括模型占用空间、激活值大小和传输量,均采用上述十进制前缀。当计算示例从设备容量中减去计算所得的占用空间时,两项均以十进制表示,使页面上给出的运算能够由读者复现。
| 别名 | 乘数 | 基本单位 |
|---|---|---|
byte |
1 | byte |
KB |
1000 | byte |
MB |
1e+06 | byte |
GB |
1e+09 | byte |
TB |
1e+12 | byte |
PB |
1e+15 | byte |
flop |
1 | flop |
GFLOPs |
1e+09 | flop |
TFLOPs |
1e+12 | flop |
ZFLOPs |
1e+21 | flop |
param |
1 | param |
Mparam |
1e+06 | param |
Gbps |
1e+09 | bit/s |
NS |
\(10^{-9}\) | second |
US |
\(10^{-6}\) | second |
MS |
\(10^{-3}\) | second |
second |
1 | second |
hour |
3600 | second |
day |
86400 | second |
joule |
1 | joule |
watt |
1 | watt |
meter |
1 | meter |
每项假设还附有来源记录,使读者能够将数值追溯至其原始来源。
假设来源
Table 19 按证据类别对本附录的定量输入进行分组,并列明各组所依据的主要参考文献。厂商规格和标准定义公开发布的上限,经过同行评审的测量提供经验参考,而明确标注的编者设定情景则在不存在长期有效的通用常数时提供示例数值。这一区分使读者能够判断输入的证据分量、更新具有时效性的数值,并采用适当的本地替代值复现估算。
| 附录章节 | 来源类型 | 主要参考文献 |
|---|---|---|
| 加速器规格 | 厂商数据手册中的峰值;编者设定的 CPU/移动端参考值;主规格矩阵(table 1) | (NVIDIA Corporation 2017, 2018, 2020a, 2024; Choquette et al. 2021; Choquette 2023; AMD 2023; Jouppi et al. 2023; Google Cloud 2026);CPU/移动端各行为编者设定 |
| 模型规格 | 已发表论文、模型报告和官方文档;编者设定的 GPT-3 情景;GPT-4 规模取自公开分析 | (Devlin et al. 2019; Radford et al. 2019; Brown et al. 2020; Dubey et al. 2024; He et al. 2016; Sandler et al. 2018; Ultralytics 2023; OpenAI et al. 2023; Patel and Wong 2023) |
| 训练内存约定 | 本书约定(混合精度 Adam 布局) | (Kingma and Ba 2015; Kalamkar et al. 2019; Micikevicius et al. 2017; NVIDIA 2017) |
| 能耗常数 | 已发表的 45 nm 算术运算/DRAM 估算;VLSI 综合工艺节点缩放;精度能耗层级(table 13) | 算术运算/DRAM 采用 (Horowitz 2014; Dally et al. 2021);寄存器/SRAM、MobileNetV2 和 5G 各行为编者设定 |
| 互连带宽 | 厂商规格;InfiniBand 标准;PCIe/NVLink/CXL 标准;物理规格表(table 15) | (NVIDIA Corporation 2017, 2020a; Choquette 2023; InfiniBand Trade Association 2000; NVIDIA 2026; Ethernet Alliance 2025) |
| 经济假设 | 示例性云服务/公用事业费率 | (Patterson et al. 2021)(方法论背景) |
| 规模参考 | 示例性工作负载速率;标准视频约定 | 工作负载速率由编者设定;视频采用标准格式定义 |
| 单位约定 | 十进制 SI;本书记号 | 编者设定 |
总结
本附录是全书所用定量输入的参考目录,汇集了加速器和模型规格、训练内存约定、能耗常数、互连带宽、经济与规模参考、单位约定及来源。这些数值来自厂商峰值、已发表的测量、标准和编者设定的情景,因此具有不同的证据分量,其时效性衰减速度也各不相同。
应将这些表格用作初始输入,而非通用常数。对于每项估算,应记录所用表格行、单位约定及来源;用本地数值替换具有时效性的峰值、价格和速率;区分物理上限、实测运行点与情景假设;并说明哪些假设主导了结果。这样既能使粗略估算可复现,也能明确哪个输入决定了结论。