note
- MQA、GQA、MLA本质都是在围绕“如何减少kv cache同时尽可能保证效果”进行优化的产物。
- 从Layer的视角来看,MQA/GQA可以认为是Intra-Layer KV Cache Shared(层内KV Cache共享),而YOCO提出的想法,则可以认为是Inter-Layer KV Cache Shared(层间KV Cache共享)。层间KV Cache共享,理论上的可以最多把KV Cache的Memory需求降低到1/N(N为Transformer层数),并且,这和层内KV Cache共享的技术,比如MQA和GQA是不冲突的,两者可以一起使用,从而极大地降低KV Cache的显存开销。
文章目录
回顾:多头注意力
比如在pytorch中我们可以很方便的使用nn.TransformerEncoderLayer
或者nn.TransformerDecoderLayer
类,里面包括一个多头注意力和一个FFN前馈神经网络(这两部分之间有残差连接)和层归一化操作。
from to