SGLang 前缀缓存(RadixAttention)如何避免重复 Prefill:完整讲解

发布时间:2026/10/21 12:25:33

SGLang 前缀缓存(RadixAttention)如何避免重复 Prefill:完整讲解 SGLang 前缀缓存RadixAttention如何避免重复 Prefill完整讲解【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang做客服机器人时你会发现一天几万个请求几乎都从同一段 2000 token 的系统提示词开头。不做前缀复用每个请求都要老老实实把这 2000 个 token 的注意力 prefill 跑一遍算力消耗随 QPS 线性上涨。SGLang 的前缀缓存RadixAttention就是针对这种浪费首个请求把计算结果写进缓存后续同前缀请求直接复用现成的 KV只补算自己多出来的尾巴。一句话原理给公共前缀建一份预制品可以把它类比成中央厨房的半成品第一单客人点菜时厨师把前奏部分系统提示词做熟装进保鲜盒后面凡是同款前奏的订单直接开盒接着炒自己的配菜不用再从生料做起。SGLang 里这份保鲜盒就是挂在基数树radix tree一种按前缀共享组织的树结构上的 KV cache键值缓存索引实现位于 python/sglang/srt/mem_cache/radix_cache.py。省下的时间不是来自更快的算子而是来自这部分根本不用算。SGLang 处理一次请求的流程命中是怎么发生的把视角放在一个请求从进来到离开整个过程分四步匹配match请求 tokenize 后从树根开始逐段比对找到当前序列已缓存的最长前缀。若匹配终点落在某个节点段中间会自动执行节点分裂split node把边界切干净——这不复制数据只是重排结构。只算增量模型前向只处理没命中的那部分 token。命中 80% 的请求prefill 计算量就只剩 20%。写回insert新算出的 KV 索引挂到树上对应位置供下一个同前缀请求命中。释放与回收每个节点带lock_ref引用计数请求在飞期间前缀被锁住不受淘汰影响请求结束后锁释放节点回到可淘汰evictable集合。内存吃紧时淘汰器用堆按策略默认 LRU弹出最老的叶子释放被锁节点自动跳过。匹配用页page做对齐当page_size 1时命中长度会向下取整到页的整数倍这同时是内存对齐和碎片控制的抓手。启用 SGLang 前缀缓存的 3 个常用启动参数前缀缓存默认开启什么都不用改就已经在工作。下面 3 个参数覆盖了大多数调优场景python -m sglang.launch_server \ --model-path 模型路径 \ --page-size 16 \ --radix-eviction-policy lru # 对比实验时可显式关闭缓存 python -m sglang.launch_server --model-path 模型路径 --disable-radix-cache参数默认值作用--disable-radix-cacheFalse布尔开关关掉前缀缓存做 A/B 对比--page-size视后端而定页大小匹配/插入/淘汰的对齐粒度建议 16 这类 2 的幂--radix-eviction-policylru淘汰策略可选lru/lfu/slru/priority命中率不用翻日志服务加--enable-metrics后指标接口会暴露缓存命中率、evictable_size可回收量与protected_size被锁保护量等直接接 Prometheus 即可实现见 python/sglang/srt/observability/metrics_collector.py。性能数据前缀缓存能省多少场景基线无复用RadixAttention变化幅度多轮对话1.0x3.2x220%批量提示工程1.0x4.8x380%代码补全1.0x2.7x170%文档摘要1.0x5.1x410%数据口径说明以上为参考文章复述的对比数据以无缓存 prefill 耗时为基线做相对加速比实际数值取决于模型、序列长度与前缀重叠率规律是共享前缀占比越高收益越大四舍五入后量级约为 5 倍封顶。进阶速览分块前缀缓存与 HiCache 分层分块前缀缓存Chunked Prefix Cache长序列请求被切成多个 chunk 分块 prefill普通模式下整条前缀要等第一个请求算完才可共享。该特性让边算边共享成为可能目前面向 DeepSeek 等长序列模型短序列场景若觉得有额外开销可用--disable-chunked-prefix-cache关闭相关阈值由环境变量SGLANG_CHUNKED_PREFIX_CACHE_THRESHOLD控制。HiCache 混合缓存把 KV 从 GPU 显存扩展到主机内存形成设备端 主机端两级。设备端未命中时会先去主机端捞而不是直接重算。关键参数是--hicache-ratio主机池/设备池比值cache 模式默认 2.0和--hicache-write-policy可选write_back/write_through/write_through_selective。对前缀很长、复现间隔长到会被 LRU 淘汰的负载这一层是命中率兜底。避坑与调优命中率、锁和命名空间隔离现象原因处理KV 池紧张但缓存迟迟不释放在飞请求持有lock_ref被锁节点计入protected_size淘汰器会跳过先查 protected 占比缩短单请求上下文或降低并发热前缀多时换slru/priority策略保活长序列首个请求耗时内缓存迟迟不可复用chunked prefill 下 KV 分块写入整条前缀写完才完整可共享长序列场景依赖分块前缀缓存特性短序列负载用--disable-chunked-prefix-cache省掉开销换了 LoRA 或采样 salt 后命中率骤降RadixKey支持extra_key命名空间不同命名空间的 token 序列故意不共享节点这是设计特性而非 bug想共享就保持命名空间一致想隔离不同 adapter、不同 RAG 上下文则正该这样用高频疑问前缀缓存是默认开启的吗是。disable_radix_cache默认 False起服务即生效。想关闭只需要加--disable-radix-cache。命中率怎么查--enable-metrics启动后拉/metrics关注前缀缓存命中率以及evictable_size、protected_size两个量。命中率长期偏低且 evictable 接近 0通常说明缓存容量小于工作集考虑扩显存预算或上 HiCache。淘汰策略怎么选默认lru对多轮对话够用请求模式高度重复少数超热前缀可试lfu想给关键租户的前缀更高存活率用priority按优先级淘汰。节点分裂会不会造成 KV 重复拷贝不会。分裂只调整树上节点的边界与指针KV 索引按段切分引用不重复搬运显存数据。写在最后SGLang 的前缀缓存把重复 prefill 同一前缀从默认行为变成了可感知、可度量、可淘汰的一等公民基数树负责找前缀引用锁负责保安全页对齐负责控碎片策略化淘汰负责省显存。理解了这条链路你就有了在真实负载下调命中率和内存水位的全部抓手。接下来值得关注的是跨实例的缓存共享与量化格式 KV 的落地前缀复用正从单服务内优化走向集群级基础设施。【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/21 22:12:24

