01
课程导论:为什么需要KV缓存?
从自注意力机制的计算冗余说起。
动机自注意力
02
自注意力机制回顾
QKV矩阵的生成与计算过程详解。
基础QKV
03
推理与训练的区别
为什么训练时不需要KV缓存,而推理时需要?
推理训练
04
KV缓存的核心思想
空间换时间,缓存历史Key和Value矩阵。
核心空间换时间
05
KV缓存的数据结构
如何用张量存储历史KV?形状与维度变化。
张量形状
06
Prefill阶段详解
第一个Token的处理与KV缓存的初始化。
Prefill初始化
07
Decode阶段详解
后续Token的生成与KV缓存的增量更新。
Decode增量
08
缓存命中与未命中
理解缓存的有效性与一致性。
缓存一致性
09
显存占用分析
KV缓存到底吃了多少显存?公式推导。
显存公式
10
显存优化策略概览
量化、剪枝、稀疏化、共享、卸载。
优化概览
11
KV缓存量化(INT8/INT4)
原理与实战,精度损失分析。
量化INT8
12
分组查询注意力(GQA)
减少KV头数,从源头降低缓存。
GQA头数
13
多查询注意力(MQA)
极致的KV头共享,性能与质量的权衡。
MQA共享
14
滑动窗口注意力(SWA)
限制上下文窗口,控制缓存大小。
SWA窗口
15
稀疏注意力
只缓存重要的Token,如何定义重要性?
稀疏重要性
16
KV缓存共享(Cross-Layer KV)
跨层共享KV,减少冗余。
跨层共享
17
内存卸载(Offloading)
将KV缓存卸载到CPU或NVMe。
卸载CPU
18
PagedAttention原理
解决显存碎片化,像操作系统管理内存一样管理KV。
PagedAttention碎片
19
vLLM框架实战
使用PagedAttention优化推理吞吐。
vLLM吞吐
20
连续批处理(Continuous Batching)
动态管理多个请求的KV缓存。
批处理动态
21
Prefix Caching
缓存公共前缀的KV,加速多轮对话。
前缀多轮
22
推测解码(Speculative Decoding)
用小模型生成,大模型验证,减少KV访问。
推测解码
23
显存优化工具介绍
NVIDIA Nsight Systems、PyTorch Profiler。
工具Profiler
24
实战:HuggingFace手动实现KV缓存
使用HuggingFace Transformers手动实现KV缓存。
实战HuggingFace
25
实战:LLaMA模型应用GQA
在LLaMA模型上应用GQA并测量显存节省。
LLaMAGQA
26
实战:FlashAttention-2优化
使用FlashAttention-2优化注意力计算,间接减少KV缓存压力。
FlashAttn优化
27
实战:部署推理服务 (FastAPI+vLLM)
部署一个支持KV缓存优化的推理服务。
FastAPIvLLM
28
性能基准测试
不同优化策略下的吞吐量与延迟对比。
基准吞吐
29
常见陷阱与调试
缓存溢出、精度下降、显存泄漏。
陷阱调试
30
未来展望:KV缓存技术演进
液态缓存、神经缓存等前沿方向。
未来液态缓存