<aside>

AI 主导润色,请自行辨别

</aside>

0. 摘要

首先给出一图流进行学习,重点都突出在下面了

image.png

deepseek_v4_architecture (1).jpg

1. 理论重点:Attention 的变化

这次新模型发布,可以看出,DS 为了应对 1M 超长上下文不爆显存,下了很大的功夫。借鉴了类似《MSA: Memory Sparse Attention for Efficient End-to-End Memory Model Scaling to 100M Tokens》 这篇恒大团队的思想:很多时候,超长上下文下,某几个 token 的重要程度较低,既然如此,将这么 M 个 token 聚合起来,视作一个 token,不就得了?(ps,CNN 时代的古法炼丹思想还在追我)。

但是,不同于之前这篇论文,它没有把长上下文问题完全改造成一个外部 memory / document routing 系统,而是直接在 Transformer block 内部重构了 Attention、KV Cache 和推理时的数据布局。换句话说,DeepSeek-V4 仍然长得像一个 Transformer,但它内部已经不是传统的 token-level dense attention 了。

DeepSeek-V4 的 Attention 不再让每个 query token 直接 attend 到所有历史 token,而是先把历史 token 压缩成更少的 KV entry,再根据层类型选择“稀疏看一部分”或者“密集看压缩后的全部”。论文里把这个叫做 Hybrid Attention with CSA and HCA:

这比单纯的 sparse attention 更复杂,也比单纯的 KV compression 更激进。它是 compression、sparse selection、sliding window、MQA 和低精度 indexer 的组合拳。

1.1 普通 Attention 的瓶颈

普通 self-attention 大概是这样:

# x: [seq_len, hidden]
q = x @ Wq
k = x @ Wk
v = x @ Wv

score = q @ k.T / math.sqrt(head_dim)      # [seq_len, seq_len]
prob = torch.softmax(score, dim=-1)
out = prob @ v

在 decode 阶段,虽然每次只生成一个 token,但这个 token 仍然要和所有历史 KV 做 dot product:

# decode one token
q_t = h_t @ Wq                  # [head_dim]
score_t = q_t @ K_cache.T       # [past_len]
out_t = torch.softmax(score_t, dim=-1) @ V_cache

当 past_len = 1M 时,这个操作就非常恐怖了。注意,这里不只是算力问题,还有显存问题:每个历史 token 都要存 K/V。

MSA 这类工作也是在解决类似问题。它的思路更像是把长上下文组织成可检索的 memory/document 结构,通过 memory sparse attention、document-wise RoPE、KV cache compression 和 memory parallel 去支撑更长上下文。DeepSeek-V4 的路线更贴近标准 Transformer:它没有把模型外部化成一个 memory system,而是在 Attention 层内部直接改变 KV 的表示方式。

1.2 CSA:先压缩,再稀疏选择

CSA 的核心路径是: