?)
在大模型领域缓存命中Cache Hit和普通计算机里的缓存概念类似但缓存的对象变成了模型计算结果尤其是KV CacheKey-Value Cache和Prompt Cache提示词缓存。“缓存命中”本质上就是模型发现一部分输入已经计算过可以直接复用之前的计算结果而不是再次进行昂贵的 Transformer 前向计算。这也是现代大模型能够支持长上下文、高并发和较低推理成本的重要技术之一。第一层为什么大模型需要缓存假设你问 ChatGPT请介绍《三体》。模型并不是一下子生成全部回答而是像这样每生成一个 Token都要重新计算整个 Transformer。输入 ↓ 生成 第1个Token ↓ 生成 第2个Token ↓ 生成 第3个Token ……例如输入 我 喜 欢 学 人 工 智 能生成下一个 Token 时模型理论上需要再次计算我 我 喜 我 喜 欢 ……如果每次都重新计算前面的内容速度会非常慢。于是出现了KV Cache。第二层KV Cache 命中最常见Transformer 中每一层都会计算QQuery KKey VValue其中Q当前 Token 查询K历史 Token 信息V历史 Token 内容实际上历史 Token 的 K 和 V 永远不会改变。例如用户输入 你好我想学习Python。第一次推理时模型计算出了K1 V1 K2 V2 K3 V3 ...这些结果保存起来。下一秒生成新的 Token你好我想学习Python。请模型发现前面已经计算过了不用重新算。于是直接使用缓存(KV Cache)你好我想学习Python。这就是KV Cache 命中KV Cache Hit速度可以提高很多。例如第一次你好需要计算Transformer ↓ K V缓存你好 ↓ (K,V)第二次你好 世界不用重新算你好直接缓存(K,V) 世界的新K,V所以推理越来越快。第三层Prompt Cache提示缓存例如 Prompt你是一位Python老师。 下面回答必须详细。 请介绍Python。下一次又问你是一位Python老师。 下面回答必须详细。 请介绍Java。前面的完全一样。你是一位Python老师。 下面回答必须详细。于是服务器直接说这一段 Prompt 我以前已经算过。不用再次进入 Transformer。直接读取以前的计算结果。这叫Prompt Cache 命中例如第一次Prompt ABCDEFG Question1缓存ABCDEFG ↓ Transformer计算结果第二次ABCDEFG Question2发现ABCDEFG完全一致。于是ABCDEFG ↓ Cache Hit不用重新计算。为什么很多 AI 平台说缓存命中可降低成本因为 Transformer 最耗资源的是长 Prompt例如系统提示5000 Token 项目代码30000 Token 你的问题20 Token如果每次都重新计算35020 TokenGPU 要重复计算大量内容。如果缓存命中系统提示命中 项目代码命中 ↓ 只计算最后20 TokenGPU 算力消耗会大幅下降因此推理速度更快。服务成本更低。用户等待时间更短。在 API 中的 Cache Hit很多大模型 API如部分 OpenAI 兼容服务、推理框架以及云厂商会返回类似指标Prompt Tokens: 40000 Cached Tokens: 39500 Completion Tokens: 200表示输入了 40000 个 Token其中 39500 个 Token 已经命中缓存真正需要重新计算的只有最后约 500 个 Token缓存命中率越高通常意味着请求执行得越快、成本也越低。把 Transformer 想象成一本很厚的教材。没有缓存每次回答新问题都要从第一页重新读到最后一页。有缓存但未命中你翻到之前没读过的章节只能重新阅读。缓存命中前面几百页都已经做了详细笔记只需要翻到最后新增的几页继续看。