TB 级 Embedding / KV Cache / MM Cache:缓存系统的性能建模与仿真洞察

覆盖三大缓存领域 | 共计 ~30 篇论文/工具的调研


一、问题背景:三种”大缓存”的性能瓶颈

LLM 推理和推荐系统共享一个核心挑战:海量中间数据的性能瓶颈

类型存储内容典型规模访问模式所属领域
KV CacheAttention 的 Key/Value 向量每个 token ~2×D×L bytes顺序写入 + 随机读取LLM 推理
Embedding Table类别特征的嵌入向量TB 级 (10⁶-10¹² 行)稀疏查表(每请求几十行)推荐系统
MM Cache (多模态)视觉/音频特征向量每张图 ~256-4096 tokens批次内共享前缀访问多模态大模型

这三者的共同特征:

  1. 海量存储需求 — 远超 GPU HBM 容量(通常 16-80GB)
  2. 稀疏/不规则访问 — 无法用常规缓存层次结构有效缓存
  3. 直接影响端到端延迟 — 是推理系统性能建模的核心参数

二、KV Cache 性能建模与优化

2.1 全景图谱

KV Cache 研究分四层:
┌────────────────────────────────────────────────────┐
│  1. Cache 管理策略                                   │
│     ├ 逐出 (Eviction): H2O, ScissorHands, AhaKV    │
│     ├ 量化 (Quant): KVTuner, KVQuant, KIVI         │
│     └ 共享 (Reuse): GORGO/KVShare, Oneiros         │
├────────────────────────────────────────────────────┤
│  2. 异构存储层次                                   │
│     ├ GPU HBM → CPU DRAM: FlexGen, InfiniGen       │
│     └ CPU DRAM → NVMe: LLM in a Flash              │
├────────────────────────────────────────────────────┤
│  3. 新型硬件架构                                   │
│     ├ CXL 内存扩展: CXL-Enabled KV-Cache Mgmt     │
│     └ PIM (Processing-in-Memory): AutoRAC          │
├────────────────────────────────────────────────────┤
│  4. 仿真/性能模型                                  │
│     └ (**明显空白**)                                │
└────────────────────────────────────────────────────┘

2.2 关键论文

(1) vLLM / PagedAttention

  • arXiv: 2309.06180
  • GitHub: https://github.com/vllm-project/vllm (⭐60K+)
  • 核心贡献: 将 KV Cache 分页化(类似 OS 虚拟内存),消除内部碎片,支持共享 prefix
  • 建模方法: 无显式性能模型,但 KV Cache 管理策略参数(page size、max num blocks、GPU memory fraction)直接影响 Cache Hit Rate 和调度延迟
  • 局限: 不提供 KV Cache 触发的端到端延迟预测

(2) FlexGen — KV Cache 卸载性能模型

  • arXiv: 2303.06865
  • 核心贡献: IO-aware 调度模型,将 KV Cache 卸载到 CPU DRAM + SSD,在单 GPU 上实现高吞吐
  • 性能模型公式:
    T_total = max(T_comp, T_io)  # 计算与 IO 的瓶颈切换
    T_io = sum(KV_size / BW_layer)  # 每层的 KV 传输时间
    
  • 关键洞察: KV Cache 卸载到 SSD 时,瓶颈从 GPU 算力转移到 PCIe + SSD 带宽
  • GitHub: https://github.com/FMInference/FlexGen (⭐2K+)

(3) LLM in a Flash

  • arXiv: 2312.11514
  • 核心贡献: 将模型权重和 KV Cache 存储在 Flash,设计数据流以最小化 Flash 读取
  • 性能模型: Flash 读取的 Page 命中率模型,用于决定预测性加载策略

(4) KVTuner — 混合精度 KV Cache

  • arXiv: 2502.04420
  • 核心贡献: 层级别的 INT8/INT4/FP8 KV Cache 量化,基于精度敏感度自动选择量化位宽
  • 建模方法: 每层的 “KV sensitivity score” → 量化位宽分配的优化问题
  • 精度: 层间混合精度比统一 INT4 保持 2-3% 更高的任务精度

(5) AhaKV — KV Cache 逐出策略

  • arXiv: 2410.12876
  • 核心贡献: 自适应 holistic attention-guided 逐出策略
  • 建模: 基于注意力权重的 cache 逐出决策 + 逐出后的重建误差模型

