大模型缓存技术工程指南(上):从价格信号到推理缓存机制

大模型缓存技术工程指南(上):从价格信号到推理缓存机制

💡 原文中文,约22500字,阅读约需54分钟。
📝

内容提要

本文介绍大模型缓存技术,涵盖KV Cache、PagedAttention、Prefix/Prompt/Context Cache及Semantic/Response Cache等层级。文章解释各缓存机制、作用阶段、显存估算及工程观测指标,并对比厂商缓存产品形态,强调缓存主要降低重复输入成本,而非输出成本,需结合场景选择策略。

🔎

延伸解读

缓存价格信号:成本模型已变

价格表中出现 cached input、cache read 等字段,说明缓存已从内部实现细节变成 API 成本模型的一等公民。工程团队应意识到,输入 token 成本不再单一,重复前缀可显著降低费用。但需注意,价格和规则时效性强,正式测算应以官方文档和 usage 字段为准。

缓存分层:机制与产品形态需区分

KV Cache 是模型内部机制,Prompt/Prefix Cache 是跨请求复用,Context Cache 是显式缓存对象,Semantic/Response Cache 是应用层复用。理解分层有助于工程决策:不同层解决不同问题,由不同角色控制,观测指标也不同。避免混淆概念,才能正确评估缓存收益。

缓存命中率不等于整体性能

Prompt Cache 主要优化 Prefill,不减少 Decode 时间。即使命中率高,长输出任务仍可能受限于 Decode。此外,TTFT 不稳定可能源于部分命中、block 粒度、缓存淘汰或调度策略。工程上应综合观测 prefill_latency、queue_time、TTFT 等指标,而非只看命中率。

缓存有风险,需谨慎设计

缓存可能带来过期内容复用、多租户隔离不当、语义误命中等问题。动态内容放入稳定前缀会导致缓存失效,成本测算忽略 cache write 也会失真。应用层缓存尤其要关注时效、权限和正确性,关键场景应增加二次校验。

Q&A

大模型缓存技术主要分为哪几个层级?

大模型缓存技术主要分为四个层级:模型推理层的KV Cache、推理服务层的PagedAttention和Prefix Cache、API产品层的Prompt Cache和Context Cache、应用层的Semantic Cache和Response Cache。

KV Cache是什么?它如何工作?

KV Cache是Transformer自回归生成时,缓存历史token的Key和Value张量,避免在生成每个新token时重复计算所有历史token的K/V。在Prefill阶段生成并保存输入token的K/V,在Decode阶段复用这些K/V并追加新token的K/V。

如何估算KV Cache的显存占用?

KV Cache显存占用近似公式为:2 × num_layers × num_kv_heads × head_dim × seq_len × batch_size × bytes_per_element。其中2代表Key和Value两份,bytes_per_element在FP16/BF16下通常为2。例如7B模型、32层、8个KV heads、head_dim=128、seq_len=4096、batch_size=1时,KV Cache约0.5 GiB。

PagedAttention是什么?它解决了什么问题?

PagedAttention是vLLM提出的KV Cache显存管理机制,借鉴操作系统分页思想,将KV Cache划分为固定大小的block,通过block table映射逻辑位置到物理位置,支持非连续内存分配。它解决了显存碎片问题,支持更高batch size、请求间共享prefix blocks,并为Prefix Cache提供基础。

Prompt Cache和Context Cache有什么区别?

Prompt Cache是自动的,基于exact prefix match,开发者无需显式创建,通过优化prompt结构(静态内容放前面)来提高命中率。Context Cache是显式的,开发者需先创建缓存对象(如长文档),后续请求引用该缓存,适合反复使用的大上下文。

Semantic Cache和Response Cache有什么不同?

Response Cache是精确匹配缓存,key为完全相同请求,value为模型返回结果。Semantic Cache基于语义相似度(如embedding)匹配,即使问题不完全相同也能复用答案。两者可组合使用,Response Cache处理精确匹配,Semantic Cache处理近似匹配。

大模型缓存能降低所有成本吗?

不能。缓存主要降低重复输入的成本和prefill延迟,但输出token成本仍然存在。对于长输出任务,缓存收益有限。此外,缓存写入也可能产生额外成本,需通过break-even分析判断是否划算。

如何观测大模型缓存的效果?

API层可记录cached_input_tokens、cache_read_input_tokens、TTFT等;推理服务层可监控prefix_cache_hit_rate、kv_cache_usage、prefill_latency等。成本测算需区分普通输入、缓存写入、缓存读取和输出token的价格。

🏷️

标签

➡️

继续阅读