🧠 LLM ACCELERATION EXPLAINER
什么是大模型的 KV Cache(键值缓存)?
一句话搞懂:大模型写字时的“显存便利贴”,让它不用每写一个字就把整本书从头重新算一遍!
❌ 没有 KV Cache (没有便签本)
健忘症写手
写第 100 个字时,必须把前 99 个字全部从第 1 页重新算一遍!
计算量 O(N²) 爆炸
越往后写越奇慢无比
90% 都在做无用功
VS
✅ 拥有 KV Cache (随手记便签)
学霸笔记流
写过的内容算完直接贴在显存墙上,每次只算当前这 1 个新字!
计算量 O(1) 恒定极快
字字丝滑秒出
以显存空间换计算时间
🔍 30秒搞懂:Transformer 里的 Q、K、V 是什么?
就像在图书馆查资料的一套标准动作
Q
Query(查询)
“你在搜索框里输入的关键词”
代表当前正在生成的这个词想去向前面的词打听什么信息(比如主语是谁、时态是什么)。
K
Key(键 / 索引标签)缓存进显存
“书架上贴的分类标签与书名”
代表每个历史词暴露给外界的特征。Q 会和所有的 K 计算相似度,决定对谁更关注。
V
Value(值 / 真正内容)缓存进显存
“书本里真正写着的文章正文”
代表每个历史词真正的含义与上下文语义。根据 Q 和 K 匹配的分数加权提取 V。
🎮 互动实验:亲手对比“有无 KV Cache”的计算量
切换模式并点击「生成下一个词」,观察重算次数与显存占用的真实变化
📝 正在吐字生成 (Text Output)
3 / 8 词
💾 GPU 显存便签板 (KV Cache)
已存 3 个词的 KV
3 次
当前这 1 步计算的词数 (FLOPs)
6 次
累计总计算量 (Total Compute)
~1.2 MB
KV Cache 显存占用 (VRAM Used)
🐘
1. KV Cache 唯一的缺点是什么?
吃显存太狠! 随着对话越来越长、并发用户越来越多,KV Cache 会无休止地膨胀。在 128k 超长上下文中,KV Cache 占用的显存甚至会远远超过大模型本身的权重大小!
🚀
2. 工业界如何给 KV Cache 减肥?
• MQA / GQA(分组查询注意力):多个 Q 共用一套 K/V 便签,直接把 Cache 体积砍掉 75%!
• PagedAttention(vLLM):像操作系统虚拟内存分页一样管理显存碎片。
• KV 8bit/4bit 量化:把浮点数便签压缩存储。
🔄
3. Prefill 和 KV Cache 是什么关系?
• Prefill 阶段负责批量创建并写满初始的 Prompt KV Cache。
• Decode 阶段负责边读旧缓存、边往后追加新生成的 1 条 KV Cache。
两者相辅相成,构成了现代 LLM 极速推理的基石!