同一模型为什么聊久了更占显存?
模型权重没有变,长对话却更容易触发内存不足。原因之一是生成过程保存的 KV cache。它与上下文长度、模型结构和并发有关,因此硬件预算需要同时考虑“模型多大”和“怎么使用”。

三个月免费开放 · 至 2027 年 1 月 10 日(日本时间),所有文章均可阅读全文。
KV cache 保存注意力计算所需的键和值,以减少生成后续 token 时的重复计算。Hugging Face 的缓存策略文档讨论了不同缓存方案的内存与速度取舍;NVIDIA 的推理文章也把缓存列为资源预算的重要部分。Hugging Face 文档 ↗、NVIDIA 技术文章 ↗
以常见的完整注意力缓存为例,一个简化估算是:
缓存字节数约等于 2 × 层数 × KV 头数 × 每头维度 × token 数 × 并发序列数 × 每元素字节数。
这里的 2 分别对应键和值。假设某个示例模型有 32 层、8 个 KV 头、每头 128 维,保存 4,096 个 token,单序列使用 2 字节数值,算出的缓存约为 512MiB。
在这些假设保持不变时:
- 上下文变成 8,192 个 token,约为 1GiB。
- 同时保存四条 4,096-token 序列,约为 2GiB。
这是自拟的数量级算例,未包含缓存分配、缓冲区等开销;滑动窗口、不同注意力结构和缓存量化也会改变结果,不能套用到所有模型。
视觉札记

试一试
固定模型与量化方式,逐步增加输入长度,记录峰值内存和首字延迟。随后再改变并发。每次只改变一个条件,才容易判断哪项需求推高了内存。
省显存方案也要测速度。把缓存移到其他内存位置,或进一步量化,可能带来新的计算与传输成本。
把原理,切开来看
权重没变,对话仍在增长
- 模型权重
同一份检查点
- 更长上下文
需要关注更多词元
- KV 缓存
保存的注意力状态
读懂之后,再动手试一次。
看看下一篇这篇文章对你有帮助吗?
正在读取点赞…无需登录,同一浏览器在不同语言中只计一次。
原始参考资料
这些资料用于核查与继续学习,来源不代表对本刊的背书。
huggingface.co参考原文 1developer.nvidia.com参考原文 2