KV Cache 税:为什么推理服务器在计算资源耗尽前先耗尽内存

📌 One-Sentence Summary 本文解释了由于 KV cache 的存在,LLM 推理服务器为何经常在计算饱和前触及 VRAM 限制,并提供了一套预算公式以及包含 PagedAttention、前缀缓存和量化的分层优化策略。 📝 Summary 作者探讨了一个常见的生产环境故障:尽管 GPU 计算利用率较低,但 LLM 服务器仍会触发 CUDA 显存溢出(OOM)错误。核心问题在于「KV Cache 税」——内存消耗随并发量而非仅随提示词长度增加。文章提供了一个详细的 VRAM 预算等式来计算每个 token 的成本,并证明了 KV cache 的规模最终可能超过模型权重本身。为了缓解这一问题,作者提出了一个包含三种策略的决策矩阵:通过 PagedAttention 消除碎片化(将浪费从 60-80% 降低至 4% 以下);通过前缀缓存(Prefix Caching)利用基数树(Radix Tree)分摊共享提示词的成本;以及通过 KV 量化以精度换容量,同时警告在长文本检索中可能出现质量崩塌。 💡 Main Points 推理中的 VRAM 耗尽主要由并发量驱动,而非仅由模型大小决定 虽然模型权重是固定的,但 KV cache 随并发请求数及其上下文长度而增长。在高并发场景下,缓存所需的内存很容易超过模型权重所需的内存,导致即使在计算利用率较低时也会出现 OOM 错误。 朴素的 KV cache 分配会导致巨大的内存浪费 早期的推理栈根据最大序列长度预留连续内存块,当实际生成的序列较短时,由于碎片化和过度预留,会导致 60-80% 的浪费。 PagedAttention 和前缀缓存能以低风险带来高效能提升 PagedAttention 将操作系统风格的虚拟内存分页应用于 KV cache,将浪费降低至 4% 以下。前缀缓存(如 RadixAttention)允许多个请求共享通用系统提示词或文档的相同 KV 条目,显著提升结构化工作负载的吞吐量。 KV 量化是一种强大但具有风险的最后手段 降低缓存精度(例如至 FP8 或 INT4)可以将 token 容量增加两到四倍,但在长文本检索(如「大海捞针」任务)中可能会导致准确率出现「断崖式」下跌,因此需要针对具体工作负载进行严格验证。 💬 Key Quotes 「缓存并非一次性支付的固定成本。它随你同时处理的请求数量而扩展,这意味着将你推向内存悬崖的是流量激增,而非更长的提示词。」 「你的 KV 预算是并发请求的函数,而非孤立的提示词长度。」 「模型能否装入内存从来不是真正关键的问题。」 「只有在你信任任何综合基准测试之前,先在自己的长文本工作负载上进行验证,KV 量化才是安全的。」 📊 Article Meta AI Screening: 88 Source: Towards Data Science Author: Mostafa Ibrahim Category: 人工智能 Language: 英文 Read Time: 7 min Word Count: 1743 Tags: AI 与智能应用 , 性能优化 , AI 工程 , 模型训练与推理 , LLM 推理优化 Read Full Article
暂无评论,快来抢沙发~