Deepseek提出了一种创新的注意力机制,名为多头潜在注意力(MLA,Multi-Head Latent Attention),是基于多头自注意力机制(MHA)的优化,能够显著降低内存占用和计算开销,同时保持模型性能。

核心原理:

MLA的核心思想是通过低秩压缩技术将注意力机制中的键(Key)和值(Value)投影到低维的潜在空间:

  • 低秩压缩:多头潜在注意力机制(MLA)将键(Key)和值(Value)通过低秩分解映射到低维潜在空间,减少了需要缓存的键值对数量,从而大幅降低了内存需求。

下面进行详细解释:

低秩压缩

当输入序列 XXX,传统的多头注意力机制(MHA),直接使用 WKW^KWKWVW^VWVXXX 相乘得到 KKKVVV,然后用于后续计算注意力分数,而多头潜在注意力机制(MLA)则将 WKW^KWKWVW^VWV拆解为 UKVKU^KV^KUKVKUVVVU^VV^VUVVV。即
WK=UKVKW^K=U^KV^KWK=UKVKWV=UVVVW^V=U^VV^VWV=UVVV
然后将 UKU^KUKUVU^VUV替换成同一个矩阵 UUU
即:
WK=UVKW^K=UV^KWK=UVKWV=UVVW^V=UV^VWV=UVV
从上面的计算公式来看,与传统 MHA 不同的是,MLA将计算键和值分成两步:当输入序列 XXX 后,先乘以 UUU 得到压缩后的键值对(CCC ,代表含有键和值的信息矩阵,也称潜在向量),即 XU=CXU=CXU=C ,当后续需要计算注意力分数时,则直接将这个含有键值信息的 CCC 矩阵分别乘以 VKV^KVKVVV^VVV得到解压后的真实的键和值,用于计算之中。
即:
CVK=XUVK=XWK=KCV^K=XUV^K=XW^K=KCVK=XUVK=XWK=KCVV=XUVV=XWV=VCV^V=XUV^V=XW^V=VCVV=XUVV=XWV=V
CCC 为含有键值信息的潜在向量,其维度要比输入序列 XXX 低的多,将 XXX 投影到 CCC 可显著减少计算键值的缓存:

  • 因为如果预先计算键、值,随后再计算注意力分数,两者的缓存量会随序列 XXX 长度的增加而显著增大从而限制了更长的上下文输入(序列 XXX ,也就是输入到大模型中的话)。
  • 而如果 UVK、UVVUV^K、UV^VUVKUVV 已经吸收到计算注意力分数之中,计算注意力分数时,就可省去计算出真实的 K、VK、VKV 这一中间值(中间值需要缓存,低秩压缩目的就是为了避免中间值的出现),直接得到最终结果,就可减少缓存。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