加速器算力账:从规格书到可交付 FLOPs
规格书上的 TFLOPS 是"理论峰值",不是"你能用到的算力"。本文把一张加速卡的账拆成三层:理论算力怎么推导、算术强度决定瓶颈、实测利用率才是可交付值。方法框架参考开源书稿《深入理解 AI Infra:量化分析与系统设计》(李博杰,Apache-2.0),公式与算例为本站自行推导整理,可复算。
1. 第一层:理论算力怎么算
GPU 的峰值 FLOPs 由三要素决定:
- cores:CUDA core(FP32)或 Tensor Core(FP16/INT8);
- freq:核心频率(GHz);
- FLOPs_per_cycle:每周期每核浮点运算次数——FP32 FMA 为 2,Tensor Core FP16 视代际为 512~1024。
常用卡的规格账(FP16 Tensor Core 理论峰值):
| 卡 | 显存带宽 | FP16 峰值 | BF16 峰值 | 算术强度拐点 |
|---|---|---|---|---|
| A100 80G | 2.0 TB/s | 312 TFLOPS | 312 TFLOPS | 156 FLOPs/Byte |
| H100 SXM | 3.35 TB/s | 989 TFLOPS | 989 TFLOPS | 295 FLOPs/Byte |
| L40S 48G | 864 GB/s | 362 TFLOPS | 362 TFLOPS | 419 FLOPs/Byte |
判断:同样叫"FP16",Tensor Core 的稀疏/稠密、峰值频率差异能让数字差一倍。规格书数字只用于数量级估算,真正交付要看第三层。
2. 第二层:算术强度决定瓶颈
算术强度(Arithmetic Intensity,AI)= 每字节数据对应的 FLOPs:
用 roofline 判定:当 AI 大于拐点(= 算力/带宽)时算力受限,否则带宽受限。上表可见:
- L40S 拐点 419 FLOPs/Byte——绝大多数 LLM 算子低于这个值,是带宽受限;
- H100 拐点 295——带宽相对更充裕,更多算子落在算力受限区。
这就是"为什么 L40S 显存带宽小、大模型跑不快"的量化答案:不是算力不够,是每搬 1 字节能做的事少。
3. 第三层:decode 是带宽受限的活
LLM 推理的 decode 阶段,每生成 1 个 token 要读一遍全部权重:
70B 模型 FP16(140 GB/次读取)在 L40S 上:
而"算力账"算出的 decode 上限(362T / 2×70B ≈ 2585 tok/s)永远到不了——权重读取带宽先把它卡死了。decode 是带宽受限问题,prefill 是算力受限问题,两者优化方向完全不同。
4. 可复算 Python 函数
python
def gpu_account(bw_gbps, peak_tflops, n_params_b, bytes_per_param=2):
"""给定带宽/算力/参数量,返回 decode 带宽上限与理论算力上限(tok/s)"""
bytes_per_token = n_params_b * 1e9 * bytes_per_param # B
decode_bw = bw_gbps * 1e9 / bytes_per_token # tok/s
flops_per_token = 2 * n_params_b * 1e9 # decode 2N FLOPs
compute_ceiling = peak_tflops * 1e12 / flops_per_token # tok/s
return decode_bw, compute_ceiling
gpu_account(bw_gbps=864, peak_tflops=362, n_params_b=70)
# (6.17, 2585.7) → decode 实际被带宽压在 ~6 tok/s5. 实测对照与交付
| 用途 | 正确口径 | 常见错误 |
|---|---|---|
| 单卡推理 QPS 预估 | 带宽账(decode)+ 算力账(prefill)分开算 | 拿规格 TFLOPS 直接推 |
| 训练吞吐预估 | 按 MFU 40-60% 折损 | 按峰值 × 100% |
| 卡型选型 | 先看拐点是否匹配负载 AI | 只看 TFLOPS 数字 |
交付清单:
- 对每个候选负载,先算 AI 并对照拐点,确认瓶颈是算力还是带宽;
- decode 吞吐一律按带宽账估算,算力账仅作上限参考;
- 实测 MFU/利用率与理论值对比,偏差 >30% 时按"拓扑→驱动→参数→应用"排查(见 验收与性能基线)。
本文为本站自行推导整理,方法框架参考开源书稿《深入理解 AI Infra》(Apache-2.0);具体版本号与实测数据以现场为准。