SnapKV算法原理
SnapKV的主要目标是优化长序列prompt生成过程中的注意力机制性能。它的设计包括以下核心目标
- 减少计算复杂度:压缩参与计算的KV数量;
- 保持生成质量:通过注意力机制中的关键特征选择,优先保留重要的上下文信息。
算法关键概念
- Prompt Length( L p r o m p t L_{prompt} Lprompt):用户输入的提示总长度,分为:
- Prefix Length( L p r e f i x L_{prefix} Lprefix):提示的前缀部分。
- Observation Window( L o b s L_{obs} Lobs):提示的最后一个窗口,用户分析注意力分配模式。
- Voting:对观察窗口的query和前缀上下文的Key,Value计算注意力权重,并通过投票机制选出重要的上下文位置。
- Hit Rate:衡量注意力机制投票效果的指标,表示为生成过程中成功选择的重要特征数量占总重要特征数量的比例。
投票机制
主要用来在观察窗口内的所有头部中计算注意力权重,并通过聚合这些权重来突出最重要的前缀位置。
- 注意力权重聚合
C = ∑ i = 0 L obs W obs [ : , i , : ] C=\sum_{i=0}^{L_{\text {obs }}} W_{\text {obs }}[:, i,:] C=∑i=0Lobs Wobs [:,i,:]
- W o b s W_{obs} Wobs是一个张量,表示观察窗口中注意力权重的集合,维度为 R N × L o b s × L p r e f i x \mathbb{R}^{N\times L_{obs} \times L_{prefix}} RN×L

1万+

被折叠的 条评论
为什么被折叠?



