“Prefix Cache(前缀缓存)” 是近年来 大语言模型(LLM)推理加速 里非常重要的一个机制,尤其在 长上下文对话、批量推理、function call、RAG 等场景 下,它可以显著降低推理时延与计算成本。
学习MindIE推理支持特性之Prefix Cache技术。
下面详细讲解它的原理、实现方式以及与其他缓存技术(如 KV Cache)的区别。
🧩 一、Prefix Cache 是什么?
Prefix Cache(前缀缓存) 是在大语言模型推理中,
用于缓存「前缀(Prefix)部分」计算结果的机制,
以便后续多轮推理或多样化生成时复用这些中间状态,避免重复计算。
换句话说:
它让模型在“相同开头、不同续写”的场景下,
不用每次从头推理,而是直接接着已有的上下文继续。
🔹 举个例子:
假设你有一个模型输入:
模型第一次生成时会计算出:
词嵌入 → Attention → KV Cache(key-value缓存)
现在第二次输入是:
这两条输入的前缀 "介绍一下MindSpore的架构" 是 相同的。
于是 Prefix Cache 就能直接复用前一轮计算的 KV 状态,
仅从 "并和PyTorch对比" 这部分重新算起,大幅节省时间。
⚙️ 二、Prefix Cache 的工作原理
从推理引擎(如 vLLM、MindIE、TensorRT-LLM)的角度来看,它通常包括三个核心部分:
1️⃣ 前缀检测(Prefix Matching)
- 将新输入的 token 序列与已有缓存比对;
- 找出最长公共前缀(Longest Common Prefix, LCP);
- 若存在缓存命中,则只计算新增的 token。
例如:
2️⃣ 缓存内容(Cache Content)
Prefix Cache 保存的不是原文本,而是模型的中间计算结果:
- Transformer 每层的 Key / Value 张量
- 可能还有注意力 mask、位置编码等辅助结构
- 这些张量通常存储在高带宽显存或 NPU 内存中。
3️⃣ Cache 复用(Cache Reuse)
推理引擎会:
- 直接取出缓存的 KV 张量;
- 拼接到当前计算图中;
- 跳过重复计算的注意力层;
- 从新 token 继续执行推理。
🚀 三、Prefix Cache vs KV Cache
这两个概念经常混淆,我们来对比一下:
简而言之:
KV Cache 是“单次生成加速”,
Prefix Cache 是“多请求共享加速”。
💡 四、Prefix Cache 的应用场景
⚙️ 五、技术实现(以 vLLM / MindIE 为例)
vLLM
- 采用 PagedAttention + Prefix Cache;
- 每个请求的 KV Cache 以“页(page)”形式管理;
- 通过哈希前缀实现高效匹配与共享;
- 在长文本生成中延迟下降可达 70%。
MindIE(华为昇腾版)
- 在 Context Manager 层实现 Prefix Cache;
- 利用 NPU 高带宽内存 (HBM) 保存前缀 KV;
- 结合 多流调度(Stream Scheduler),可同时服务多用户请求;
- 在多模态场景(图+文)中,尤其能减少重复 Vision Encoder 计算。
📊 六、总结一句话
Prefix Cache 是跨请求的上下文缓存机制,
能让模型在相似输入场景下避免重复计算前缀部分,
显著提高吞吐与时延性能。
“Prefix Cache(前缀缓存)” 是近年来 大语言模型(LLM)推理加速 里非常重要的一个机制,尤其在 长上下文对话、批量推理、function call、RAG 等场景 下,它可以显著降低推理时延与计算成本。
学习MindIE推理支持特性之Prefix Cache技术。
下面详细讲解它的原理、实现方式以及与其他缓存技术(如 KV Cache)的区别。
🧩 一、Prefix Cache 是什么?
换句话说:
🔹 举个例子:
假设你有一个模型输入:
模型第一次生成时会计算出:
现在第二次输入是:
这两条输入的前缀
"介绍一下MindSpore的架构"是 相同的。于是 Prefix Cache 就能直接复用前一轮计算的 KV 状态,
仅从
"并和PyTorch对比"这部分重新算起,大幅节省时间。⚙️ 二、Prefix Cache 的工作原理
从推理引擎(如 vLLM、MindIE、TensorRT-LLM)的角度来看,它通常包括三个核心部分:
1️⃣ 前缀检测(Prefix Matching)
例如:
2️⃣ 缓存内容(Cache Content)
Prefix Cache 保存的不是原文本,而是模型的中间计算结果:
3️⃣ Cache 复用(Cache Reuse)
推理引擎会:
🚀 三、Prefix Cache vs KV Cache
这两个概念经常混淆,我们来对比一下:
简而言之:
💡 四、Prefix Cache 的应用场景
⚙️ 五、技术实现(以 vLLM / MindIE 为例)
vLLM
MindIE(华为昇腾版)
📊 六、总结一句话