news 2026/7/31 2:20:27

【LLM技术全景】状态空间模型与 Mamba:Transformer 的挑战者

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【LLM技术全景】状态空间模型与 Mamba:Transformer 的挑战者

摘要

  • 核心问题:Transformer 的 Self-Attention 是 O(n²) 复杂度,序列越长越昂贵,且自回归生成受限于串行依赖。有没有一种序列模型,既能像 RNN 一样线性复杂度,又能像 Transformer 一样并行训练?
  • 主要贡献:系统拆解状态空间模型(SSM)的连续系统本质与离散化HiPPO 长程记忆初始化Mamba 的选择性状态空间(Selective SSM)硬件感知并行扫描,并厘清 SSM 与线性注意力的血缘关系。
  • 阅读收获:① 看懂 SSM 的"连续系统 → 离散递推"数学框架;② 理解为什么传统 SSM 做不到内容相关推理、而 Mamba 可以;③ 弄清 Mamba 如何在 GPU 上既保持 O(n) 又接近卷积的并行速度;④ 能亲手用 Hugging Face 跑通一次 Mamba 文本生成。

一、引言:Transformer 的"算力墙"

回顾本系列前 18 篇,Transformer 几乎是我们所有讨论的基石:Self-Attention、位置编码、MoE、KV Cache、长上下文……它强大的根源,在于注意力机制能让任意两个位置直接交互——这种全局、内容相关的建模能力,正是大模型"涌现"的温床。

但能力有代价。注意力有一个绕不开的瓶颈:时间与显存复杂度都是 O(n²)(n 为序列长度)。

序列长度 n 带来的代价(注意力部分): 注意力矩阵大小 = n × n → 长序列时爆炸 KV Cache 显存 ∝ n → 推理越聊越占显存(见第14篇) 单步生成 依赖前一步 → 自回归天生串行,难并行加速 实际体感: n = 2K → 注意力矩阵 400 万项,尚可 n = 32K → 10 亿项,显存吃紧 n = 1M → 1 万亿项,单卡无法承载

更深层的问题在于:注意力其实是在"显式存储"全部历史(通过 n×n 的注意力矩阵 / KV Cache),而人类阅读时并不需要把整本书抄在草稿纸上逐字比对——我们靠"理解后的记忆"来处理长文。

这就引出了一个核心问题:

能否设计一种序列模型: ✓ 训练时可并行(像 Transformer) ✓ 推理时复杂度 O(n)(像 RNN) ✓ 能建模长程依赖(像 Transformer,而非退化 RNN)

答案就是本文的主角——状态空间模型(State Space Model, SSM),以及它的革命性实现Mamba


二、序列建模的三条路线

在 SSM 之前,序列建模主要有三条路线,各有死穴:

模型家族训练并行性推理复杂度长程依赖致命短板
RNN(LSTM/GRU)❌ 必须串行O(n)⚠️ 易梯度消失无法并行训练,扩不动
CNN(Conv1d/WaveNet)✅ 可卷积O(n·k)(k=核宽)⚠️ 感受野受限全局依赖需堆很深/很宽
Transformer✅ 全并行O(n²)✅ 全局序列越长越贵

SSM 的野心是集三家之长:拿到 RNN 的 O(n) 推理、Transformer 的并行训练,同时用"连续状态"天然建模长程依赖。

直观理解:RNN 用隐藏状态 h 压缩历史,但 h 是"定死的计算图"难并行;Transformer 用注意力"重新读取"历史,但代价是 O(n²);SSM 则把"状态压缩历史"这件事建立在连续系统数学之上,从而既能被离散化用于推理,又能被转换成卷积用于并行训练。


三、状态空间模型(SSM)基础

3.1 连续系统视角

SSM 的出发点不是离散序列,而是一个连续时间的线性动力系统

状态方程: h'(t) = A · h(t) + B · x(t) 输出方程: y(t) = C · h(t)
  • x(t):输入信号(连续)
  • h(t)状态向量(维度 d_state,通常 16/64/128),是系统对历史的"压缩记忆"
  • y(t):输出
  • A:状态转移矩阵(d_state × d_state)——决定记忆如何随时间演化/遗忘
  • B:输入到状态的映射(d_state × d_input)
  • C:状态到输出的映射(d_output × d_state)

关键直觉:h(t) 是一个"有损但连续"的历史摘要。当前输出 y(t) 只通过 h(t) 依赖过去,而不需要回看全部 x(τ)。这正是 O(n) 复杂度的来源。