H5调起摄像头识别条形码实战:getUserMedia+jsQR完整指南

简介:手机摄像头实时识别条形码的H5实践资源,面向Web前端与移动端开发者,演示不依赖原生App、在浏览器环境中完成扫码的实现思路,适用于电商、物流、库存管理等场景,对希望低成本接入扫码能力的前端用户尤其友好。压缩…

2026/10/19 17:07:30

企业做GEO,究竟在解决什么问题?

2026年已至。当你向AI助手抛出一个问题——“东南亚跨境电商现在选什么品好卖?”或者“智能制造出海,合规上最容易踩的坑是什么?”——它给出的回答里,有没有出现你的品牌?这个念头,正让越来越多的出海企业…

2026/10/21 9:49:23

CLIP 快速上手:免费跑通 AI 图文匹配与零样本分类

CLIP 快速上手:免费跑通 AI 图文匹配与零样本分类 【免费下载链接】CLIP CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image 项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP 没有标注数据&am…

2026/10/21 22:31:33

轻量级地图模块lingbot-map设计与实现

去年有一段时间,我一直在折腾机器人导航相关的原型验证,试过几套成熟的地图方案,要么安装体积大得离谱,要么配置文件一层套一层,改一个坐标要翻半天文档。后来实在忍不了,索性自己动手写了一个轻量级地图模…

2026/10/21 22:31:33

React调试工具实战:基于Fiber树的数据抽取与性能分析

1. 为什么动手写rea:一次线上排查留下的"烂摊子改良"事情得从一次线上卡顿排查说起。当时我在维护一个基于React的中后台管理系统,某天客户反馈"页面点起来像在拖泥带水",尤其是某个数据看板,每次筛选都要等两…

2026/10/21 22:31:33

交换机工作原理与运维实战:从MAC地址表到VLAN、STP的完整指南

1. 从一次“全网卡顿”说起:为什么说交换机是交通指挥官接手办公网络运维的第一年,我就被一个“玄学故障”折磨过整整两天。现象很典型:白天一切正常,下午三点一过,整个办公室的网络就像堵死了早高峰环路,网…

2026/10/21 22:31:33

Linux内核调试利器Ftrace:从原理到实战的深度解析

1. 为什么内核调试总让人头疼,以及Ftrace到底解决了什么搞内核开发的人都有一个共识:用户态程序出了问题,gdb 挂上去、打几个断点、看看调用栈,大部分情况都能定位。但一旦问题出在内核态,事情就完全不一样了。内核崩溃…

2026/10/21 22:31:33

RT-Thread W60X SDK 实战:LVGL 与 Wi-Fi 协同开发指南

简介:RT-Thread_W60X_SDK 是面向 W60X 系列无线微控制器开发者的软件开发套件,基于开源可定制的 RT-Thread 实时操作系统,并集成 LVGL 图形库,适合从事 Wi-Fi IoT 应用、智能家居与工业控制的中高级嵌入式工程师。套件内含针对 W6…

2026/10/21 22:26:32

个人技能管理指南:盘点、量化、学习与迭代的完整方法

“skills”这个词,我在电脑上敲下来的时候,突然想到一个问题:有多少人能在一分钟之内,清清楚楚写出自己最核心的10项技能,并且每一项都能说清楚在什么场景下用过、熟练到什么程度、能解决什么问题?我见过很…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/21 0:00:35

交通流仿真实战:IDM跟驰与MOBIL换道模型参数调优与避坑指南

简介:这份资源是面向交通工程学习者与Python开发者的微观交通流仿真项目,核心实现智能驾驶模型(IDM)下的车辆跟驰与换道行为,可用于理解速度、密度与流量之间的动态关系,适合具备Python基础、希望深入交通模…

2026/10/21 0:00:35

揭穿智能体表面顺从:用追踪代码重建任务执行确定性

1. 表面顺从不是智能体的“礼貌”,而是任务执行链路上的隐性断点最近在调试一个跨平台长周期任务调度系统时,我反复遇到一种令人困惑的现象:智能体在用户指令发出后,几乎秒级响应“已收到”“正在处理”“请稍候”,UI上…

2026/10/21 0:00:35

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