更新时间:2025-08-27 GMT+08:00
分享

Prefix Caching

什么是Prefix Caching

在LLM推理应用中,经常会面临具有长system prompt的场景以及多轮对话的场景。长system prompt的场景,system prompt在不同的请求中但是相同的,KV Cache的计算也是相同的;多轮对话场景中,每一轮对话需要依赖所有历史轮次对话的上下文,历史轮次中的KV Cache在后续每一轮中都要被重新计算。这两种情况下,如果能把system prompt和历史轮次中的KV Cache保存下来,留给后续的请求复用,将会极大地降低首Token的耗时。如果Prefix Cache和Generated KV Cache都可以缓存,在多轮对话的应用中,忽略边界情况,基本上可以认为其消除了历史轮次中生成对话的recompute。

Ascend vllm提供prefix caching关键特性能力,能够显著降低长system prompt和多轮对话场景首token时延,提升用户体验。其优势主要包括:

  • 更短的prefill时间:由于跨请求的重复token序列对应的KV Cache可以复用,那么就可以减少一部分前缀token的KV Cache计算时间,从而减少prefill的时间。
  • 更高效的显存使用:当正在处理的请求相互之间存在公共前缀时,公共前缀部分的KV Cache可以共用,不必重复占用多份显存。

约束限制

  • 该特性不能和ascend_scheduler_config同时使用。
  • 由于Chunked Prefill默认打开,需要在ascend_scheduler_config生效的前提下才可以关闭,因此当前Prefix Caching生效时Chunked Prefill也是生效。
  • 多模态模型暂不支持prefix cache。
  • Qwen2.5和3系列模型支持此特性。
  • 当跨请求公共前缀token数大于等于Page Attention中的block size,才会进行公共前缀token的KV Cache复用。

Prefix Caching参数设置

启动推理服务时,使用Prefix Cache特性需要配置的补充参数如表1所示,对应的代码样例如表2所示。

表1 Prefix Cache特性参数

服务启动方式

配置项

取值类型

取值范围

配置说明

offline

enable_prefix_caching

bool

  • True
  • False
  • True:会开启Prefix Cache特性,不配置这个参数也会默认开启
  • False:不会开启Prefix Cache特性。

online

--enable-prefix-caching

-

-

  • 不设置:默认开启Prefix Cache特性。

须知:

启用Prefix Cache特性是在启动服务时指定,属于action类型参数。

表2 开启Prefix Cache特性服务的代码样例

服务启动方式

接口

服务启动基础命令

offline

-

LLM(model="facebook/opt-125m", enable_prefix_caching=True)

online

openai

python -m vllm.entrypoints.openai.api_server \
--model=facebook/opt-125m \
--enable-prefix-caching

执行推理参考

  1. 配置服务化参数。Ascend vllm使用该特性需参考表1表2,其它参数请启动推理服务(大语言模型)
  2. 启动服务。具体请参考启动推理服务(大语言模型)
  3. 精度评测和性能评测。具体请参考推理服务精度评测推理服务性能评测

相关文档