当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > vLLM prefix caching怎样减少重复提示词延迟

vLLM prefix caching怎样减少重复提示词延迟

来源:17golang原创 2026-11-04 13:20:26 0浏览 收藏

vLLM prefix caching 要减少重复提示词延迟,需要同时满足两个条件:引擎启用了 Automatic Prefix Caching(APC),后续请求又拥有与已有请求一致、仍可复用的输入前缀。把固定规则和共享文档稳定地放在前面,把每次变化的问题放在后面,通常比单纯打开开关更值得先做。它节省的是重复输入的预填充计算,不是直接重用上一份答案。

官方地址:https://docs.vllm.ai/en/latest/features/automatic_prefix_caching/

设想一个设备手册问答服务:同一份手册被反复询问“怎样更换滤芯”“指示灯表示什么”。每次都把整份手册作为输入,用户往往关心回答开始出现之前的等待。下面围绕这类请求设计接入方式,不提供未经测量的加速倍数,示例也未在本文执行。

确认请求是否有可复用的共同前缀

先区分“内容相似”和“前缀一致”。两个问题主题相近,并不代表输入开头一致;同一份手册放在随机请求标识后面,也不等于形成很长的共同前缀。应检查最终送入模型的消息模板、角色顺序、固定文本以及文档内容,找到差异从哪里开始。

适合优先尝试的,是长文档被重复提问、稳定系统提示词服务大量请求,或者聊天历史逐轮追加的场景。若每次输入都不同,或者绝大部分时间用于生成很长的回答,APC能改善的部分就可能有限。先问“延迟主要花在哪里”,再判断是否值得围绕缓存调整请求组织。

以设备手册为例,可以为文档选择一个稳定版本,并保持同一版本的文本规范化方式一致。不要在请求前端反复改变章节排序、插入不同的页眉或附加随机空白。这里的建议是减少无意义的输入差异,不是为了命中而删掉用户问题或必要的业务信息。

把稳定内容放在真正的共同前缀里

一种清楚的组织方式是:固定回答规则、同一版手册、当次问题。若业务确实需要时间、工单号或追踪标识,优先判断它们是否必须进入模型上下文;仅用于日志关联的标识可以留在应用日志中。确实影响回答的信息必须保留,也不能为了缓存效果违反消息角色和指令层级。

# 固定部分在不同问题之间保持一致;示例只构造文本,不发起推理
rules = "依据下面的设备手册回答。资料没有说明时明确指出。\n"
manual = "设备手册正文:这里替换为应用持有的同一版完整手册。\n"
questions = ["怎样更换滤芯?", "指示灯闪烁表示什么?"]

# 将差异问题置于共同前缀之后,避免前端追踪标识打断前缀
prompts = [rules + manual + "\n用户问题:" + q for q in questions]
共享规则和手册与两个不同问题的输入组成说明图
静态说明图:请求甲乙共享固定规则与文档,差异问题位于后部,不是推理运行证据。

聊天接口还会把消息转换成模型使用的聊天模板。因此,只比较业务日志中一个文本字段可能不够。应把模板版本与分词器配置纳入接入记录,在模板升级后重新观察实际请求表现。不同模板生成的token序列可能不同,不能只看界面中展示的文字是否相同。

显式启用并固定模型配置

在线服务可使用引擎参数 --enable-prefix-caching 显式启用。下面的目录是部署者需要替换的模型目录,不是可直接下载的模型名称;硬件、依赖以及模型支持情况需符合自己的部署环境。

# 将模型目录替换为已经准备好且与环境兼容的模型
vllm serve /models/your-supported-model --enable-prefix-caching

离线接口可以在创建引擎时传入 enable_prefix_caching=True。如果已有服务配置显式设置过关闭,应在实际启动入口处统一配置,避免只改了一份没有被读取的文件。不同版本的默认行为不应靠旧文章推断,记录本次使用的版本及最终生效参数更便于比较。