(6) H2O (Heavy-Hitter Oracle)

  • arXiv: 2306.14048
  • 核心贡献: 发现注意力中的 “Heavy Hitters”(少数 token 贡献大部分注意力分数),保留它们,逐出其他的
  • GitHub: https://github.com/FMInference/H2O

(7) ScissorHands

  • arXiv: 2305.17118
  • 核心贡献: “Persistence of Importance” 假设 — 历史重要 token 在后续层仍重要

(8) GORGO / KVShare

  • arXiv: 2503.16525
  • 核心贡献: 跨用户 KV Cache 共享,最小化网络延迟。针对多租户场景

(9) Oneiros

  • arXiv: 2507.11507
  • 核心贡献: 多租户场景下通过参数重映射优化 KV Cache 共享

(10) CXL-Enabled KV Cache (2511.00321)

  • 核心贡献: CXL 内存扩展用于 1M token KV Cache,建模 CXL 延迟对推理性能的影响
  • 建模: CXL 读延迟 (~200ns) vs HBM (~50ns) → 预取策略的优化

2.3 KV Cache 仿真工具

目前没有类似 Vidur 的 KV Cache 专用仿真器。KV Cache 的性能评估基本通过:

方法代表性工具特点
真实系统运行vLLM + custom scheduler最准确,但需要 GPU
模拟 trace replay自建脚本 replay KV cache trace中等精度,无需 GPU
分析模型FlexGen 的 IO 模型快速估算,精度 ~20%

空白: 缺乏可配置的 KV Cache 仿真框架来探索 cache 策略 × 硬件参数 × 工作负载的联合设计空间。


三、TB 级 Embedding Table 性能建模

3.1 全景图谱

┌────────────────────────────────────────────────────────────┐
│  1. 存储层次管理                                            │
│     ├ GPU HBM (hot) + CPU DRAM (warm) + SSD (cold)        │
│     ├ RecSys 推理: MicroRec codebook cache                 │
│     └ RecSys 训练: Merlin HugeCTR sharding                 │
├────────────────────────────────────────────────────────────┤
│  2. 性能模型                                                │
│     ├ DLRM 训练性能模型 (2201.07821) → 首位               │
│     └ 2D Sparse Parallelism (2508.03854)                   │
├────────────────────────────────────────────────────────────┤
│  3. 新型硬件适配                                            │
│     ├ AutoRAC (2505.10748) — PIM 加速器                   │
│     ├ CXL memory pooling                                   │
│     └ NVMe offload + prefetch                             │
└────────────────────────────────────────────────────────────┘

3.2 关键论文

(1) DLRM 训练性能模型

  • arXiv: 2201.07821
  • 性能模型: T_emb = sum(emb_size / HBM_bw) — throughput 受 HBM 带宽直接限制
  • 关键发现: Embedding 查表主导训练时间(可占 70%+),且带宽需求随 batch size 线性增长

(2) MicroRec

  • arXiv: 2010.05894
  • GH: ETH
  • 核心: Codebook cache + frequency-aware micro-tables
  • 建模: Embedding 访问频率的 Pareto 分布 → 冷热分离决策模型

(3) AutoRAC

  • arXiv: 2505.10748
  • 核心: 自动生成 RecSys 的 PIM(Processing-in-Memory)加速器设计
  • 建模: 将 Embedding 查找的访存模式映射到 PIM 近存储计算单元
  • 工具: 自动搜索 PIM 设计空间

3.3 性能建模核心挑战

Embedding 查表延迟模型:
T_lookup = T_hbm_access + T_transfer + T_compute
         ≈ (emb_dim × 2 bytes × num_features) / HBM_BW 
           + PCIe_latency (if cross-device)
           + dot_product_compute

关键参数影响:
- HBM 带宽:线性影响查表延迟
- Batch size:带宽需求超线性增长(batch 越大,并发查表越多)
- 特征密度:每请求查多少个特征 → 决定 memory wall 严重程度
- Table 大小分布:大表(TB 级)几乎无法存入 HBM → 必须卸载

空白: 与 KV Cache 类似,推荐系统也没有可配置的 Embedding 系统仿真器。现有模型仅覆盖训练(Meta 的 DLRM 模型)而未覆盖推理场景。


四、多模态 MM Cache 性能建模

4.1 全景图谱

多模态模型推理中的”缓存”问题比 LLM 更复杂,因为涉及模态间的上下文交互

