APC技术,遇到新prompt和老prompt前缀完全相等的,则复用老prompt的KV cache,避免重新计算。

VLLM代码实例:

# set enable_prefix_caching=True to enable APC
llm = LLM(
    model='lmsys/longchat-13b-16k',
    enable_prefix_caching=True
)

 应用场景:

1. 长文档问答。给1个长文档,变换不同的query。则把长文档放到前面,可以复用KV cache。

2. 多轮聊天。多轮对话聊天历史,放到前面,可以复用KV cache。

我的实验:

1. fetch_count>1时,不管是否打开enable_prefix_caching,prompt的KV cache都会被复用。

2. prefill公共前缀较长,且decode output较短时,KV cache复用的威力才能发挥出来。

3. 只要前面有1个字符不同,后面完全相同的部分,也不能被视为公共前缀。因为2个prompt这部分的KV值不相等了。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