第 15 课:免训练长上下文加速:KV 驱逐、动态分块与低秩稀疏
本课目标与通过标准
本课产出:掌握无需重新训练或微调即可直接作用于开源大模型的长上下文推理加速算法矩阵。区分 KV Cache 物理驱逐(Eviction,永久丢弃) 与 查询感知稀疏(Query-Aware Selection,逻辑全量保留、物理按需加载) 的数学本质;深入拆解 StreamingLLM 的 Attention Sinks(注意力汇)、H2O 的 Heavy-Hitter 累积注意力驱逐与 SnapKV 基于观察窗口的高频特征提炼;掌握 Quest 的 Page 级注意力边界估计与 KIVI 非对称 2-bit KV 量化;明确各类策略与 Prefix Caching、投机采样的冲突边界。
通过要求:唯一代码填空题通过全部断言;Q1~Q3 沿自回归注意力分布演化、虚拟内存页表与因果掩码给出因果链;能指出一个正确性不变量、一个长程检索能力退化边界和一个硬件访存折中;总分至少 8/10。
源码版本与阅读方法
本课程使用固定 commit 的永久链接保证行号可复现,同时链接 current docs 供核对最新变化。阅读时先建立“免训练算法如何介入 KV 读写管道”的心智模型:
| 顺序 | 核心文件与模块 | 带着什么问题读 |
|---|---|---|
| 1 | StreamingLLM 官方实现 streaming_llm/kv_cache.py |
为什么前 4 个初始 Token(Sink)具有锚定 Softmax 分母的不可替代作用? |
| 2 | H2O 论文(arXiv:2306.14048)的累积注意力驱逐规则 | 累积注意力分数(Cumulative Attention Scores)是如何动态指导物理块释放的? |
| 3 | SnapKV 源码 snapkv/monkeypatch/ |
为什么仅凭 Prompt 结尾的几百个观察 Token 就能预测整个长文档的注意力焦点? |
| 4 | Quest 仓库 mit-han-lab/Quest 的 quest/models/ |
如何用每个 Page 的 Key 向量 Min/Max 极值快速推导出注意力得annam上界? |
| 5 | KIVI 官方实现 jy-yuan/KIVI 的 quant/ |
Key 沿通道(Per-Channel)量化与 Value 沿序列(Per-Token)量化背后的离群值分布原因? |
版本基准:论文 StreamingLLM arXiv:2309.17453、H2O arXiv:2306.14048、SnapKV arXiv:2404.14469、Quest arXiv:2406.10774、KIVI arXiv:2402.02750;实现参考 mit-han-lab/streaming-llm、FasterDecoding/SnapKV、mit-han-lab/Quest、jy-yuan/KIVI。
本课剩余部分(核心心智模型、数值推导、代码填空题、问答题与完整参考答案)为 VIP 内容。同一张密钥可解锁全部 VIP 内容:题库、速查表、系统设计案例与全部付费课程。