KV cache优化的发展过程:MHA、MQA、GQA、MLA
参考:
文章 https://kexue.fm/archives/10091
视频 https://www.bilibili.com/video/BV1U9zBYZEg9/?spm_id_from=333.337.search-card.all.click&vd_source=da862fa7a218e81897b55d7e24fe26ee
在GPU上部署模型的原则是:能一张卡部署的,就不要跨多张卡;能一台机部署的,就不要跨多台机。这是因为“卡内通信带宽 > 卡间通信带宽 > 机间通信带宽”。所以,减少KV Cache的目的就是要实现在更少的设备上推理更长的Context,或者在相同的Context长度下让推理的batch size更大,从而实现更快的推理速度或者更大的吞吐总量。当然,最终目的都是为了实现更低的推理成本。
MHA:只将每个预测的token重新计算QKV,将新计算的K和V拼接到存储在cache中KV。此外,每个Q只用一个就抛弃了。
MQA:压缩KVcanche,将KV的多头变为单头,提高效率。
GQA:折中MHA与MQA,让同一组的头公用同一个KV。
MLA:参考https://dingfen.github.io/2025/01/27/2025-01-30-MLA/