3.2 离散化:从连续到递推

计算机只能处理离散的 Token 序列,因此要把连续系统离散化。最常用的方式是零阶保持(Zero-Order Hold, ZOH):假设在一个时间步 Δ 内,输入 x 保持恒定。

离散化后得到递推形式:

h_k = Ā · h_{k-1} + B̄ · x_k y_k = C · h_k

其中离散化参数为:

Ā = exp(Δ · A) # 状态转移(矩阵指数) B̄ = (Δ · A)^{-1} · (exp(Δ · A) − I) · Δ · B # 输入投影

工程上常用一阶近似Ā ≈ I + ΔAB̄ ≈ ΔB(当 Δ 很小时),更简单稳定。

这个递推式长得和 RNN 一模一样:当前状态 = 转移矩阵·旧状态 + 输入映射·当前输入。区别在于 A、B 来自连续系统的严谨离散化,而非手动设计。

3.3 线性时不变(LTI):SSM 的"第一性"

传统 SSM 有一个重要性质:A、B、C 与具体输入无关(时间不变)。这意味着:

对于任意输入序列 x,输出 y 满足: y = (C 卷积 Ā) * x (* 表示卷积)

也就是说,LTI 的 SSM 等价于一个固定卷积核的 1D 卷积!这带来一个巨大好处:可以用 FFT / 卷积算法在O(n log n)内并行训练,而不必串行扫描。

这解释了为什么 SSM 早期(如 S4 模型)能在长序列上击败 Transformer——它把"历史压缩"变成了一个可并行计算的卷积。

3.4 HiPPO:让状态真正"记住"长历史

光有卷积还不够。早期 SSM 的 A 矩阵若随便初始化,状态 h 会快速遗忘,长程依赖照样学不到。

HiPPO(High-order Polynomial Projection Operators)给出了一个优雅的初始化方案:它让状态 h(t) 始终逼近"截至当前时刻的历史输入 x(τ), τ≤t"在一组正交多项式基上的投影系数。

HiPPO 的核心思想: 用 d_state 个正交基函数(如 Legendre 多项式)拟合历史 状态 h 存的是"拟合系数"而非原始信号 → 少量维度即可高保真压缩任意长历史 → 长程依赖不再因维度固定而丢失

HiPPO 初始化是 S4 模型成功的关键,也是后续所有 SSM(包括 Mamba)的标配。


四、SSM 与线性注意力的"血缘关系"

理解 SSM,就不能不提线性注意力(Linear Attention)——它们解决的是同一个问题:把 O(n²) 的注意力降为线性。

标准注意力: Attn = softmax(QK^T / √d) · V # O(n²) 因为 QK^T 是 n×n 线性注意力: Attn = φ(Q) · (φ(K)^T · V) # 先聚合 KV 到固定维度 = φ(Q) · (Σ_k φ(k_k) v_k^T) # O(n·d²) 与 n 线性相关

而 SSM 的递推h_k = Ā·h_{k-1} + B̄·x_k本质上也是在把历史信息压缩进固定维度的状态 h——这与线性注意力把 KV 聚合进固定维度记忆是同一哲学。

维度线性注意力经典 SSM(LTI)
记忆载体固定维度聚合矩阵状态向量 h
内容相关性✅ 依赖输入(φ 映射)❌ 时间不变(A/B/C 与输入无关)
训练方式直接矩阵乘卷积 / FFT
长程能力取决于 φ 设计依赖 HiPPO 初始化

关键差异:经典 SSM 是时间不变的——无论输入是什么,它对"如何压缩历史"的策略是固定的。这让它高效,但也导致一个致命缺陷:无法做内容相关的、选择性地关注(例如"复制某个特定词"“跳过无关段落”)。而这是 Transformer 注意力最擅长的。

Mamba 的全部创新,都围绕"如何把选择性还给 SSM"展开。


五、Mamba 的突破:选择性状态空间(Selective SSM)

5.1 问题:时间不变 = 无法"选择性关注"

经典 SSM 的 A、B、C 是固定的。想象你在读一段文字:

"请把上面那句【重要结论】抄写下来,忽略中间的水词。"

人类会选择性地把"重要结论"记进工作记忆,把水词忘掉。但 LTI-SSM 对"重要结论"和"水词"一视同仁——它的遗忘率是预先定死的,不随内容变化。于是它擅长"平滑地压缩一切",却不擅长"精准地挑出某一点"。

