将预训练好的大模型放入显卡后,它的静态权重本身(如 70B 模型在 INT4 量化下需要 40GB)占用了一大块显存固定空间。 当模型开始对外提供服务并接收长文本输入、缓慢逐字输出时,会动态产生大量的计算缓存。这部分动态显存(即 KV Cache)的膨胀与碎片化问题如果不加以管理,将导致服务器容易因为显存耗尽(Out Of Memory, OOM)而崩溃。
1. 原理核心:为什么需要保留 KV Cache 缓存?
回顾 Transformer 的运作机制,大语言模型生成文本的方式属于因果自回归 (Causal Autoregressive),即:当模型生成第 N 个字时,它必须计算第 1 到 N 个字的全部输入序列特征。这意味着序列前面所有词汇的关键信息都需要参与注意力机制(Attention)的内积运算。由于这是一种无状态记忆模型,它只会根据当下的完整输入,计算出下一个字可能出现的概率分布。
如果不进行干预,每生成一个新字,模型都要将前面所有的字全部丢回 Transformer 网络中重新计算一遍它们的键(Key)和值(Value)特征。假设一篇文章有数千字,反复重算历史词汇的多头注意力特征将带来极高的时间维度时延(Latency)和算力浪费。
为了避免这种低效设计,研究者引入了 KV Cache。在计算时,前序所有词元的 Key 和 Value 矩阵会被完整缓存保存在显存中。生成新字时,只需将其作为 Query 请求,去前序词汇缓存池里直接提取之前已经算好的答案组合即可。
这种“用空间(显存)换取时间(计算速度)”的做法,极大压缩了延迟。但也直接引发了新的危机:长文本上下文及多轮对话所产生的 KV Cache 体积极速膨胀,使得显存紧缺。
[图片占位:(A clean, minimalist technical diagram on a solid white background. Use simple, crisp vector line art, monochrome or with very subtle minimal color accents (like one shade of blue). Flat design, no 3D effects, no clutter. Draw a simple 2D line graph. The X-axis is sequence length, the Y-axis is Memory Usage. Draw a cleanly rising line or a series of increasing simple bar charts.)]
2. 传统 KV Cache 管理的碎片化危机
在以前的系统中,为了保持请求的连续缓存特征,模型服务端会按照输入指令可能达到的最大长度来连续性预分配一整块物理显存。 例如,一个对话被默认预分配了 4096 长度的连续物理缓存区块。如果用户实际提问只有几百字,剩下的预留存储就会闲置;如果不同用户的多线程请求长度不一,物理显存中就会出现大量的碎片和空壳。 这些空洞化碎片使得可用空间零散,即便拥有 80GB 显存,实际有将近 60% 会因为碎片化无法拼合而浪费,从而导致并发能力长期处于低下状态。
3. vLLM 的工程破局:PagedAttention 机制
伯克利团队开发的 vLLM 框架,将操作系统底层概念迁移到了大模型生态,通过在底层机制上重构了多头注意力的计算方式,彻底打碎了连续预留机制引发的壁垒。
- 虚拟化内存页(Paged Memory):vLLM 将整个 KV Cache 的连续显存物理空间切分成一个个固定尺寸、互不相邻的细小“内存页(Block)”。每个请求的输入输出序列不再需要整块的显存数组。
- 逻辑分页映射缓存表(Block Table):随着生成字数的增加,请求只会在需要时按块顺序索要碎片空间填充新的词元矩阵缓存,并通过后台建立一张全局逻辑地址与乱序物理存储页面的映射索引表(PagedAttention)进行计算。
- 消除碎片且支持复用:系统随时可以填鸭式利用物理显卡上的任意边角空隙。更为高效的是,由于所有块都是按小片独立储存和分配。当出现公共的前置信息(例如不同用户使用同一个带有大段设定的 System Prompt)时,系统可以实现“内存共享”(Copy-on-Write)。只需不同会话的索征指向同一个物理页表,即可让重复内容占用零额外空间。
[图片占位:(A clean, minimalist technical diagram on a solid white background. Use simple, crisp vector line art, monochrome or with very subtle minimal color accents (like one shade of blue). Flat design, no 3D effects, no clutter. Divide the image into two sections. Left side: a single long contiguous block of memory. Right side: memory broken into many small, distinct identical square blocks (pages) with connecting lines.)]
在这项创新技术的加持下,原本支持几人并发的服务器瞬间可以实现数百人无感的超级并发拉伸,这彻底奠定了当代企业级商用大模型托管方案的标准范例。
下一章预告: 显存在框架端被成功复用后,如何通过更极致的底层硬件底层加速技术,以提高模型的运行效率与首字响应速度(TTFT)?我们将进一步探索行业前沿技术方案,见 7.3 推理算力优化:企业级加速框架与部署工具链。