TB 级 Embedding / KV Cache / MM Cache:缓存系统的性能建模与仿真洞察
覆盖三大缓存领域 | 共计 ~30 篇论文/工具的调研
一、问题背景:三种”大缓存”的性能瓶颈
LLM 推理和推荐系统共享一个核心挑战:海量中间数据的性能瓶颈。
| 类型 | 存储内容 | 典型规模 | 访问模式 | 所属领域 |
|---|---|---|---|---|
| KV Cache | Attention 的 Key/Value 向量 | 每个 token ~2×D×L bytes | 顺序写入 + 随机读取 | LLM 推理 |
| Embedding Table | 类别特征的嵌入向量 | TB 级 (10⁶-10¹² 行) | 稀疏查表(每请求几十行) | 推荐系统 |
| MM Cache (多模态) | 视觉/音频特征向量 | 每张图 ~256-4096 tokens | 批次内共享前缀访问 | 多模态大模型 |
这三者的共同特征:
- 海量存储需求 — 远超 GPU HBM 容量(通常 16-80GB)
- 稀疏/不规则访问 — 无法用常规缓存层次结构有效缓存
- 直接影响端到端延迟 — 是推理系统性能建模的核心参数
二、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 Tokens | ViT/SigLIP 编码 | 256-4096 tokens/图 | 前缀缓存(与 prompt 绑定) |
| Cross-modal KV | Q-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 Cache | Embedding Table | MM Cache |
|---|---|---|---|
| 性能模型 | FlexGen IO 模型 | DLRM 训练模型 | ❌ 几乎没有 |
| 压缩策略 | H2O, ScissorHands, KVTuner, AhaKV | PQ 量化, 混合精度 | HybridKV(初步) |
| 卸载策略 | FlexGen, LLM Flash | CPU-SSD 三级存储 | ❌ 未专门研究 |
| 共享策略 | GORGO/KVShare (多租户) | 无(每用户独享) | 图像级别跨请求复用 |
| 仿真框架 | ❌ 无专用仿真器 | ❌ 无专用仿真器 | ❌ 无 |
| 开源工具 | vLLM (真实系统) | PyTorch DLRM, HugeCTR | LLaVA, 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% 成熟)
基本处于未被系统研究的阶段
六、未来方向
-
统一缓存仿真框架:一个类似 Vidur 但面向缓存的仿真器,可配置:
- 缓存类型(KV/Embedding/Visual)
- 管理策略(FIFO/LRU/Heavy-Hitter/ML 驱动)
- 硬件参数(HBM/DRAM/CXL/SSD 带宽+延迟)
- 工作负载(token 长度/特征密度/图像分辨率)
-
跨领域迁移:H2O / ScissorHands 的 eviction 策略能否用于 Embedding 表?
- “Heavy Hitter” 在推荐系统中对应 “高频特征”
- 注意力权重的持久性 → Embedding 的访问频率持久性
-
CXL 时代的缓存建模:CXL 内存池化将改变缓存层次结构,现有 Roofline 类模型需扩展以包含 CXL 延迟参数
-
多模态缓存的正式研究:MM Cache 处于 “每个请求全量加载” 的阶段,cache 共享/逐出/压缩策略有巨大的未探索空间
相关链接
- LLM推理系统深度综述 — KV Cache 是 LLM 推理建模的核心
- 推荐系统性能建模综述 — Embedding 表的性能建模
- DLRM 训练性能模型分析 — 唯一的 Embedding 性能模型
- 芯片性能建模与仿真深度综述 — 底层存储层级的硬件建模