论文里用一个简单的**"抓特定token"任务**证明:LTI 模型(包括 S4)在这个任务上几乎失败,而 Transformer 轻松通过。

5.2 解法:让参数依赖输入

Mamba 的核心洞见极简:让 Δ、B、C 成为输入 x 的函数

传统 SSM: Ā, B̄, C = 常数(与 x 无关) Mamba SSM: Δ_k, B_k, C_k = f(x_k) (每个 token 不同!)

具体做法:用 tiny 的线性层(投影到 d_state / d_inner)从当前输入 x_k 实时算出 Δ_k、B_k、C_k。

这带来"选择性"的本质效果:

Δ_k 很大 → "这一步很重要,快更新记忆" → Ā_k = exp(Δ_k·A) 接近 0 矩阵 → 旧记忆被快速覆盖/刷新 Δ_k 很小 → "这一步是噪声,忽略" → Ā_k ≈ I → 旧记忆几乎原样保留

换句话说,Δ 充当了注意力的"门控":类似 Transformer 的 softmax 权重,但作用在"状态更新"上而非"全局相似度"上。这让 Mamba 既能选择性记忆、又能保持 O(n)。

妙处:选择性让 SSM 从"只能平滑压缩"升级为"可内容感知推理",补上了与 Transformer 之间的能力鸿沟,同时复杂度仍是线性的。

5.3 代价:卷积并行性被破坏

但"参数依赖输入"意味着 SSM 不再是 LTI,也就无法再用卷积并行训练。Mamba 必须在"并行"和"选择性"之间做技术权衡——这正是下一节硬件算法的用武之地。


六、硬件感知并行扫描(Hardware-aware Parallel Scan)

选择性让经典卷积失效,但朴素的串行递归(RNN 式)在 GPU 上又慢得离谱(GPU 擅长大规模并行矩阵乘,不擅长一步步串行)。Mamba 的解法是硬件感知并行扫描(Parallel Scan),其核心是减少 HBM(显存)与 SRAM(片上缓存)之间的来回读写

朴素递归的瓶颈: 每步都要从 HBM 读状态 h、写回 h → HBM 带宽几十倍低于 SRAM,I/O 成为瓶颈 Mamba 的做法(GPU 友好的扫描): 1. 把序列分块(chunk),每块载入 SRAM 2. 在 SRAM 内做并行扫描(associative scan,利用结合律) 3. 只在块边界与 HBM 交互 → 显存 I/O 从 O(n) 降到接近 O(n / chunk_size) → 既保持 O(n) 计算,又逼近卷积的吞吐

数学上依赖扫描的结合律

(h_1 op x_1) op (h_2 op x_2) = 可任意分组并行计算

这使得"选择性扫描"能在 GPU 上高效并行,实测训练速度接近同规模 Transformer,推理随序列长度线性扩展——真正拿到了 RNN 的复杂度 + Transformer 的并行性


七、Mamba 架构与复杂度全景

7.1 Mamba 块结构

Mamba 用"SSM 替换注意力"的方式接入标准 LLM 主干(类似 LLaMA,但把 Self-Attention 换成 Selective SSM):

输入 x │ ├─→ RMSNorm → 线性扩展(expand) → SiLU │ → 因果 1D 卷积 → SiLU │ → 选择性 SSM(核心) │ → 线性压缩 │ → 残差相加 └─→ (跳跃连接) 特点: ✓ 无注意力 → 无 n×n 矩阵、无 KV Cache 膨胀 ✓ 推理时状态 h 是固定维度 → 显存随 n 线性、不平方

7.2 四类序列模型对比

特性RNNCNN(Conv)TransformerMamba (SSM)
训练并行❌ 串行✅ 卷积✅ 全并行✅ 并行扫描
推理复杂度O(n)O(n·k)O(n²)O(n)
显存(长序列)O(1)状态O(k)O(n) KVO(1)状态
内容选择性❌(隐式)✅ 全局✅ 选择性
长程依赖⚠️ 易忘⚠️ 受限
硬件友好⚠️ 串行慢✅(感知扫描)

一句话总结 Mamba 的定位:在保持线性复杂度与恒定显存的同时,补齐了经典 SSM 缺失的内容选择性,使它第一次在语言建模上能正面对抗同规模 Transformer。

7.3 实测表现(代表性结果)

Mamba-3B 在 Pile 上的困惑度 ≈ 同规模 Transformer / LLaMA 但:序列越长,推理吞吐优势越大(8K→1M 上下文几乎线性) Mamba-2.8B / 在下游任务(常识/QA)追平或略超 Pythia-2.8B 混合模型 Jamba(Mamba + MoE + Attention)证明二者可互补

