网易首页 > 网易号 > 正文 申请入驻

两个一模一样的请求,为什么一个token都没复用上?

0
分享至

在 macOS 上跑我那个 Rust 写的 LLM 推理引擎 mini-vllm-rs,我打开了前缀缓存,然后往一个冷缓存里同时丢进去两个完全相同的请求。


结果两个请求,一个 token 都没复用。两份 prompt,各自从头算了一遍。

这不是缓存坏了。缓存是好的,只是它发布可复用页面的时机,比这两个请求到达的时间晚了一步。

冷缓存下的并发,撞上了发布时机

我的缓存只在请求结束时,才把可复用的页面发布出去。两个请求几乎同时到达,谁都没等到对方发布任何东西,于是谁都找不到可复用的前缀。后面再来的请求,就能正确复用已经完成的前缀了。

要让并发复用成立,得先回答几个问题:缓存页面什么时候该变得可见?另一个请求要不要等它?这个等待又该在什么时候结束?

基准测试把我推向了两个改动:增量发布,和单飞协调。

测试环境是 Mac mini 的 Metal GPU,4-bit 量化的 Qwen2.5 0.5B 模型,缓存页 16 个 token,重复跑 3 次。第一轮复用基准,对比的就是热复用和同时冷到达这两种情况。

让页面在主人还在生成时就发布

我加了增量发布。每次批量前向成功之后,引擎立刻把新完成的、包含已提交 token 的页面发布出去,这样它们在这个请求结束之前就能被复用。

测法是先起一个请求,等它吐出第一个输出 token。在它继续生成剩下 128 个 token 的同时,我再提交几个相同 prompt 的请求,看它们能不能复用上这段前缀。

增量发布让每个跟随者恢复了 493 个 prompt token 里的 480 个。在 2、4、8 个并发请求的分组里,平均 TTFT 相比只在完成时发布,下降了 48% 到 93%。这个平均值算的是每个请求从提交到首个流式输出的等待。

但增量发布并没有消掉同时冷到达时的重复计算。一个请求能复用的,只是它开始执行时已经发布出来的完整前缀页,哪怕另一个请求还在 prefill。它也可能只找到一部分 prompt,或者什么都还没找到,剩下的自己算。复不复用,取决于执行顺序和发布时机。

要避开这个竞态,就得决定谁来算这段前缀。

让一个请求算前缀,其他人等多久?

我加了精确输入的单飞。一个请求当 leader,其他输入 token 完全相同的请求当 follower 等着。这协调的是 prompt 计算,不是答案。每个 follower 照样生成自己的输出,这本来就该如此:相同的 prompt 可以用不同的生成设置,比如 temperature。

我最初的实现,让 follower 一直等到 leader 整个请求结束。复用变得可预测了,但代价是它们得等过整个 decode。

8 个同时到达、各生成 128 个 token 的请求,这个策略相比各自独立执行,平均 TTFT 和最长请求的完成延迟都降了。但只有 2 个这样的请求时,平均 TTFT 反而比独立执行更差,尽管完成延迟是改善的。为了避开重复计算,引入了一个新的等待成本。

prompt 缓存都已经就绪了,为什么还要等过 decode?我加了第二个释放策略。leader 一完成 prefill,引擎就发布它已完成的前缀页,然后让 follower 具备被调度的资格。

对于同时到达、各生成 128 个 token 的相同请求,两个策略恢复的缓存 token 数一样,而在 prefill 后就释放 follower,降低了平均 TTFT。

不过更早释放并不是每个指标都变好。在另一组测试里,第二个请求在原始请求刚进入 decode 阶段时到达。相比完成时释放的单飞,早释放把平均 TTFT 降了 72%,但把最慢请求的完成延迟推高了 14%。

原因在于,原来那个 flight 已经关闭了,第二个请求开了个新 flight,复用了热前缀。两个请求于是并发 decode,而不是顺序 decode,活跃 batch 变了。这可能就是完成时间变长的原因。

早释放策略自己会发布所需的检查点。对这些被协调的精确输入负载来说,额外的增量发布帮助不大。它们在无协调时仍然有用,比如只共享部分前缀的请求。

