算力与带宽的比例
芯片做一次运算的速度是固定的,但要把数据从显存取到计算单元,需要时间。这两者的比值决定了一块芯片实际能跑多快。
算术强度 = 运算次数 ÷ 数据搬运量
如果一次数据搬运能被用来做很多次运算(算术强度高),算力就是瓶颈;
如果搬一次数据只够做很少运算(算术强度低),带宽就是瓶颈,再多的算力也没用。
如果一次数据搬运能被用来做很多次运算(算术强度高),算力就是瓶颈;
如果搬一次数据只够做很少运算(算术强度低),带宽就是瓶颈,再多的算力也没用。
大模型推理里,生成每个 token 都需要把模型的权重从显存读一遍。如果批很小,读一遍权重只能生成一个 token——算术强度极低,完全是带宽受限。这就是为什么单条对话时 GPU 利用率低。
怎么提高算术强度
- 增大批大小:同一次权重读取服务更多样本,算术强度直接上升。这是最有效的办法,但受显存容量限制。
- 减少数据搬运:算子融合、避免中间结果反复读写显存。
- 降低数据精度:同样带宽能搬更多数据(这就是量化的价值)。
- 把数据放在离计算更近的地方:这就是 HBM 和片上缓存的意义。
一个容易搞混的区分
容量和带宽是两个不同的指标,经常被混为一谈。
| 指标 | 含义 | 不够会怎样 |
|---|---|---|
| 显存容量 | 能装下多少数据 | 模型放不下,或批大小上不去 |
| 显存带宽 | 每秒能搬多少数据 | 算力闲置,速度上不去 |
一块卡可能容量很大但带宽一般(适合放得下但不需要频繁搬的场景),也可能带宽很高但容量有限。训练和推理对这两者的需求侧重不同——训练要放得下(容量优先),推理要搬得快(带宽优先,尤其是低延迟场景)。
为什么这是理解 AI 硬件的钥匙
因为接下来几个问题都能用它解释:为什么 HBM 这么重要(它是提升带宽的主要手段)、为什么量化这么有效(它直接降低搬运量)、为什么推理芯片和训练芯片会分化(两者的算术强度完全不同)。
要点回顾
- 算术强度 = 运算次数 ÷ 数据搬运量;强度低时带宽是瓶颈,算力再多也用不上。
- 大模型推理的算术强度低,因为每生成一个 token 都要读一遍权重。
- 提高算术强度的主要手段:增大批、算子融合、降精度、把数据放近计算单元。
- 显存容量和带宽是两回事:训练偏容量,低延迟推理偏带宽。
- 算术强度是理解 HBM、量化、推理芯片分化的关键概念。