语言人工智能指南

KV缓存

KV 缓存存储转换器已经为之前的标记计算的键和值向量,因此它不必为它生成的每个新单词重新计算它们。

阅读时间:2分钟最后更新

概述

这是文本生成速度快的最大原因,也是长时间对话期间消耗 GPU 内存的主要原因。

深入探讨

Transformer 一次生成一个 token 的文本,每个新 token 的注意力层需要与每个先前的 token 进行比较。注意力机制将每个标记转换为查询、键和值向量。如果没有缓存,生成令牌数量 1,000 将意味着在每一步都重新计算所有 999 个早期令牌的键和值 - 二次方,浪费工作。 KV 缓存在首次计算并重用这些键和值向量后保存这些向量,因此每个新步骤仅计算单个最新令牌的向量并参与存储的缓存。这将每个令牌的成本从随序列长度缩放到大致恒定。权衡是内存:缓存随着上下文长度、层数和注意力头线性增长,通常成为长上下文服务中的主要内存消耗者。

技术洞察

在“预填充”阶段,模型处理整个提示并填充缓存;在“解码”期间,它会在每一步附加一个令牌的 K/V 并重新参与。缓存大小按所选精度缩放为 2(K 和 V)× 层数 × 头数 × head_dim × 序列长度 × 批次。为了解决这个问题,现代模型使用分组查询或多查询注意力来跨头共享键/值,并且像 vLLM 这样的服务系统使用 PagedAttention 在非连续块中分配缓存,从而减少碎片和浪费。

战略影响

速度与规模

语言工作流程可以在不牺牲一致性的情况下更快地移动。

交通与覆盖范围

它扩展了跨语言和沟通方式的访问。

更清晰的判决

团队可以花更多时间进行判断,而自动化则可以处理重复。

KV缓存的未来

随着上下文窗口扩展到数十万个令牌,KV 缓存成为中心瓶颈,因此创新非常激烈:缓存量化到 8 或 4 位、丢弃低重要性令牌的逐出策略、跨请求前缀共享以及卸载到 CPU 或磁盘。诸如多头潜在注意力之类的架构转变会压缩缓存本身。预计注意力变体和记忆系统将继续共同设计,旨在以低成本和高吞吐量服务很长的上下文。

现实世界的实施

通过重用对话历史记录中缓存的键/值而不是每轮重新处理它来加快聊天机器人的回复速度。

前缀缓存可在多个用户之间共享长系统提示的缓存,从而降低成本和延迟。

vLLM 的 PagedAttention 以块的形式管理 KV 缓存,以便在一个 GPU 上高效地服务许多并发请求。

将 KV 缓存量化为较低精度,以将较长的上下文放入有限的 GPU 内存中。

风险与防护栏

幻觉的事实可以悄悄地进入报告、支持流程或研究成果。

及时的敏感性可能会在类似的请求中产生不一致的结果。

如果访问控制薄弱,敏感文本数据可能会暴露。

实施路线图

1

在推出之前定义输出格式、语气和质量标准。

2

当准确性很重要时,请使用可信来源进行地面响应。

3

为高风险输出保留人工审查检查点。

4

跟踪故障模式并定期重新训练提示或工作流程。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the KV Cache quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

KV缓存优化

常见问题

什么是KV缓存?

KV 缓存存储转换器已经为之前的标记计算的键和值向量,因此它不必为它生成的每个新单词重新计算它们。这是文本生成速度快的最大原因,也是长时间对话期间消耗 GPU 内存的主要原因。

KV缓存存储什么?

KV 缓存保存来自早期标记的键和值向量,因此注意力可以重用它们而不是重新计算。

KV缓存主要解决什么问题?

如果没有缓存,每个新令牌都需要重新计算每个先前令牌的 K/V,这是浪费的;缓存使每个令牌的成本大致恒定。

KV 缓存的主要缺点是什么?

缓存随着序列长度、层和头而增长,通常成为长上下文服务中 GPU 内存的主要消耗者。

哪种技术通过在注意力头之间共享键和值来减少 KV 缓存大小?

分组查询和多查询注意力让多个查询头共享更少的键/值集,从而大大缩小缓存。

与 KV 缓存相关的 Transformer 推理分为哪两个阶段?

Prefill 用提示的 K/V 填充缓存;解码每一步都会附加一个新令牌的 K/V,并重新参与缓存。