发布决定数据什么时候可复用。协调决定谁等,等多久。

修完错误,再回头质疑状态机

这些功能是 AI 帮忙实现的。和上一篇文章一样,审它的设计,是构建一个我能理解、能维护的系统的必要环节。

一开始,AI 在释放 follower 的时候就把 flight 删掉了,看起来挺合理,因为等待已经结束了。

但第一次单飞基准就暴露了问题:follower 后来完成时,会通知协调器,而协调器已经不认识它们的 ID 了。AI 提议把未知请求检查删掉。

我拒绝了,因为那会连带把携带真正无效请求 ID 的终止通知也一起藏起来。原设计里没有 FlightState。为了保住校验,我们加了 Active 和 Draining 两个状态,并跟踪已释放的 follower 直到它们终止。

leader 那时已经结束了,所以 Draining 只跟踪被释放的 follower。

更早释放让这个表示变复杂了。leader 现在可能在 follower 被释放之后还在 decode。AI 保留了同样的 Flight 字段,只改了枚举,把 leader 变成可选。

这个可选的 leader 让我停了一下。不同的释放策略需要不同的组合。如果一个策略不该保留 leader,而状态里却有一个,是不是还得再加一个检查?

我退了一步:真的需要 Draining 状态吗?加它,是为了在已释放请求最终终止时能认出它们。那需要记住它们的 ID,但不需要保留它们原来的 flight 归属。为什么不把这些 ID 跨 flight 单独收集?

我让 AI 把这两个职责拆开。我们删掉了 FlightState,单独跟踪已释放的请求 ID。释放时,移除 flight 和它的索引,只留下尚未终止的请求 ID。这样既保住了终止校验,又不用保留那些已经不影响执行的 leader/follower 关系。未知请求 ID 仍然报错,相同 prompt 的新请求会开一个新 flight。

我挑战删除之后,AI 保住了校验。后来它一直在这个解法上继续加东西,直到我开始质疑抽象本身。

人的审查,既要守住一个不变量,也要重新考虑用来守住它的结构。基准测试告诉我请求什么时候可以停止等待。审代码告诉我 flight 什么时候可以不再存在。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
一个演员,戏拍了七成,突然要求片酬翻倍,不给就罢演。导演二话不说,把已经拍好的几百盒胶片全烧了,说不要就不要了。

一个演员,戏拍了七成,突然要求片酬翻倍,不给就罢演。导演二话不说,把已经拍好的几百盒胶片全烧了,说不要就不要了。

二胡的岁月如歌
2026-10-14 17:51:34
荷兰——禁止以色列球迷观看比赛,却允许亲哈马斯者在球场内举“哈马斯加油”的标语

荷兰——禁止以色列球迷观看比赛,却允许亲哈马斯者在球场内举“哈马斯加油”的标语

老王说正义
2026-10-18 00:03:14
被低频噪音逼疯的中国人:睡不着、查不出、告不赢连家都成了刑场

被低频噪音逼疯的中国人:睡不着、查不出、告不赢连家都成了刑场

娱乐圈见解说
2026-10-10 15:31:00
76人爆冷输绿军三队,恩比德为何针对詹姆斯?或许答案早给我们了

76人爆冷输绿军三队,恩比德为何针对詹姆斯?或许答案早给我们了

老梁体育漫谈
2026-10-17 13:22:41
日美将举行大规模联合军演,投入兵力近6万人,参演导弹射程约1000公里,远超日本领土范围,法国、德国、荷兰、新西兰、菲律宾5国首次参与

日美将举行大规模联合军演,投入兵力近6万人,参演导弹射程约1000公里,远超日本领土范围,法国、德国、荷兰、新西兰、菲律宾5国首次参与

政知新媒体
2026-10-17 18:13:02
罕见!资金大规模出逃!美股做空者,7天暴赚2140亿元

罕见!资金大规模出逃!美股做空者,7天暴赚2140亿元

证券时报
2026-10-17 19:46:03
陈乔恩独自赴上海给乔任梁过39岁冥诞,素颜搂着乔爸乔妈合影

陈乔恩独自赴上海给乔任梁过39岁冥诞,素颜搂着乔爸乔妈合影

