专栏名称: GiantPandaLLM
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
今天看啥  ›  专栏  ›  GiantPandaLLM

从零开始设计 SGLang 的 KV Cache

GiantPandaLLM  · 公众号  · 3D  · 2025-03-22 23:11
    

文章预览

作者:王焱(已授权) 原文: https://zhuanlan.zhihu.com/p/3116018350       1 前言 Attention的计算过程中,需要之前的k和v。 但每次计算的时候,把之前的k,v重新计算一次成本太高昂,需要找个地方临时存起来,这就是KV Cache。 llama1的代码就非常简单 self.cache_k = self.cache_k.to(xq) self.cache_v = self.cache_v.to(xq)   self.cache_k[:bsz, start_pos : start_pos + seqlen] = xk self.cache_v[:bsz, start_pos : start_pos + seqlen] = xv   keys = self.cache_k[:bsz, : start_pos + seqlen] values = self.cache_v[:bsz, : start_pos + seqlen] 把kv的值更新到cache里,然后再从缓存中读取需要的cache。 真实业务场景中,用户对于context的需求是一直变长,但耗时太久,导致用户体验上不去,真实需求变成了不存在的需求。 举例子,当年我们做智能音箱,到后面发现用户都是听首歌,看电影之类的需求。但用户只有这样的需求么?答案是否定 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览