八、Mamba-2 与结构化状态空间对偶(SSD)

2024 年的Mamba-2进一步发现:选择性 SSM 与一个特殊结构的结构化矩阵乘法(半可分矩阵)在数学上对偶——而后者可以映射成 GPU 高度优化的矩阵乘法

核心洞见(SSD, State Space Duality): 选择性扫描(串行) ⇔ 半可分矩阵乘法(并行) → 用矩阵乘替代扫描,训练再快 2-8 倍 → 同时统一了"SSM 视角"与"注意力视角" 意义: ✓ 训练效率大幅提升 ✓ 理论上把 SSM 与线性注意力拉到同一框架 ✓ 为后续"注意力-SSM 混合架构"扫清障碍

这标志着序列建模从"Transformer vs RNN vs SSM 三方混战",走向"用统一数学语言描述记忆与计算"的新阶段。


九、实战:跑通 Mamba

9.1 用 Hugging Face 加载 Mamba 生成文本

# 需要: pip install transformers torchfromtransformersimportAutoModelForCausalLM,AutoTokenizer model_id="state-spaces/mamba-130m-hf"# 也可换 mamba-2.8b-hftokenizer=AutoTokenizer.from_pretrained(model_id)model=AutoModelForCausalLM.from_pretrained(model_id,trust_remote_code=True)prompt="The future of artificial intelligence is"inputs=tokenizer(prompt,return_tensors="pt")# Mamba 自回归生成(无 KV Cache 膨胀问题,长序列友好)outputs=model.generate(**inputs,max_new_tokens=64,temperature=0.8,top_p=0.9,)print(tokenizer.decode(outputs[0],skip_special_tokens=True))

注意:Mamba 没有 KV Cache,但推理仍是一个 token 一个 token 产出(自回归本质不变)。它的优势在于长序列时显存稳定、吞吐更高

9.2 最小选择性 SSM 推理示意(伪代码)

importtorchdefselective_ssm_step(x_k,h_prev,A,dt_proj,B_proj,C_proj,D):""" x_k : 当前输入 (d_inner,) h_prev : 上一时刻状态 (d_state, d_inner) A : 固定的状态矩阵 (d_state, d_inner) —— 通常每个通道一份 """# 1) 由输入实时算出"选择性参数"dt=dt_proj(x_k)# (d_inner,) 门控步长Bk=B_proj(x_k)# (d_state,)Ck=C_proj(x_k)# (d_state,)# 2) 离散化(一阶近似,训练稳定)dA=torch.exp(dt[:,None]*A)# (d_inner, d_state)dB=dt[:,None]*Bk[None,:]# (d_inner, d_state)# 3) 状态更新(选择性:dt 大则刷新,dt 小则保留)h_new=dA*h_prev+dB*x_k[:,None]# (d_inner, d_state)# 4) 输出 + 跳跃连接y_k=(h_new*Ck[None,:]).sum(dim=-1)# (d_inner,)returny_k+D*x_k,h_new

这段代码浓缩了 Mamba 的精髓:参数随输入变化(选择性)+ 固定维度状态(O(n))


十、常见误区纠正

误区1:"Mamba 会完全取代 Transformer。" 事实:混合架构(Jamba、Zamba、Samba)把 SSM 与注意力互补使用—— SSM 处理长程线性压缩,注意力处理局部精确交互,往往更优。 误区2:"SSM 不能做长上下文。" 事实:SSM 天然 O(n) 且状态维度固定,反而比 Transformer 更适合超长序列 (Mamba 论文展示过 1M token 级别的语言建模)。 误区3:"选择性 SSM 和注意力是一回事。" 事实:都做内容相关加权,但注意力显式存全部 KV(O(n) 显存), SSM 把历史压进固定状态(O(1) 显存),没有全局注意力矩阵, 表达力与归纳偏置都不同。 误区4:"Mamba 只是 RNN 换皮。" 事实:关键在"可在 GPU 上并行扫描训练" + "选择性", 既有 RNN 的 O(n),又有接近 Transformer 的训练吞吐, 这是纯 RNN 做不到的。

十一、总结与展望

本文核心论断

