论文:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
强大、经济且高效的混合专家语言模型: 首次引入了多头潜在注意力机制(MLA),结合 DeepSeekMoE 架构,将模型规模扩展到 236B( 激活参数量 21B),实现了模型的经济训练和高效推理。
架构
概述
总体还是在 Transformer 架构内,但对注意力模块和 FFN 设计并采用了创新的架构:
- 注意力机制:设计了 MLA,利用低秩键值联合压缩来消除推理时键值缓存(key-value cache)的瓶颈,从而支持高效推理。
- FFN:采用 DeepSeekMoE 中的高性能 MoE 架构,能够以经济的成本训练强大的模型。
Multi-Head Latent Attention
提高推理效率
传统的 Transformer 模型通常采用多头注意力机制(MHA),但在生成过程中,其庞大的键值(KV)缓存会成为限制推理效率的瓶颈。为了减少 KV 缓存,提出了多查询注意力(MQA)和分组查询注意力(GQA)。这些方法需要的 KV 缓存较小,但其性能不如 MHA。
DeepSeek-V2 设计了一种创新的注意力机制,称为多头潜在注意力(MLA)。MLA 配备了低秩键值联合压缩,性能优于 MHA,但所需的 KV 缓存量明显较少。
预备知识:标准的Multi-Head Attention
符号定义: d d d 是 embedding 维度, n h n_h nh 是注意力头的数量, d h d_h dh 是每个头的维度, h t ∈ R d \mathbf{h}_t \in \R^d ht∈Rd 是在注意力层中第 t t t 个 token 的注意力输入。
标准的 MHA 首先通过三个矩阵 W Q , W K , W V ∈ R d h n h × d W^Q, W^K, W^V \in \R^{d_hn_h \times d} WQ,WK,WV∈Rdhnh×d 分别产生 q t , k t , v t ∈ R d h n h \mathbf{q}_t, \mathbf{k}_t, \mathbf{v}_t \in \R^{d_hn_h} qt,kt,vt∈Rdhnh:
q t = W Q h t , k t = W K h t , v t = W V h t \begin{aligned} \mathbf{q}_t &= W^Q\mathbf{h}_t, \\ \mathbf{k}_t &= W^K\mathbf{h}_t, \\ \mathbf{v}_t &= W^V\mathbf{h}_t \end{aligned} qtktvt=WQht,=WKht,=WVht
然后, q t , k t , v t \mathbf{q}_t, \mathbf{k}_t, \mathbf{v}_t qt,kt,vt 会被切片成 n h n_h nh 个头以进行多头注意力计算:
[ q t , 1 ; q t , 2 ; ⋯ ; q t , n h ] = q t , [ k t , 1 ; k t , 2 ; ⋯ ; k t , n h ] = k t , [ v t , 1 ; v t , 2 ; ⋯ ; v t , n h ] = v t , o t , i = ∑ j = 1 t Softmax j ( q t , i ⊤ k j , i d h ) v j , i , u t = W O [ o t , 1 ; o t , 2 ; ⋯ ; o t , n h ] , \begin{aligned} &[\mathbf{q}_{t,1}; \mathbf{q}_{t,2}; \cdots ; \mathbf{q}_{t,n_h}] = \mathbf{q}_{t}, \\ &[\mathbf{k}_{t,1}; \mathbf{k}_{t,2}; \cdots ; \mathbf{k}_{t,n_h}] = \mathbf{k}_{t}, \\ &[\mathbf{v}_{t,1}; \mathbf{v}_{t,2}; \cdots ; \mathbf{v}_{t,n_h}] = \mathbf{v}_{t}, \\ &\mathbf{o}_{t,i} = \sum_{j=1}^{t} \text{Softmax}_j \left( \frac{\mathbf{q}^\top_{t,i} \mathbf{k}_{j,i}}{\sqrt{d_h}} \right) \mathbf{v}_{j,i}, \\ &\mathbf{u}_t = W^O [\mathbf{o}_{t,1}; \mathbf{o}_{t,2}; \cdots ; \mathbf{o}_{t,n_h}], \end{aligned} [qt,1;qt,2;⋯;qt,nh]=qt,[kt,1;kt,2;⋯;kt,nh]=kt,[vt,1;vt,2;⋯;vt,nh]=vt,ot,i=j=1∑tSoftmaxj(dhqt,i⊤kj,i)vj,i,ut=WO[ot,1;ot,2;⋯;ot,nh],
其中, q t , i , k t , i , v t , i ∈ R d h \mathbf{q}_{t,i}, \mathbf{k}_{t,i}, \mathbf{v}_{t,i} \in \R^{d_h} qt,i,kt,i,vt,i∈Rdh 分别表示第 i i i 个注意力头的 query,key,value, W O ∈ R d × d h n h W^O \in \R^{d \times d_hn_h} WO∈Rd×dhnh 表示输出投影矩阵。
在推理过程中,需要缓存所有 keys 和 values 以加速推理,因此 MHA 需要为每个 token 缓存 2 n h d h l 2n_hd_hl 2nhdhl 个元素。在模型部署中,这个繁重的 KV 缓存是限制最大批次大小和序列长度的一大瓶颈。
Low-Rank Key-Value Joint Compression
MLA 的核心是对 key 和 value 进行低秩联合压缩,以减少 KV 缓存:
c t K V = W D K V h t , k t C = W U K c t K V , v t C = W U V c t K V , \begin{aligned} \mathbf{c}_t^{KV} &= W^{DKV} \mathbf{h}_t, \\ \mathbf{k}_t^C &= W^{UK} \mathbf{c}_t^{KV}, \\ \mathbf{v}_t^C &= W^{UV} \mathbf{c}_t^{KV}, \\ \end{aligned} ctKVktCvtC=WDKVht,=W