0%
URL
TL;DR
DeepSeek 系列是国内一家名叫深度求索的科技公司推出的一种混合专家语言模型,这家公司背后是幻方量化。
DeepSeek-V2 的核心思想是 Multi-head Latent Attention (MLA) 和 DeepSeekMoE 两个模块,这两个模块分别替换了传统 Transformer 层的 Attention Module 和 FFN,是本博客想要探讨的重点。
Architecture
Multi-head Latent Attention (MLA)
MLA 总体计算流程

- 核心思想是将
hidden feature 通过 MLP 映射到 latent space,降低计算(attention)和存储(kv cache)的复杂度。
- 和主流的
kv cache 方案不同,MLA 只需要 cache ctKV 和 ktR 两部分。
MLA 详细计算流程
- 输入:ht∈Rd ,表示第
t 个 token 在某个 attention layer 层的输入特征
- 计算
key / value:
- ctKV=WDKVht ,其中 WDKV∈Rdc×d,
DKV 表示 down-projection key value
- ktC=WUKctKV ,其中 WUK∈Rdhnh×dc,
UK 表示 up-projection key,dc≪dhnh
- vtC=WUVctKV ,其中 WUV∈Rdhnh×dc,
UV 表示 up-projection value,dc≪dhnh
- 计算
query:
- ctQ=WDQht ,其中 WDQ∈Rdc′×d,
DQ 表示 down-projection query
- qtC=WUQctQ ,其中 WUQ∈Rdhnh×dc′,
UQ 表示 up-projection query,dc′≪dhnh
- 计算
RoPE:
RoPE 是一种在输入 attention layer 之前,对 query 和 key 做 position encoding 的方法
RoPE 和 MLA 在设计上是冲突的,因此 MLA 对 RoPE 做了一些修改,主要是:额外计算 multi-head query rotary 和 shared key rotary
- [qt,1R,qt,2R,...,qt,nhR]=qtR=RoPE(WQRctQ) ,其中 WQR∈RdhRnh×dc′,QR 表示
query rotary
- ktR=RoPE(WKRktC) ,其中 WKR∈RdhR×d,KR 表示
key rotary
- qt,i=[qt,iC,qt,iR] ,将
query 和 query rotary 拼接,得到正式的 query
- kt,i=[kt,iC,ktR] ,将
key 和 key rotary 拼接,得到正式的 key
- 计算
attention:
- ot,i=∑j=1tSoftmaxj(dh+dhRqt,iTkj,i)vj,iC
- 计算
output:
- ut=WO[ot,1,ot,2,...,ot,nh] ,其中 WO∈Rd×dhnh
MLA 优势
- 大幅降低了
kv cache 的存储空间

DeepSeekMoE
Thoughts
MLA 算是对 self-attention 比较深度的改进,兼顾了 kv cache 和 RoPE 的设计,比 MQA 和 GQA 设计看上去更用心。
DeepSeekMoE 感觉在 GShard 上的改进并不大,主要是在 Expert 的基础上加入了 Sub-Expert 的概念,以及常开的 Isolated Shared Expert 设计。
- 这二者结合,给了
DeepSeek-V2 一个很好的性能提升,可以在相同计算复杂度下,塞下更多的参数量,提高模型表现。