尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

响应延迟降低一半:如何使用EnergonAI的LRU响应缓存ListCache

响应延迟降低一半:如何使用EnergonAI的LRU响应缓存ListCache 响应延迟降低一半如何使用EnergonAI的LRU响应缓存ListCache【免费下载链接】EnergonAILarge-scale model inference.项目地址: https://gitcode.com/gh_mirrors/en/EnergonAIEnergonAI 是一个面向大规模模型推理的服务框架其内置的ListCache LRU 响应缓存可以显著降低推理服务的响应延迟。对于重复出现的请求例如固定的测试 prompt、高频问答模板ListCache 直接返回缓存结果让命中请求的延迟从跑完整次生成降到毫秒级从而在混合流量下将平均响应延迟降低约一半。本文将带你快速上手这个功能。为什么推理服务需要响应缓存大模型推理的主要开销在 GPU 上逐 token 生成一次 64 token 的生成可能耗时数百毫秒到数秒。但在真实业务中压测流量会反复发送相同的 prompt见 examples/opt/benchmark/locustfile.py固定问答模板如客服话术、翻译样例被高频重复调用 相同prompt max_tokens的请求结果在采样参数固定时是可复用的对这类请求把结果缓存起来第二次请求就无需再占用 GPU——响应延迟直接趋近于零。ListCache 的 3 个核心机制ListCache 的实现位于 examples/opt/cache.py仅约 60 行代码基于OrderedDict 线程锁实现包含三个关键设计1. LRU 淘汰策略当缓存容量cache_size满时最久未访问的 key 会被优先淘汰。每次get命中或add更新都会把 key 移到队列末尾保证热点请求始终驻留在缓存中。2. 列表值缓存一个 key 存多个结果与普通 KV 缓存不同ListCache 的 value 是一个列表每个 key 最多缓存list_size个不同结果。命中时随机返回其中一个见 examples/opt/opt_server.py 中random.choice(outputs)。这带来两个好处采样类请求不会总返回同一句标准答案体验更自然列表未满时视为未命中会继续调用模型并补充结果直到填满3. 固定键fixed_keys永不淘汰高频核心 prompt 可以声明为固定键它们存放在独立的fixed_cache中不参与 LRU 淘汰。示例服务预置了 3 条固定问答 promptFIXED_CACHE_KEYS确保压测关键路径永远命中缓存。三步启用 ListCache 响应缓存第一步通过启动参数开启缓存以 OPT 推理服务为例examples/opt/opt_fastapi.pypython opt_fastapi.py opt-125m --cache_size 128 --cache_list_size 4参数含义说明--cache_size缓存的最大唯一请求数设为0表示关闭缓存默认值--cache_list_size每个请求缓存的结果数默认1越大越接近真实采样分布BLOOM 示例examples/bloom/server.py使用完全相同的参数体系。第二步请求走先查缓存流程服务端的处理逻辑非常直观用(prompt, max_tokens)组合作为缓存 key调用cache.get(key)命中则随机取一个结果直接返回未命中抛出MissCacheError则提交到 energonai/engine.py 的推理引擎执行生成生成完成后调用cache.add(key, output)回填缓存也就是说接入 ListCache 只需要改动请求入口处寥寥几行代码与底部分布式推理引擎完全解耦。第三步为你的高频 prompt 配置固定键如果你的业务有明显的必问 prompt比如健康检查、演示样例把它们加进fixed_keys即可保证这些请求 100% 命中、永不被挤出缓存。调优建议怎样把延迟压到最低cache_size 宁大勿小它只影响内存占用缓存的是文本结果不是张量建议按 QPS × 平均 prompt 种类预估cache_list_size 设为 2~4在结果多样性与命中率之间取得平衡列表没填满之前会持续走真实推理压测验证项目自带 Locust 压测脚本可用 examples/opt/benchmark/locustfile.py 开启/关闭缓存对比 P50/P99 延迟总结ListCache 是 EnergonAI 推理服务中投入最小、收益最大的优化之一✅ 纯内存实现对分布式推理引擎零侵入✅ LRU 固定键双策略热点请求稳定命中✅ 每个 key 缓存多条结果兼顾性能与体验✅ 两行启动参数即可开启cache_size0随时可关如果你的服务存在重复请求流量现在就加上--cache_size让平均响应延迟降低一半吧【免费下载链接】EnergonAILarge-scale model inference.项目地址: https://gitcode.com/gh_mirrors/en/EnergonAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表