缓存对象来源典型大小管理策略
Visual TokensViT/SigLIP 编码256-4096 tokens/图前缀缓存(与 prompt 绑定)
Cross-modal KVQ-Former / Cross-attention每层每图像重计算 vs 缓存权衡
Prefill Cache图像-文本对齐~10-100ms同请求内复用
Visual Feature Cache图像编码器输出~1MB/图跨请求复用(相同图像复用)

4.2 关键论文

(1) HybridKV — 多模态 KV Cache 压缩

  • arXiv: 2604.05887
  • 核心贡献: 多模态大模型的混合 KV Cache 压缩策略
  • 方法: 文本 token 用密集 KV Cache,视觉 token 用稀疏压缩 KV Cache
  • 建模: 模态感知的 cache 分配模型 — 视觉 token 可以接受更高压缩比而不损失精度

(2) Multimodal Serving Systems

  • 多模态推理系统(如 LLaVA)目前主要依赖简单的 “load all visual tokens → cache for the whole conversation” 策略
  • 缺乏类似 KV Cache 的细粒度 eviction/sharing 策略研究

4.3 与 KV Cache 的关键差异

维度KV Cache (纯文本)MM Cache (多模态)
缓存粒度token 级token 级 + 图像级
共享机会prefix 共享相同图像跨请求共享
压缩容忍度高(可压缩 4-10×)视觉 token 压缩容忍度更高(可接受更高压缩)
性能建模有部分工作(FlexGen IO 模型)几乎空白
仿真工具无专用仿真器无任何仿真工具

空白: MM Cache 是三大领域中性能建模和仿真最薄弱的。缺乏:

  • 视觉 token 的访问模式统计模型
  • 跨请求图像复用的 cache 命中率模型
  • 多模态推理系统的端到端延迟模型

五、横评三个领域

维度KV CacheEmbedding TableMM Cache
性能模型FlexGen IO 模型DLRM 训练模型❌ 几乎没有
压缩策略H2O, ScissorHands, KVTuner, AhaKVPQ 量化, 混合精度HybridKV(初步)
卸载策略FlexGen, LLM FlashCPU-SSD 三级存储❌ 未专门研究
共享策略GORGO/KVShare (多租户)无(每用户独享)图像级别跨请求复用
仿真框架❌ 无专用仿真器❌ 无专用仿真器❌ 无
开源工具vLLM (真实系统)PyTorch DLRM, HugeCTRLLaVA, vLLM (多模态扩展)
HBM 压力每请求 ~1-10GB每请求 ~10-100MB每请求 ~10-100MB (visual)
规模瓶颈长上下文 (128K-1M)TB 级 Embedding高分辨率多图像

核心洞察

三者共享一个根本性矛盾:

GPU HBM 容量(16-80GB)<< 缓存需求(TB 级 Embedding / 百 GB KV Cache / 百 MB 每图像的视觉特征)

因此三者的性能建模都围绕同一个问题:存储层次中各层级之间的数据搬运成本如何决定端到端性能?

但三者的研究成熟度差异很大:

KV Cache 研究        ████████████░░░░  (~60% 成熟)
  逐出/量化/共享策略多,但缺乏系统级仿真器

Embedding Table     ████████░░░░░░░░  (~40% 成熟)
  训练性能模型有,推理模型缺失

MM Cache            ██░░░░░░░░░░░░░░  (~10% 成熟)
  基本处于未被系统研究的阶段

六、未来方向

  1. 统一缓存仿真框架:一个类似 Vidur 但面向缓存的仿真器,可配置:

    • 缓存类型(KV/Embedding/Visual)
    • 管理策略(FIFO/LRU/Heavy-Hitter/ML 驱动)
    • 硬件参数(HBM/DRAM/CXL/SSD 带宽+延迟)
    • 工作负载(token 长度/特征密度/图像分辨率)
  2. 跨领域迁移:H2O / ScissorHands 的 eviction 策略能否用于 Embedding 表?

    • “Heavy Hitter” 在推荐系统中对应 “高频特征”
    • 注意力权重的持久性 → Embedding 的访问频率持久性
  3. CXL 时代的缓存建模:CXL 内存池化将改变缓存层次结构,现有 Roofline 类模型需扩展以包含 CXL 延迟参数

  4. 多模态缓存的正式研究:MM Cache 处于 “每个请求全量加载” 的阶段,cache 共享/逐出/压缩策略有巨大的未探索空间


相关链接