第一次接入建议只改变缓存开关,先固定模型、并行设置、输入模板与输出长度。一次同时改变模型精度、并发、调度参数和缓存开关,即便响应变快,也很难说明收益来自哪里。示例命令只是配置表达,不意味着任何机器都能直接装载该模型。

分清KV复用与答案复用

APC缓存的是符合前缀条件的KV计算结果。后续问题仍然要参与推理,生成结果也仍由本次输入和生成参数决定。它与“按完整问题查一份已存好的最终回复”属于不同层次,应用不应把前缀命中当成回答已经完成。

官方设计采用基于哈希的缓存标识:当前块内容、此前块的关联信息以及必要的额外标识共同决定可复用对象。因此,同一段文本出现在不同前文后面,不应被当作一个与上下文无关的任意段落缓存。LoRA、多模态等输入也存在额外区分因素。

父块哈希token及额外标识与KV缓存对象的关系说明图
静态说明图:块键关联前文、当前块token及额外标识,请求复用的是KV对象,不是已生成答案。

实际可复用范围还受缓存匹配粒度和模型结构影响,不保证文本中每一个共同字符都对应可跳过的计算。接入阶段先让稳定前缀自然变长,再根据对应版本和模型文档研究细粒度参数,不必先为一个短提示词设计复杂的块边界填充。

用冷暖对照观察首字延迟

为设备手册场景准备三组请求:共享同一手册但问题不同的一组、输入长度接近但开头不同的一组,以及第一次处理该前缀的请求。保持输出长度限制与并发条件一致,分别记录首个输出token到达时间、整体耗时和输出token数。

请求组用途主要观察
首次出现的前缀了解尚未复用时的表现输入处理及首字等待
相同前缀与不同问题观察重复前缀的收益首字延迟与命中相关指标
相近长度的不同前缀排除只因输入变短而加快未共享前缀时的差异

不要只拿第一次和第二次完整响应时间做结论。首次模型运行还可能包含其他预热成本,排队压力和输出长度也会改变总耗时。比较时重复采样并保持负载条件一致,注明数据来自冷缓存还是暖缓存。本文没有实际测量,因此不列出速度数字。

如果首字延迟改善明显、完整响应时间变化不大,先看输出长度及生成阶段占比。这与APC主要节省预填充工作的定位并不矛盾。若首字时间也没有改善,再从前缀是否一致、请求是否落到具有对应缓存的实例,以及缓存是否仍可用等方面分析。

处理命中不足与部署限制

常见的应用侧问题包括:每次在最前面加入新时间戳、对共享文档随机拼接段落、模板不一致,或在多实例间随机分散同一组重复请求。先消除这些结构差异,再讨论更复杂的缓存部署。路由优化应同时考虑负载均衡,不应为命中让单个实例长期过载。

缓存复用也不是永久存储承诺。容量竞争、服务重启及部署变化都可能让后续请求重新计算。系统设计应允许未命中时正常工作,把命中作为性能收益,而不是保证请求正确性的前提。

为什么一样的手册没有带来明显加速?

检查手册之前是否出现变化内容,再看最终模板与实际token前缀。同时区分首字等待与整段回答耗时,避免把长输出的生成成本归因于前缀没有复用。

可以直接用APC代替业务答案缓存吗?

不能按同一个接口语义使用。答案缓存处理完整回复的复用与失效,APC处理模型内部的重复前缀计算,两者需要各自的使用条件。

是否要修改所有提示词来追求命中?

优先稳定本来就相同的规则和材料。会改变语义、权限或回答质量的信息不应为命中而删改,缓存收益应服从业务正确性。

官方资料:https://docs.vllm.ai/en/latest/configuration/engine_args/;https://docs.vllm.ai/en/latest/design/prefix_caching/。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
MCP 多轮往返请求怎样让工具调用继续执行MCP 多轮往返请求怎样让工具调用继续执行
上一篇
MCP 多轮往返请求怎样让工具调用继续执行
Transformers Trainer怎样保留自定义字段传入模型
下一篇
Transformers Trainer怎样保留自定义字段传入模型
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    880次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    877次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    960次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    941次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    768次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码