一句话定义:显存带宽(Memory Bandwidth)指 GPU 在单位时间内能从显存中读出和写入的数据总量,通常用 GB/s 或 TB/s 衡量。它决定的不是“算得多快”,而是“数据供得上不上”。
一个传送带比喻
把 GPU 想成一个大厨房:里面有成千上万个厨师(计算核心),手速极快;显存是仓库,存放着食材(模型权重、激活值、KV 缓存)。显存带宽就是仓库到厨房之间那条传送带的宽度。厨师再多,传送带一小时只能过这么多筐菜,多出来的人也只能干等。
大模型推理正好依赖这条传送带。生成每个 token(词元)时,都要把相关的模型权重从显存搬到计算单元里过一遍。也就是说,输出一个字的代价里,很大一块是“搬运费”。搬运速度上不去,算力再强也只能闲置,这就是所谓的“饿着”。
两个阶段,两种瓶颈
推理通常分两段,瓶颈性质不同:
- 预填充(prefill):一次性处理你输入的整段提示词,矩阵乘法的计算量大,属于计算密集(compute-bound),拼的是算力。
- 解码(decode):一个字一个字往外吐,每步只算一点点,却要把权重几乎完整搬一遍,属于访存密集(memory-bound),拼的是带宽。
工程上常提的算术强度(arithmetic intensity,指每搬运一字节数据能做多少次运算)就描述这件事;Roofline 模型用一条折线把“算力天花板”和“带宽天花板”画在同一张图上,帮你判断当前负载贴近哪个天花板。
和相邻概念的区别
| 概念 | 回答的问题 | 不足时会怎样 |
|---|---|---|
| 显存容量(Capacity) | 装得下多少 | 装不下,模型直接跑不起来或需要切分 |
| 显存带宽(Bandwidth) | 搬得多快 | 装得下但喂不饱,出字慢、利用率低 |
| 算力(FLOPS) | 算得多快 | 计算密集任务慢,但对解码阶段影响有限 |
| 缓存 / 片上存储(SRAM) | 手边能放多少 | 复用率低,更多数据要往返显存 |
一句话记法:容量决定“能不能跑”,带宽决定“跑得顺不顺”,算力决定“批量干活时快不快”。
对实际工作的意义
对从业者:优化推理前先判断瓶颈。如果是访存密集,提升的方向是减少搬运,比如权重量化(把权重压成更低精度,搬运量随之下降)、管理好 KV 缓存、用AI 词典:连续批处理">连续批处理(continuous batching)让多个请求共享同一次权重搬运、用小模型或专家混合(MoE)减少每步激活的参数。这些手段不增加算力,却常能带来明显提速。买卡时也别只盯算力数字,带宽规格同样要看,具体以厂商官方规格页面为准。
对普通人:这解释了为什么同一台机器跑大模型,“回答长度”和“并发人数”比“参数翻倍”更敏感;也解释了为什么长上下文对话越到后面越慢,因为缓存越堆越多,搬运压力越大。看到“某卡算力翻倍”的宣传时,可以多问一句:带宽跟上了吗?
