理解大模型的显存占用:显存花在哪了?

——以 Qwen3-4B-Thinking-2507 为例

最近几年,大模型从云端一路卷到个人电脑,甚至卷到了边缘设备。于是一个原本只属于深度学习工程师的词,开始高频出现:显存占用

你可能也和我一样,经常在想:“4B 模型到底要多少显存?为什么我换了量化方式,显存并没有我想象中降那么多?上下文越长为什么越吃显存?”

如果你也有这些问题,那么这篇文章会帮你一次搞明白。

下面的内容既不晦涩,也不堆概念,我会把大模型显存占用的本质拆给你看,再结合 Qwen3-4B-Thinking-2507 做完整的例子,让你知道每一MB显存到底去哪了。


一、显存被占是因为三个东西:“模型、缓存、临时空间”

推理时,大模型需要三样东西:

  1. 模型本身(Weights)
  2. KV 缓存(Attention Cache)
  3. 算子需要的临时空间(Workspace)

听起来很简单,但实际占用量差别巨大。

如果你的模型显存占用远远超过“参数大小”,那八九不离十是被 KV Cache 吃掉了。

我们一个个拆。


二、模型权重:你能看到的显存

这部分最简单:参数量 × 精度。

比如 FP16:

4B × 2 bytes = 8GB

INT4 量化:

4B × 0.5 bytes = 2GB

所以你看到别人说 “4B 模型 INT4 后大概 2GB”,就是这个计算来的。


三、真正的显存:KV Cache

如果你觉得显存占用超过你计算的模型大小很多,那一定是它干的。

推理的时候,大模型对每个 token 都会缓存它的 Key 和 Value,这些缓存不会丢,一直保留到整个推理结束,因为未来所有 token 都要和它们算注意力。

每一层都要存一份 Key 和一份 Value,所以:

  • token 越多 → 显存上涨
  • 层越多 → 显存上涨
  • Attention 头越多、维度越大 → 显存上涨

KV Cache 是动态增长的,而且是线性增长


以 Qwen3-4B-Thinking-2507 举个例子:

它的结构如下:

  • 32 层
  • 24 个 attention heads
  • head_dim = 128(因为 3072 / 24 = 128)
  • 精度 FP16(KV Cache 是 16bit)

一个问题:每个 token 要多少显存?

算一下:

2(K,V) × 32 层 × 24 头 × 128 × 2 bytes

= 393,216 bytes
384 KB/每个 token

看到这个数字没?
一个 token 就 384KB。

你输入一句话 100 字,上下文 150 字,分词大概 200 token,就已经:

200 × 384KB ≈ 76.8MB

这还是非常短的上下文。


当你使用 4K 上下文时:

4K tokens × 384KB = 4,000 × 384KB ≈ 1.5GB

这才是真正耗显存的家伙。

这就是为什么:

  • 量化权重再怎么省
  • 上下文长一点
  • 显存还是爆

因为 KV Cache 不会因为你做 INT4 就变成 INT4,它还是 FP16 或 BF16。


四、Workspace:永远存在的部分

不同库的 workspace 大小不同:

  • cublas 大概 200~400MB
  • FlashAttention 大概 400~700MB
  • 一些框架会额外需要 1GB+

通常你可以按 1GB 左右 来估。


五、Qwen3-4B-Thinking-2507 真实占用是多少?

假设你用 INT4。

1)模型权重

≈ 2GB

2)KV Cache(4K 上下文)

≈ 1.5GB

3)Workspace

≈ 1GB

合计:

2GB + 1.5GB + 1GB ≈ 4.5GB

所以你看到网上许多人说:

“4B 模型 INT4,在 6GB 显卡上跑挺稳。”

是有道理的。


六、总结

模型占固定空间,KV Cache 才是显存的真正开销。

你可以量化模型,但无法量化 KV Cache。
上下文越长,KV Cache 越吃显存,越后面越夸张。

“不是模型太大,而是历史 token 越积越多。”


七、如何省显存

  1. 减少上下文长度
    上下文从 8K → 4K,KV Cache 直接砍半。

  2. 选择 INT4 量化,权重最省

  3. 使用 FlashAttention-2/3 或与其兼容的代码
    可以少 200~500MB 的临时显存。


八、最后

显存占用每一部分都有迹可循。只要你理解了权重、KV Cache、workspace 三者的作用,你就能快速算出一个模型是否能在某块显卡上跑。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