一、 为什么发布会标称的 TFLOPs 大多是“空中楼阁”?
在每一场 AI 芯片发布会上,厂商最喜欢高调宣布两个数字:比如某款芯片具备 2000 TFLOPs(每秒两千兆次浮点运算),拥有 140GB 显存容量。
但如果你是一位真实的系统工程师,在实际把大模型(LLM)部署上去跑推理时,往往会遭遇当头一棒:实际算力利用率(MFU, Model FLOPs Utilization)经常只有 20% 甚至更低。
剩下 80% 的晶体管去哪儿了?答案是:它们都在闲置,因为显存送不过来数据。
要科学诊断并量化这一现象,由计算机体系结构权威、图灵奖得主 David Patterson(RISC 与 RAID 之父)提出的 Roofline 性能模型,就是全世界芯片设计与大模型加速工程师手中的“X 光机”。
二、 Roofline 模型的数学推导与物理意义
Roofline 模型的核心指标只有一个:算术强度(Arithmetic Intensity, 记作 $I$)。
算术强度公式:
$$I = \frac{\text{程序执行的总浮点运算量 (FLOPs)}}{\text{从内存层搬运到核心的总数据量 (Bytes)}}$$
单位:$\text{FLOPs/Byte}$(即:从显存每搬出 1 字节的数据,核心能用它做多少次浮点加法或乘法)。
任何计算芯片在物理上都由两大部分组成:
- 算力天花板(Peak Performance, $P_{\max}$):由 ALU/Tensor Core 数量和时钟频率决定,单位为 $\text{FLOP/s}$。
- 带宽斜坡(Memory Bandwidth, $BW$):由显存位宽、接口速度决定,单位为 $\text{Byte/s}$。
程序的实际性能 $P$ 受到物理法则的硬性约束:
P = min( P_max, I × BW )
两者交汇的点被称为物理拐点(Critical Arithmetic Intensity, $I^*$):
I* = P_max / BW
- 当 $I < I^*$ 时(显存受限区 / Memory-Bound):实际算力与 $P_{\max}$ 无关,完全由显存带宽卡死。算力单元大量时间在“等米下锅”。
- 当 $I > I^*$ 时(算力受限区 / Compute-Bound):显存供数充分,算力单元满载,此时进一步优化需要依赖矩阵分块、提高时钟频率或堆叠更多计算核心。
三、 常见 AI 芯片物理拐点对比
让我们代入目前主流的三款典型硬件数据进行硬核计算:
| 硬件型号 | FP16 峰值算力 | 显存带宽 | 显存架构 | 物理拐点 $I^*$ |
|---|---|---|---|---|
| NVIDIA H100 SXM | 1,979 TFLOPs | 3,350 GB/s | HBM3 (5120-bit) | 591 FLOPs/Byte |
| NVIDIA RTX 4090 | 330 TFLOPs | 1,008 GB/s | GDDR6X (384-bit) | 327 FLOPs/Byte |
| Apple M4 Max | 64 TFLOPs | 546 GB/s | LPDDR5 (512-bit UMA) | 117 FLOPs/Byte |
四、 大模型运行的残酷真相:Prefill vs Decoding
为什么说大模型把当今的半导体行业逼到了墙角?因为大模型推理是由完全不同的两个阶段构成的:
1. 提示词处理阶段(Prefill 阶段)
系统一次性读入用户的全部上下文(比如 4096 个 Token),此时进行的是大矩阵与大矩阵相乘(GEMM)。
其算术强度 $I$ 往往高达数百上千 FLOPs/Byte,轻松跨越物理拐点进入算力受限区。这时 H100 咆哮运行,算力利用率极高。
2. 逐字生成阶段(Decoding 阶段)
这是最致命的阶段。大模型每输出一个单字,整个模型的全部参数(如 70B 模型约 140GB 显存)必须全部从显存里读取一遍,但却只为了和这一个 Token 进行极度狭窄的向量乘法(GEMV)。
此时的算术强度骤降为 $I \approx 1 \sim 2 \text{ FLOPs/Byte}$!
对照上表的拐点(591 FLOPs/Byte):你的算法强度只有 1,而芯片需要 591 才能喂饱!这意味着:在单请求逐字吐词时,H100 实际有 99% 以上的计算能力都在空转,芯片速度完全等同于水龙头(显存带宽)的出水速度。
五、 架构师如何攻破 Roofline 内存墙?
明白了 Roofline 模型,你就看懂了近几年所有颠覆性 AI 加速技术的底层动机:
- 增大 Batch Size(批处理):让一次搬运的模型参数,同时为 32 个或 64 个用户请求服务,算术强度瞬间提升数十倍,强行将 Decoding 任务推回算力受限区。
- KV Cache 极致压缩与 MLA 架构:例如 DeepSeek 的 Multi-Head Latent Attention,本质上就是减少自回归时对历史 KV 缓存的显存带宽吞吐压迫。
- 量化(Quantization, FP8 / INT4):将每个参数从 2 字节降为 1 字节或半字节,显存搬运量减半,等效将显存带宽翻倍。
- FlashAttention 算子融合:利用 SRAM 缓存极其狭小但带宽高达数十 TB/s 的物理特质,避免将中间 Attention 矩阵反复写回高延迟显存。
六、 常见问题权威解答(FAQ)
Q1:玩游戏和跑大模型对显卡显存的要求有什么本质不同?
游戏渲染是典型的算力密集型与光栅化渲染,着色器程序对纹理和几何顶点的重用率高(算术强度高);而大模型 Decoding 阶段是极低算术强度的纯带宽受限负载。因此一张显存带宽被阉割的显卡即使核心主频再高,跑大模型也会慢如蜗牛。
Q2:为什么苹果 Mac Studio 可以在本地以极低成本跑下 70B 模型?
苹果并未采用极其昂贵复杂的 HBM3 显存,而是通过 512-bit 统一内存架构(UMA),将多颗 LPDDR5 颗粒直接平铺在 SoC 基板周围,做出了高达 546~819 GB/s 的带宽与 192GB 恐怖显存容量。虽然其峰值算力有限,但跑单人推理时恰好避开了算力短板,精准卡在了带宽甜点区。
延伸参考文献与引用标准:
- Williams, S., Waterman, A., & Patterson, D. (2009). Roofline: an insightful visual performance model for multicore architectures. Communications of the ACM, 52(4), 65-76.
- Hennessy, J. L., & Patterson, D. A. (2019). Computer Architecture: A Quantitative Approach (6th Edition). Morgan Kaufmann.
- Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. NeurIPS 2022.