勇敢的人享受生活
2026-10-16 18:08:20
新赛季最大笑话!山西三顶薪低迷仅7分,功勋老将原帅沦为边缘人

新赛季最大笑话!山西三顶薪低迷仅7分,功勋老将原帅沦为边缘人

历史缝隙里的猹
2026-10-18 01:31:37
CBA官宣新赛季首张罚单:史密斯怒拍官方制作物罚2万 顾全罚1万

CBA官宣新赛季首张罚单:史密斯怒拍官方制作物罚2万 顾全罚1万

醉卧浮生
2026-10-17 21:21:00
罗比-尼尔森:我非常非常失望,这不是我们正常的表现

罗比-尼尔森:我非常非常失望,这不是我们正常的表现

懂球帝
2026-10-17 22:44:19
随着广厦115-109,北控95-71,四川97-85,CBA最新积分榜出炉

随着广厦115-109,北控95-71,四川97-85,CBA最新积分榜出炉

俯身冲顶
2026-10-17 22:17:08
59岁囧叔目瞪口呆!那不勒斯被6连败的鱼腩反杀:狂射29脚 丁丁丢点

59岁囧叔目瞪口呆!那不勒斯被6连败的鱼腩反杀:狂射29脚 丁丁丢点

风过乡
2026-10-18 07:27:44
班主任坦言:如果你有一个上高中的孩子,这6个方面哪怕抓好一个,高考也稳了大半!

班主任坦言:如果你有一个上高中的孩子,这6个方面哪怕抓好一个,高考也稳了大半!

好爸育儿
2026-10-17 22:20:09
天赋肉眼可见!维拉6000万新援大爆发 近4场独造5球

天赋肉眼可见!维拉6000万新援大爆发 近4场独造5球

球事百科吖
2026-10-18 05:33:21
杨瀚森用三场球打脸全队,开拓者媒体公开喊话裁掉27岁卡尔森

杨瀚森用三场球打脸全队,开拓者媒体公开喊话裁掉27岁卡尔森

七七看一看
2026-10-17 19:37:07
演都不演?首富老婆去世仅半年,迟重瑞左手状态被曝,他牺牲太大

演都不演?首富老婆去世仅半年,迟重瑞左手状态被曝,他牺牲太大

动物奇奇怪怪
2026-10-18 07:29:17
已安排好后事?65岁的宋丹丹再被曝猛料,这次,颠覆了所有人想象

已安排好后事?65岁的宋丹丹再被曝猛料,这次,颠覆了所有人想象

秋狝春苗梦
2026-10-16 16:39:57
今年冬天可能是60年以来比较反常的冬天,有三大特点,大家要注意

今年冬天可能是60年以来比较反常的冬天,有三大特点,大家要注意

坠入二次元的海洋
2026-10-16 09:19:52
年轻人都想买的7座SUV,被他造出来了

年轻人都想买的7座SUV,被他造出来了

新车评网
2026-10-17 15:42:05
从爆红到“打回原形”,高叶只用了半年,终是步了张小斐的后尘

从爆红到“打回原形”,高叶只用了半年,终是步了张小斐的后尘

素玉姑娘
2026-10-04 23:22:35
2026-10-18 08:00:49
薛定谔的BUG
薛定谔的BUG
有态度网友ytd
189文章数 108关注度
往期回顾 全部

科技要闻

刘煜辉:99%的黄金分析师报告一钱不值

头条要闻

96岁爷爷因年龄被旅行社拒绝 乘40小时火车到西藏旅游

头条要闻

96岁爷爷因年龄被旅行社拒绝 乘40小时火车到西藏旅游

体育要闻

升级版杨瀚森再闯难关:当上开拓者第三中锋还得拼

娱乐要闻

庾澄庆罕谈前妻 撕下伊能静仅剩的体面

财经要闻

新一轮大跌源头,找到了!

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

艺术
游戏
教育
家居
公开课

艺术要闻

美到窒息!黛安笔下的午后“印象”,明媚又温柔,看完心情都亮了!

《使命召唤:现代战争4》Switch 2版支持DLSS

教育要闻

一年级奥数,填数字满足数的分成

家居要闻

2026建博会(广州) 公装联探展交流活动

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版