1. SSM 的本质:用连续动力系统的"状态"压缩历史, 离散化后等价于 RNN 递推,LTI 时又等价于卷积(可并行训练)。 2. HiPPO 初始化让状态能高保真压缩任意长历史—— 这是 SSM 长程能力的基础。 3. 经典 SSM 是时间不变的,无法内容选择性关注; Mamba 让 Δ/B/C 依赖输入,补上了这块短板。 4. 选择性破坏了卷积并行,但硬件感知并行扫描在 GPU 上 既保 O(n) 又逼近卷积吞吐——工程上真正可用。 5. Mamba-2 揭示 SSM 与结构化矩阵乘对偶, 统一了 SSM 与(线性)注意力的数学语言。

技术演进脉络

1990s 状态空间模型(控制论) ↓ 2019 S4(HiPPO + LTI-SSM + 卷积训练) 长序列建模突破 ↓ 2022 GSS / S5 扩展 SSM 表达力 ↓ 2023 Mamba(选择性 SSM + 硬件感知扫描) 语言建模正面对抗 Transformer ↓ 2024 Mamba-2(SSD 对偶) 训练提速 + 理论统一 ↓ 2025+ Jamba / 混合架构 与注意力、MoE 深度融合

下期预告(下次发布):《阶段总结:技术原理篇核心知识回顾》—— 把第9~19篇的 11 讲核心公式、架构图、代码范式串成一张"技术原理篇知识地图",并给出针对不同目标的复习路径。


参考资料

  1. Gu et al. (2021)Combining Recurrent, Convolutional, and Continuous-time Models with the Linear State Space Layer (S4)
  2. Gu et al. (2022)HiPPO: Recurrent Memory with Optimal Polynomial Projections
  3. Gu & Dao (2023)Mamba: Linear-Time Sequence Modeling with Selective State Spaces
  4. Dao & Gu (2024)Transformers are SSMs: Generalized Models and Efficient Parallel Inference for Structured State Space Models (Mamba-2 / SSD)
  5. Lieber et al. (2024)Jamba: A Hybrid Transformer-Mamba Language Model
  6. Katharopoulos et al. (2020)Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention(线性注意力对偶)

延伸讨论

思考题

  1. 既然 Mamba 有选择性,为什么很多落地场景仍选择"Transformer + 长上下文"而非纯 Mamba?
  2. 如果让你设计一个"注意力 + SSM"混合块,你会把 SSM 放在浅层还是深层?为什么?

实践作业

  • state-spaces/mamba-130m-hf生成一段文本,再换成同规模EleutherAI/pythia-160m对比困惑度与生成速度
  • 把 9.2 节的伪代码补全成可运行的 PyTorch 模块,在合成"复制任务"上验证选择性
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 2:12:23

稳压(齐纳)二极管+IGBT+二极管

齐纳二极管其中有一定的限制例如这个就错误了可以等效为不存在。因为小于6v,齐纳二极管也没有被击穿,相当于一根导线吧IGBT二极管根生蒂固的电压产生电流思想是错误的将二极管想象成一个开关压降是二极管的固有属性先有二极管上有电流流过,然…

作者头像 李华
网站建设 2026/7/31 2:11:53

Python实战IP反查:从网络地址到商业情报的自动化技术解析

1. 从IP到商业世界的“敲门砖”:为什么我们需要IP反查?在数字世界里,IP地址就像每一台联网设备的“门牌号”。对于开发者、安全研究员、数据分析师甚至产品运营来说,仅仅知道一个IP地址是远远不够的。这个“门牌号”背后是谁在“居…

作者头像 李华
网站建设 2026/7/31 2:09:14

JVM GC性能陷阱分析与实战优化策略

1. 从一次线上事故说起:GC引发的性能雪崩去年我们团队遭遇过一次诡异的线上故障——某核心服务在流量高峰时段响应时间从平均50ms飙升到2秒以上。监控系统显示CPU使用率始终低于30%,内存占用稳定在60%左右,乍看资源充足。但通过火焰图分析&am…

作者头像 李华
网站建设 2026/7/31 2:05:50

Java finally执行机制深度解析与面试要点

1. 面试官为什么关心finally的执行问题? 当面试官抛出"finally中的代码一定会被执行吗?"这个问题时,他们实际上在考察候选人对Java异常处理机制的深入理解程度。这个问题看似简单,却暗藏玄机,涉及JVM底层原理…

作者头像 李华
网站建设 2026/7/31 2:05:14

如何用Python一键备份QQ空间历史记录:GetQzonehistory完整指南

如何用Python一键备份QQ空间历史记录:GetQzonehistory完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年你在QQ空间留下的青春印记吗?那些深夜…

作者头像 李华