原理
KV Cache的本质就是避免重复计算,把需要重复计算的结果进行缓存,生成式模型的新的token的产生需要用到之前的所有token的 K , V K,V K,V,在计算注意力的时候是当前的 Q Q Q和所有的 K , V K,V K,V来进行计算,所以是缓存 K , V K,V K,V。
由于Causal Mask的存在,前面已经生成的token不需要与后面的token产生attention,也就是用不到前面token的 Q Q Q,用的上前面token的 K , V K,V K,V,具体的公式如下:
a t t 1 ( Q , K , V ) = s o f t m a x ( Q 1 K 1 T D ) V 1 att_1(Q,K,V)=softmax(\frac{Q_1K_1^T}{\sqrt{D}})V_1 att1(Q,K,V)=softmax(DQ