Skip to content

状态空间模型与 Mamba

Transformer 的 O(n²) 注意力是长序列的天敌。以 Mamba 为代表的状态空间模型(SSM)用 O(n) 复杂度挑战 Transformer,是近年最受关注的架构方向之一,也是进阶面试的前沿加分点。

为什么要挑战 Transformer?

Transformer 的注意力有两个长序列痛点(详见 长上下文专题):

  • 训练:注意力计算量随序列长度 O(n²) 增长。
  • 推理:KV Cache 随序列长度线性增长,越长越占显存。

理想的序列模型应该:训练能并行、推理是常数显存、复杂度随长度线性。RNN 推理是常数显存(只存一个状态)但不能并行训练且易遗忘;Transformer 能并行但 O(n²)。SSM 想兼得两者之长。

什么是状态空间模型(SSM)?

SSM 源自控制理论,核心是一个线性递推:用一个固定大小的「隐藏状态 h」来压缩历史信息,每来一个新输入就更新状态、产出输出:

$$h_t = \mathbf{A} h_{t-1} + \mathbf{B} x_t, \qquad y_t = \mathbf{C} h_t$$

  • 像 RNN 一样逐步递推,但因为是线性的,可以改写成卷积形式 → 训练时能并行
  • 推理时按递推式走,只需保存固定大小的状态 h,与序列长度无关 → 常数显存、无需 KV Cache。

S4 是早期代表,通过特殊的矩阵结构(HiPPO 初始化)让状态能有效记住长程历史。

Mamba:选择性 SSM(S6)

早期 SSM 的硬伤:A、B、C 矩阵是固定的(时不变),对所有输入一视同仁,缺乏「根据内容选择性记忆/遗忘」的能力,因此在语言这种信息密度不均的任务上打不过 Transformer。

Mamba 的核心创新是「选择性(Selective)」:让 B、C 和步长 Δ 随输入动态变化(input-dependent),模型于是能根据当前 token 决定「记住什么、忽略什么」——这赋予了类似注意力的内容感知能力。

代价:参数随输入变化后,不能再用固定卷积核并行了。Mamba 用硬件感知的并行扫描(parallel scan)算法,把递推放在 GPU 高速 SRAM 里高效并行计算,解决了训练效率问题。

SSM vs Transformer

维度TransformerMamba / SSM
训练复杂度O(n²)O(n)
推理显存KV Cache 线性增长常数(固定状态)
长序列受限、昂贵天然友好
并行训练需特殊扫描算法
精确回忆/复制强(能直接看全历史)弱(状态有损压缩)
上下文学习相对弱

核心权衡:注意力「记住所有细节」(强回忆、高成本);SSM「压缩成固定状态」(高效、但有损、回忆弱)。

混合架构:取长补短

实践发现纯 SSM 在「精确检索上下文中的某条信息」(如复制、in-context learning)上不如注意力。于是出现混合架构——大部分层用 Mamba(省、快),少量层穿插注意力(保住精确回忆):

  • Jamba(AI21):Mamba + Attention + MoE 混合。
  • ZambaHymba(NVIDIA)等也是混合思路。

这是当前更务实的方向:不是替代 Transformer,而是融合。

高频追问

Q:Mamba 为什么能做到推理常数显存、无 KV Cache? 因为它用一个固定大小的隐藏状态压缩全部历史,每步只更新这个状态,不像注意力需要保存所有历史 token 的 K、V。所以推理显存与序列长度无关,长序列上优势明显。

Q:SSM 既然 O(n) 这么好,为什么还没取代 Transformer? 因为「固定状态」是有损压缩,在需要精确回忆/复制上下文具体内容、强 in-context learning 的任务上弱于注意力。所以更现实的是混合架构(Mamba 为主 + 少量注意力)。

Q:Mamba 相比早期 SSM(如 S4)的关键改进? 引入选择性机制:让 B、C、Δ 随输入动态变化,使模型能基于内容选择性地记忆和遗忘(类似注意力的内容感知),并用硬件感知并行扫描解决随之而来的训练并行问题。

Q:SSM 训练为什么能并行? 当参数时不变时,线性递推可改写成卷积,从而并行;Mamba 参数随输入变化后用 parallel scan(并行前缀扫描) 算法在 GPU 上并行计算递推,兼顾选择性与训练效率。

Q:为什么主流大模型目前还是 Transformer 为主? 生态成熟、可解释性和可控性经过大量验证、在通用任务上综合最强;SSM/混合架构在长序列、推理成本上有潜力,正在快速发展,但尚未在全面能力上稳定超越,目前多用于长序列或混合方案。

基于 MIT 许可发布