41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
---
|
||
title: "SnapKV"
|
||
created: 2026-06-18
|
||
updated: 2026-06-18
|
||
type: concept
|
||
tags: ["kv-cache", "attention", "intra-head-eviction"]
|
||
sources: []
|
||
---
|
||
|
||
# SnapKV
|
||
|
||
## 定义
|
||
|
||
SnapKV (Li et al., 2024) 是一种 KV Cache 驱逐的 [[heuristic-metric]] 指标,基于累积注意力分数和观察窗口来动态识别和保留关键 token。它是 LU-KV 实验中使用的默认 intra-head 指标之一(π_1)。
|
||
|
||
## 核心机制
|
||
|
||
1. **观察窗口**:在 prefill 阶段的最后 W 个 token 上计算注意力模式
|
||
2. **累积评分**:对每个历史 token,累积其在观察窗口内的注意力权重
|
||
3. **Top-K 选择**:按累积分数排序,保留前 b 个 token
|
||
|
||
## 在 LU-KV 中的使用
|
||
|
||
LU-KV 使用 SnapKV 作为 π_1,但将预算分配决策从 SnapKV 的"固定每 head 预算"提升为"基于 [[marginal-utility]] 的差异化分配"。实验表明:
|
||
|
||
- SnapKV 本身在不同 head 中的 [[optimality-gap]] 差异大
|
||
- LU-KV 将更多预算分配给 SnapKV-Oracle 对齐度高的 head
|
||
- 80% 压缩率下 LU-KV + SnapKV 显著优于 Uniform + SnapKV
|
||
|
||
## 相关概念
|
||
|
||
- [[heuristic-metric]] — SnapKV 是启发式指标的一种
|
||
- [[keydiff]] — 另一种常用 intra-head 指标
|
||
- [[intra-head-eviction]] — SnapKV 属于头内驱逐方法
|
||
- [[tang-lukv|LU-KV]] — 可兼容 SnapKV 作为 intra-head scoring 方法
|
||
|
||
## 参考
|
||
|
||
- SnapKV: LLM Knows What You are Looking for Before Generation (Li et al., 2024)
|
||
- [[tang-lukv|LU-KV]] (Tang et al., ICML 2026)
|