资讯动态

KV Cache 到 PagedAttention:推理显存管理怎么省出 60% 内存

发布时间:2026/9/28 21:11:39 来源:尧图企业网站定制
问你一个看似存储莫名其妙的事。用 vLLM 部署一个 13B LLaMA 模型你看到模型权重 26GB (FP16)KV Cache 60GB26GB 模型 60GB KV Cache 86GB 显存占用. 一张 80GB A100 都装不下KV Cache 怎么就占得比模型本身还多这就是推理引擎要解决的显存治理问题. Paged Attention, LLM in Flash 这些黑科技都是为了让同一张卡服务更多并发用户。一、KV Cache 是什么每个 token 经过 attention 时会算出自己的Key (K) 和 Value (V).下个 token 要算 attention 时要用之前所有 token 的 K 和 V——“看一遍历史”. 这就是注意力机制的本质.为了不重复计算系统把每个 token 的 K、V 缓存下来下次直接用. 这份缓存就是KV Cache.KV Cache 多大一个 13B LLaMA40 层 × 40 头 × 128 维 × 2 (KV) × 2 字节 (FP16) 5.1MB / token1 个并发用户的 2048 token 序列10.4GB1024 个并发用户场景目标10TB如果说模型权重 26GB 是起点那么支持高并发所需的 KV Cache 容量 是模型大小 × 并发数 × seq_len 的乘法——这才是大头.二、Paged Attention把 KV 切成小块问题预分配造成浪费传统方式给每个请求预分配 MAX_LEN (4096) 的 KV Cache 空间.但是大部分请求 seq_len 远小于 4096即使最长的也只到 4096 的 30%-70%平均浪费 50-70% 的预留空间这就变成了预分配等于浪费.vLLM 的 PagedAttention 思路借鉴 OS 的内存分页把显存按 block (比如 16 个 token) 划成固定大小的页.每个请求动态申请 block不用了就释放.场景预分配Paged请求 seq_len100占 4096 token 空间只用 ~7 个 block请求 seq_len2048占 4096~128 个 block利用率25%95%结果同样硬件并发用户数提升 3-4 倍.Prefix Cache跨请求共享 prefix更高阶的玩法如果多个请求的 prompt 前缀完全相同prefix 部分只算一份.比如100 个请求都问请总结这篇文档 {5000 字文档} 的不同问题5000 字的 prefix 只算一次、只存一份每个请求独立算自己的问题部分命中 Rate 高时吞吐量再提高 2-3 倍.vLLM 的 RadixAttention 就是把 prompt 做成前缀树 (Radix Tree) 共享在你跨请求、跨 session 的 prefix 复用场景效果拔群.三、LLM in Flash用 SSD 存 KV Cache 的野路子Metacognitive 团队 2024 年提的一个争议方案把不活跃的 KV Cache 写到 SSD.核心观察一个长会话用户对最近的 token 最关心对早期的 token 早就移出注意力. 把早期 KV Cache 换到 SSD需要时再读回来.收益并发量提升 50-100 倍显存不再是瓶颈早期 token 的访问延迟 ~100μs (SSD read)而 vLLM 浪费的 attention 计算时间 100μs所以仍然净赢风险SSD 寿命问题如果你让 KV Cache 不停 swap,SSD 写入损耗巨大延迟敏感性对于交互实时性要求高的场景人快结巴不能容忍 100μs 的 swap工程复杂度调度器变复杂业界现在主流评价可用. 但更适合批量推理场景比如 GLM 生成 100 个版本的 code, 不需要低延迟不适合在线交互场景.四、KV Cache Quantization精度换容量如果 KV Cache 大小是最大瓶颈干脆降低精度FP16 → INT8:KV Cache 大小减半吞吐接近翻倍FP16 → INT4 (AWQ / GPTQ):KV Cache 大小 1/4质量掉 1-3%FP16 → FP8:Hopper/Blackwell 原生支持速度容量双赢业界共识推理用 INT8 KV Cache 基本无感——精度损失 0.5%。这是免费的显存容量翻倍方案各大推理引擎vLLM、SGLang、TRT-LLM都默认支持.量化风险在某些特定模型早期 Qwen、CodeLLaMA上 INT8 KV Cache 有 1-3% 的质量下降——原因是这些模型在训练时用了的 weight clipping,attention 输出数值分布范围很小INT8 量化误差放大.所以量化前要做 sanity check不能盲目上.五、KV Cache 压缩激进地抠出来进一步黑科技不是所有 token 都对未来重要——有些 token 是垃圾 token,attention 时它贡献接近 0可以扔掉.H2O (Heavy-Hitter Oracle)观察 attention score发现少数重要 token贡献 80% 的 attention weight剩下 80% token 是长尾.H2O 做法:只保留 attention score 最高的 20% “Heavy Hitters”剩下 80% 定期丢弃保留最近窗口 (recent window) 确保短期记忆结果:KV Cache 大小减少 80%, 精度损失 2%.这是 “第一性原理” 的优化——attention 本来就稀疏那少存是应该的.ScissorhandsH2O 的简化版不用复杂算法只保留最早的attention sink token 最近窗口.效果几乎等效 H2O, 但实现极简 - 工业界友好.六、企业级的 KV Cache 治理综合上面方法一个生产级 LLM 服务的 KV Cache 治理链路用户请求进来 ↓ 计算 Prefix Cache Hash (前缀共享) ↓ PagedAttention 分 block 写入 KV Cache ↓ 合并 prefix 新计算的 KV ↓ 应用 INT8 量化 (节省 50%) ↓ Heavy Hitter 筛选 (再省 80%) ↓ 超长会话溢出的部分 swap 到 SSD ↗ 单卡服务并发数 × 2-5数字佐证vLLM 0.5:13B 模型 A100 跑 64 并发加 Prefix Caching并发 256加 H2O 稀疏化并发 1024加 INT8 KV并发 1536同样一张 A100从 64 并发到 1500 并发推理成本降 95%.七、评估 KV Cache 治理对用户体验的影响优化 KV Cache 不只是省钱——它直接决定了用户感知到的体验:首 token 延迟 (TTFT):prefill 时间. prefix cache 命中 直接省 1000ms吞吐 (TPOT):token/s. KV 量化、稀疏化都提升 2-3 倍首字延迟方差:PagedAttention 避免 OOM 失败 99.9% SLA 稳定性这就是 DeepSeek、OpenAI、Anthropic 都在拼推理引擎的原因——推理引擎好 同样的模型体验更好 成本更低.结语KV Cache 治理是隐形冠军60GB KV Cache 这个小事撑起了 KV 前缀共享、Paged Attention、Quantization、Heavy Hitter 稀疏化、Flash Fallback 五大创新.它不会影响模型的智商——但直接影响你给用户的体验是 200ms 还是 2000ms 反应、你能给 100 人还是 2000 人同时用.学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