
如何实现大模型的降本增效?浅析LLMs场景中缓存的作用
首先缓存这个词大家应该都比较清楚了,无论是在应用服务、数据处理等技术中都会用到缓存技术,用于加速数据查询效率,减少底层额外计算资源的消耗,是一个非常重要且强大的技术。
简单来说:用于将频繁访问的数据或计算存储在更快、更易于访问的位置。
这使得信息检索更加迅速,减少了重复执行相同操作或获取相同数据的需要。
本质上,缓存充当一种短期记忆,有助于提高系统性能和效率。
通常意义上,缓存对服务带来的好处有几点:
- 响应时间提升:缓存数据比重新计算或从原始源获取要快得多,尤其在 LLM 系统中。
- 服务器负载减少:通过从缓存中提供频繁请求的数据,主服务器承受的压力更小。
- 带宽节省:缓存可以显著减少网络上传输的数据量。
- 提升用户体验:更快的响应时间带来更流畅的交互和更高的用户满意度。
- 成本效益:通过减少计算和网络资源,缓存可以降低运营成本。
而传统缓存和LLMs的缓存其实也有实现方式上的区别和雷同,比如二者其实都是规避存储频繁的访问,来提升访问性能;都是通过空间来换取时间;同时,对于缓存策略上面也相似。
与此同时,又有些不同,LLMs缓存处理起来会更加复杂,它依赖于上下文的数据,同时有更加复杂的缓存策略。
例如:
关键词缓存 :这涉及根据输入查询的精确匹配来缓存响应。它更简单,但灵活性较低。
语义缓存 :这是一种更高级的方法,根据查询的含义来缓存响应,即使措辞略有不同也能匹配。
关键词缓存
考虑以下查询:
法国的首都是哪里?
告诉我法国的首都!
为了实现关键词缓存,我们将首先对两个查询进行分词:
["what", "is", "the", "capital", "of", "france"], 和
2. ["tell", "me", "the", "capital", "of", "france"]
然后通过移除停用词、词干提取或词形还原来规范化标记:
["capital", "france"]
["capital", "france"]
现在我们可以使用标准化后的词语来生成缓存键。
语义缓存
使用 Sentence Embedding(例如 S-BERT)等技术将两个查询表示为向量。
计算向量表示之间的相似度。
如果相似度高于阈值,则认为这两个查询相似,并使用相同的缓存键。
下面来重点介绍一些关于LLMs场景中缓存的作用
在LLMs场景中缓存的作用
大模型场景与传统应用相比,缓存的价值被放大了数倍。这是因为大模型涉及的数据体量庞大、计算过程复杂、硬件资源昂贵。缓存的引入,往往能带来质的变化。
2.1 推理场景中的缓存
(1) KV Cache(Key-Value Cache)
在 Transformer 推理过程中,每生成一个新 Token,都需要基于已有 Token 的 Attention 计算。如果不做缓存,每一步都要重新计算全部历史序列,代价极其高昂。
通过KV Cache 可以将历史 Token 的 Key/Value 张量缓存下来,使得后续推理只需计算新 Token 与已有缓存的 Attention,而无需重复计算历史部分。
这样带来的好处在于:
延迟显著降低(O(n²) → O(n))
GPU/TPU 资源消耗减少
在长文本推理和对话生成中尤为重要
(2) Prompt 缓存
在 ChatGPT、Claude 这类对话模型中,用户的上下文提示(Prompt)可能包含几千字甚至上万字。若每次推理都重新计算整个 Prompt,会极大浪费算力。
因此,平台会缓存用户 Session 的前置计算结果,仅在新输入部分做增量计算。
效果:
显著提升交互体验
节省重复 Session 的 Token 处理
(3)Embedding Cache
缓存文本/图像的向量化表示,避免重复 Embedding。
Embedding 缓存的核心作用是:
- 语义相似性 :基于嵌入的键可以捕捉查询的含义,使得语义相似的查询能够命中同一个缓存。
- 减少冗余 :通过在嵌入级别进行缓存,我们避免了重新计算嵌入和执行冗余的数据库查询。
- 可扩展性 :对于具有高查询量的大规模系统,语义缓存确保资源得到有效利用,减少计算时间和成本。
- 而对于Embedding 缓存的应用场景包括:RAG、搜索、推荐、相似度计算。
优点:
- 节省向量计算成本(GPU/CPU)
- 与向量数据库配合效果更佳
- 提升检索响应速度
缺点:
- 占用存储空间较大(向量维度高)
- 缓存一致性管理复杂(Embedding 更新时需同步)
(4)数据加载缓存(I/O Cache)
在训练模型中,需要加载海量数据提供给模型使用,而数据基本都是在对象存储等云端服务中,而对训练/微调数据集做本地化缓存,可以有效减少远端存储访问。
优点:
- 提升训练速度
- 降低存储系统压力
- 提高分布式作业的稳定性
缺点:
- 本地存储容量有限
- 需要缓存淘汰策略(LRU/FIFO)
- 需要和数据一致性策略结合
(5)检索缓存(RAG Cache)
检索缓存指: RAG 系统中的检索结果或候选文档,将这些内容提前缓存下来,这样在RAG应用中可以优先从缓存中读取。
优点:
- 显著提升查询响应时间
- 避免向量检索系统高并发压力
缺点:
- 缓存过时文档可能导致答案失效
- 更新代价较高
LLM 缓存面临的挑战
- 缓存一致性:确保缓存数据在底层 LLM 更新时保持一致。
- 上下文敏感性:LLM 输出高度依赖于上下文,使得确定缓存响应何时适用变得具有挑战性。
- 缓存大小管理:在缓存足够有用和不过度占用系统资源之间进行平衡。
- 隐私问题:确保敏感或个人信息不会意外地存储在缓存中。
- 自适应缓存:开发策略以根据查询和响应不断变化的模式动态调整缓存。
本文转载自DataForAI,作者:易程Date
