L0.2 底层物理瓶颈洞察(三大物理墙)
三维坐标
layer: L0(基础)|level: Engineer|pillar: 硬件架构本文承接 L0.1 的「硬件层」,把它放大到显微镜下。目标是讲清楚一个反直觉的事实:制约大模型的从来不是「算力不够」,而是「算力喂不饱」。我们将沿着 算力墙 → 显存墙 → 通信墙 三条物理瓶颈,用真实硬件数字和 Roofline 模型 建立「为什么 GPU 利用率永远上不去」的底层认知。
学习目标
- 前置知识:读过 L0.1(知道七层栈与「三大支柱」);知道 GPU 有「算力」和「显存」两个独立指标即可。无需会写 CUDA。
- 学完产出:① 能用一句话说清算力墙 / 显存墙 / 通信墙各自卡的是什么、为什么是「物理墙」而非「软件问题」;② 会算 Roofline 拐点(
AI* = 峰值算力 / 峰值带宽),并据此判断一个 kernel 是 compute-bound 还是 memory-bound;③ 理解为什么 FlashAttention / 量化 / 「TP 机内、PP 机间」都是在「绕墙」而非「拆墙」;④ 亲手实测一块设备的访存带宽,第一次摸到「带宽是真实物理上限」。 - 阅读姿势:盯住一个数字直觉——「数据离计算核心越远,带宽掉得越狠」。三堵墙本质上是同一句话在三个尺度(卡内 / 机内 / 机间)上的重复。
背景与现状
在 AI Infra 的世界里,有一句被反复验证的工程箴言:「FLOPS 是免费的,数据搬运才是昂贵的」(FLOPS are free, data movement is expensive)。这句话浓缩了过去十年硬件演进的全部矛盾。
我们习惯用 算力(FLOPS) 衡量一块芯片的强弱,但真正决定大模型能不能跑、跑多快的,是三个独立增长、却严重失衡的维度:
- 计算速度(芯片能做多少次乘加)
- 访存带宽(数据能多快从显存喂到计算核心)
- 互联带宽(数据能多快在卡间、机间流动)
这三者的增速差,构成了三堵无法用「堆钱买更大芯片」简单绕过的 物理墙:
- 算力墙(FLOPS Wall):摩尔定律放缓、制程逼近物理极限,单片算力增速远跟不上 模型参数的指数膨胀。
- 显存墙(Memory Wall):访存带宽(HBM)的增速,长期落后于计算核心的增速,形成「算得快、喂不上」的断层。
- 通信墙(Network Wall):跨节点(机间)带宽比卡内 HBM 慢一到两个数量级,让分布式训练的 All-Reduce 成为木桶最短板。
业界信号:Mark Horowitz(Stanford)在 ISSCC 2014 的主题演讲《Computing's Energy Problem (and what we can do about it)》就指出「数据搬运的能耗比计算高 1~2 个数量级」;从 Stanford CS336、UC Berkeley 的系统课,到 NVIDIA 几乎所有 GPU 架构白皮书(Hopper / Blackwell / Blackwell Ultra),开篇都在讲 Roofline。直到 2025–2026,硬件代际换到 Blackwell Ultra (HBM3e、NVLink 5 1.8 TB/s)、IB XDR 800 Gb/s 量产、Rubin + HBM4 进入 roadmap——带宽和算力都在涨,但「算力增速 > 带宽增速 > 互联增速」的失衡格局没变。这说明「物理墙」不是历史名词,而是当下每一个 infra 决策(要不要量化、要不要 FlashAttention、要不要 TP/PP)的根本约束。
原理与架构
理解三堵墙,最有效的工具是 Roofline 模型:它把「计算」和「访存」两个维度画在同一张图上,一眼看出你的程序到底是被 算力 卡住,还是被 带宽 卡住。
2.1 三堵墙的全景关系
带宽逐级跌落是这里的核心:数据离计算核心越远,带宽掉得越狠——卡内 HBM(TB/s 级)→ 卡间 NVLink(数百 GB/s)→ 机间 IB(数十 GB/s)。每跨一级,带宽大约掉一个数量级,这正是三堵墙的物理根源。
2.2 算力墙:参数指数增长 vs 单片算力线性增长
| 年份 | 代表模型 | 参数量 | 同期旗舰 GPU | FP16 稠密算力 |
|---|---|---|---|---|
| 2018 | BERT-Large | 0.34B | V100 | ~125 TFLOPS |
| 2020 | GPT-3 | 175B | A100 | ~312 TFLOPS |
| 2023 | GPT-4 (MoE) | ~1.8T (传闻) | H100 | ~990 TFLOPS |
| 2024 | 万亿级 MoE | >1T | B200 | ~2250 TFLOPS |
| 2025 | 前沿 MoE / 推理模型 | 数 T | B300 (Blackwell Ultra) | ~2250 TFLOPS 级 |
⚠️ 口径提示:本表一律用 FP16 稠密(dense)峰值——这才是 Roofline 拐点该用的数字。NVIDIA 规格书常默认标「含稀疏(with sparsity)」的数字(约为稠密的 2×,如 H100 标 1979 TFLOPS 实为稀疏值,稠密是 ~990),引用时务必看清角标,否则拐点会算错一倍。
对比一眼可见:6 年间模型参数涨了约 5000 倍,而单片算力只涨了约 18 倍。差额只能靠「堆卡 + 分布式」填补——这就把矛盾从算力墙转嫁给了下面两堵墙。
一个常见现场是:当你发现「单卡再也放不下一个完整模型、必须 8 卡甚至上千卡才能训一个 base 模型」时,撞上的就是算力墙的连锁后果——单片算力跟不上参数膨胀,被迫走分布式,于是显存墙和通信墙接踵而至。
📅 2026 时效:Blackwell Ultra(B300,288 GB HBM3e)已于 2025 下半年出货;下一代 Rubin + HBM4 已于 2026 年 6 月官宣进入量产(full production)、2026 下半年起交付、2027 上量(精确算力/带宽以最终发布为准)。但算力增速仍远落后于参数膨胀这一根本矛盾不变——这正是三堵墙长期存在的原因。
2.3 显存墙:算术强度与 Roofline 拐点
显存墙的本质,是 HBM 带宽的增速远慢于算力的增速。看一组真实数字:
| GPU | 显存类型 | 显存带宽 | FP16 稠密算力 | Ridge Point(拐点 AI) |
|---|---|---|---|---|
| A100-80G | HBM2e | 2.0 TB/s | 312 TFLOPS | ~156 FLOP/Byte |
| H100-SXM | HBM3 | 3.35 TB/s | 990 TFLOPS | ~295 FLOP/Byte |
| B200 | HBM3e | 8.0 TB/s | 2250 TFLOPS | ~281 FLOP/Byte |
| B300 (Blackwell Ultra) | HBM3e | ~8.0 TB/s | ~2250 TFLOPS | ~281 FLOP/Byte |
算术强度(Arithmetic Intensity, AI) 定义为「每搬运 1 字节数据能做多少次浮点运算」:
Roofline 模型 据此把性能上限画成两段折线:
拐点公式:
以 H100 为例:990e12 / 3.35e12 ≈ 295 FLOP/Byte。这意味着——只有当你的 kernel 每搬运 1 字节能做到 295 次以上浮点运算,才可能跑满算力;否则就被卡在带宽这条斜坡上。
而 LLM 推理的 decode 阶段(逐 token 生成)算术强度极低(每个权重只用一次,AI ≈ 1~2),远在拐点左侧——这正是为什么推理几乎永远是 memory-bound,也是 FlashAttention(减少 HBM 读写)、KV Cache 量化、权重量化(INT8/FP8)能大幅提速的根本原因:它们都在「提高算术强度 / 减少访存」,而非「增加算力」。
一个典型现场是:① 长上下文请求一上来就 OOM(KV Cache 撑爆显存);② GPU 利用率(SM Util)只有二三十%,但显存带宽(DRAM Util)打满——「算力闲着、带宽累死」正是显存墙的典型现场。
2.4 通信墙:All-Reduce 为何成为木桶短板
分布式训练每个 step 都要做一次 All-Reduce 同步梯度。数据流向决定了它必然受最慢的一级带宽制约:
带宽对比(同一份梯度走不同链路):
| 链路层级 | 代表带宽 | 相对 HBM |
|---|---|---|
| 卡内 HBM3 | 3.35 TB/s | 1× |
| 机内 NVLink (Hopper) | ~900 GB/s | ~1/4 |
| 机内 NVLink 5 (Blackwell) | ~1.8 TB/s | ~1/2 |
| 机间 InfiniBand NDR (400Gb/s) | ~50 GB/s | ~1/67 |
| 机间 InfiniBand XDR (800Gb/s) | ~100 GB/s | ~1/34 |
结论:当训练规模从单机 8 卡扩到上千卡,瓶颈从 HBM 转移到 机间网络。这就是为什么 Megatron-LM 要把 TP(张量并行)限制在单机内(走 NVLink),把 PP/DP 放到机间(容忍较慢的 IB),以及为什么 NCCL 的拓扑感知、梯度压缩、计算-通信重叠(overlap)是大规模训练的命门。
📅 2026 时效 & 单位陷阱:① 机内互联——Blackwell 代 NVLink 5 已达 1.8 TB/s/GPU(Hopper 的 2×),配第四代 NVSwitch,NVL72 机柜级全互联。② 机间互联——InfiniBand XDR(800 Gb/s)已量产(Quantum-X800 平台),NDR(400 Gb/s)仍是现网主流,再下一代 GDR(1.6 Tb/s)在 roadmap 上。③ 华为侧——CloudMatrix 384 用 UB/HCCS 私有高速总线做 384 卡超节点互联(机内),机间走 RoCE。④ 单位陷阱:网络厂商用 Gb/s(比特)、HBM 用 TB/s(字节),换算差 8 倍——
XDR 800 Gb/s ÷ 8 = 100 GB/s,对照时务必先统一到字节。但无论数字怎么涨,「带宽逐级跌落」的结构不变:机间网络始终比卡内 HBM 慢一到两个数量级。
动手实践:极简代码实操
实验目标:亲手实测一块设备的 访存带宽(GB/s),对照理论峰值算 Roofline 拐点,建立「我的硬件到底卡在哪堵墙」的第一手感 知。产出物:一个实测带宽数字 + 一个拐点 FLOP/Byte 值。
3.1 环境准备
# 推荐 Python 3.11;用 uv 或 venv 隔离
python3 -m venv .venv && source .venv/bin/activate
pip install numpy
# 若有 NVIDIA GPU,再装 torch(自动选 CUDA 版):
# pip install torch