【科普】大模型中常说的 Prompt Caching 是指什么?

近年来,大型语言模型(LLMs,Large Language Models)在自然语言处理领域取得了显著的进展。然而,这些模型通常具有庞大的参数量和计算复杂度,导致推理过程(即根据输入生成输出的过程)耗时且昂贵。缓存是一种常见的计算机技术,其核心思想是将计算结果或数据临时存储起来,以便后续重复使用,从而避免重复计算或数据访问,提高效率。在大模型中,缓存的原理也类似,只不过存储的内容和应用场景更加复杂。 在大型语言模型中提到的缓存(Caching),并不是直接缓存 system_prompt 或 user_prompt 的文本内容,而是缓存模型在计算过程中生成的中间计算结果,尤其是 Transformer 模型中的 键值向量(Key-Value Vectors,KV Cache)。不过,当输入的文本有相同前缀时,可以利用缓存避免重复计算。 1. 缓存的核心:键值向量(KV Cache) 在 Transformer 的自注意力机制中,每个词元(Token)会生成一对向量: Key(K):用于计算其他词元对它的关注程度。 Value(V):存储该词元的语义信息。 缓存的作用: 在生成文本时(例如逐词生成回答),模型会将已生成词元的 K 和 V 向量存储下来。当生成下一个词元时,直接复用这些历史向量,避免重新计算。 2. 前缀匹配与缓存复用 当用户输入的提示(Prompt)有相同的前缀时,模型可以利用缓存快速处理。 例如: 用户输入1: "法国的首都是哪里?法国的美食有哪些?" 用户输入2: "法国的首都是哪里?德国的首都是哪里?" 假设模型已经处理过 用户输入1 的前缀 "法国的首都是哪里?",那么处理 用户输入2 时: 发现前缀 "法国的首都是哪里?" 和之前相同。 直接复用此前缀对应的 KV 缓存,无需重新计算这一部分的 K 和 V 向量。 只需计算新增部分 "德国的首都是哪里?" 的向量。 3. 具体例子 假设用户连续两次提问: 第一次提问: System Prompt: "你是一个百科全书助手。" User Prompt: "爱因斯坦提出了什么理论?" 模型行为: 计算 System Prompt 和 User Prompt 的所有词元,生成对应的 K 和 V 向量,并缓存。...

March 12, 2025 · 1 min · fisherdaddy