为什么我们需要超越 Transformer?

自 2017 年 Transformer 问世以来,它几乎统治了所有序列建模任务。但 Transformer 有一个根本性缺陷:注意力机制的复杂度是 O(N²),其中 N 是序列长度。当上下文窗口从 2K 扩展到 1M 时,计算和内存开销呈平方级增长。

序列长度注意力矩阵大小显存占用(近似)
2,0484M~16 MB
32,7681B~4 GB
131,07217B~68 GB
1,048,5761T~4 TB

这意味着:百万级 token 的上下文窗口在标准 Transformer 中几乎不可行,除非借助分布式注意力(如 Ring Attention)或近似方法。

研究者们提出了三类替代方案:

  1. 状态空间模型(SSM):S4、S5、S6/Mamba
  2. 线性注意力/RNN 混合:RWKV、RetNet、Linear Attention
  3. 混合架构:Jamba(Mamba+Transformer)、Zamba

状态空间模型(SSM):从 S4 到 Mamba

SSM 的数学基础

状态空间模型源自控制理论,用一组隐状态 h(t) 来压缩历史信息:

h'(t) = A·h(t) + B·x(t)      # 状态方程
y(t)  = C·h(t) + D·x(t)      # 输出方程

离散化后变为递推形式:

h_t = Ā·h_{t-1} + B̄·x_t
y_t = C·h_t

关键优势:递推计算是 O(1) 的,与序列长度无关。

S4:结构化状态空间

S4(Structured State Space sequence model)的核心创新是给矩阵 A 施加 HiPPO(High-order Polynomial Projection Operators)初始化,使其能有效记忆长程依赖:

# S4 的 HiPPO 矩阵初始化(简化版)
import numpy as np

def hippo_matrix(N):
    """HiPPO-LegS 矩阵"""
    A = np.zeros((N, N))
    for n in range(N):
        for k in range(n):
            A[n, k] = (2*n + 1)**0.5 * (2*k + 1)**0.5 / (n + 1)
        A[n, n] = -(n + 1)
    return A

S4 在 Long Range Arena(LRA)基准上远超 Transformer,但它有两个问题:

  • 参数固定,不随输入变化(时不变
  • 难以进行内容感知的选择性记忆

Mamba(S6):选择性状态空间模型

Mamba 的核心突破是引入了输入依赖的参数(选择性机制):

class MambaLayer(nn.Module):
    def __init__(self, d_model, d_state=16, d_conv=4, expand=2):
        super().__init__()
        d_inner = d_model * expand
        self.in_proj = nn.Linear(d_model, d_inner * 2)  # 投影到 x, z
        
        self.conv1d = nn.Conv1d(d_inner, d_inner, d_conv, 
                                 padding=d_conv-1, groups=d_inner)
        
        # SSM 参数:B, C, Δ 都是输入依赖的
        self.x_proj = nn.Linear(d_inner, d_state * 2 + 1)  # B, C, Δ
        self.dt_proj = nn.Linear(1, d_inner)
        
        # A 是可学习的但不直接依赖输入
        A = torch.arange(1, d_state + 1).float().repeat(d_inner, 1)
        self.A_log = nn.Parameter(torch.log(A))
        self.D = nn.Parameter(torch.ones(d_inner))
        
        self.out_proj = nn.Linear(d_inner, d_model)
    
    def forward(self, x):
        # x: (batch, seq_len, d_model)
        xz = self.in_proj(x)  # (batch, seq, 2*d_inner)
        x, z = xz.chunk(2, dim=-1)
        
        x = x.transpose(1, 2)  # (batch, d_inner, seq)
        x = self.conv1d(x)[:, :, :x.shape[2]].transpose(1, 2)
        x = F.silu(x)
        
        # 选择性 SSM:Δ, B, C 依赖输入
        dt_B_C = self.x_proj(x)  # (batch, seq, 2*d_state + 1)
        dt, B, C = dt_B_C.split([1, d_state, d_state], dim=-1)
        dt = F.softplus(self.dt_proj(dt))  # 确保 Δ > 0
        
        # 离散化 A
        A = -torch.exp(self.A_log)  # (d_inner, d_state)
        dA = torch.exp(A * dt)  # (batch, seq, d_inner, d_state)
        
        # 递推计算隐状态
        h = torch.zeros(x.shape[0], d_inner, d_state, device=x.device)
        ys = []
        for t in range(x.shape[1]):
            h = dA[:, t] * h + B[:, t].unsqueeze(1) * x[:, t].unsqueeze(-1)
            y = (C[:, t].unsqueeze(1) * h).sum(-1)
            ys.append(y)
        
        y = torch.stack(ys, dim=1)
        y = y * F.silu(z)  # 门控
        return self.out_proj(y)

Mamba 的选择性机制让它能像注意力一样"关注"重要 token,同时保持 O(N) 的线性复杂度。

Mamba-2 的改进

Mamba-2 引入了结构化注意力假设,将 SSM 与注意力统一在一个框架下:

  • 引入了多输入多输出(MISO)SSM
  • 支持更大的状态维度(从 16 扩展到 256+)
  • 与 Grouped Attention 的数学等价性证明

RWKV:线性注意力的 RNN 复兴

RWKV(Receptance Weighted Key Value)是一个巧妙的混合架构:训练时可并行,推理时是 RNN

RWKV 的核心公式

# RWKV-7 的 time-mixing(简化)
w_t = sigmoid(可学习参数)  # 衰减因子
k_t = linear(x_t)          # key
v_t = linear(x_t)          # value
r_t = linear(x_t)          # receptance (gate)

# 状态递推(RNN 模式)
kv_t = w_t * kv_{t-1} + k_t * v_t  # 累积 KV
k_sum_t = w_t * k_sum_{t-1} + k_t   # 累积 K

# 输出
y_t = sigmoid(r_t) * (kv_t / k_sum_t)

训练时,这些递推可以通过并行前缀和(parallel prefix sum)在 GPU 上高效计算:

# RWKV 并行训练(伪代码)
def rwkv_parallel(x, w, k, v, r):
    # x: (batch, seq, d)
    # 使用 parallel scan 计算累积
    log_w = torch.log(w)  # 转换到 log 空间
    cum_log_w = torch.cumsum(log_w, dim=1)  # 前缀和
    
    # 利用 log-space 累积避免数值溢出
    log_kv = log_softmax(cum_log_w + torch.log(k * v), dim=1)
    log_k  = log_softmax(cum_log_w + torch.log(k), dim=1)
    
    y = torch.exp(log_kv - log_k) * v  # 归一化输出
    return sigmoid(r) * y

RWKV 的优势:

  • 推理恒定内存:和 RNN 一样,不管序列多长
  • 训练并行:和 Transformer 一样高效
  • 开源生态成熟:RWKV-7 已达到 14B 参数级别

架构对比总览

特性TransformerMamba/SSMRWKVJamba(混合)
训练复杂度O(N²)O(N)O(N)O(N)~O(N²)
推理复杂度(每token)O(N)O(1)O(1)O(1)~O(N)
推理内存O(N)O(1)O(1)O(1)~O(N)
长程依赖✅ 强✅ 强⚠️ 中等✅ 强
信息检索✅ 精确⚠️ 有损⚠️ 有损✅ 混合
并行训练
生态成熟度✅ 最成熟⚠️ 发展中⚠️ 发展中⚠️ 早期

实测性能对比(语言建模)

以下是 Mamba-2.8B、RWKV-7-1.5B 与 Pythia-2.8B(Transformer)在标准基准上的对比:

基准Pythia-2.8BMamba-2.8BRWKV-7-1.5B
LAMBADA (acc)63.3%66.2%64.1%
WikiText (PPL)11.310.611.8
HellaSwag (acc)47.249.848.3
推理速度 (tokens/s)~420~1600~2800
显存 (32K context)18 GB3.2 GB2.1 GB

注:数据基于公开论文和 benchmark,实际表现取决于实现和硬件。

混合架构:取长补短

纯 SSM/RNN 架构在精确信息检索(如"查找第 N 个 token")上仍有不足。混合架构试图解决这一点:

Jamba(AI21 Labs)

Jamba Block = [Mamba Layer × N] + [Self-Attention × 1] + [MLP × 1]
  • 1:7 的注意力/SSM 比例
  • 在保持线性复杂度的同时获得注意力的精确检索能力
  • 52B 总参数(12B 活跃),支持 256K 上下文

Zamba2(Zyphra)

Zamba Block = [Mamba2 Layer × N] + [Shared GQA × 1]
  • 共享注意力层(所有 block 共用一个注意力头)
  • 极致压缩参数量,7B 模型仅需 3B 参数量的推理成本

未来展望

2026 年的趋势已经清晰:

  1. SSM 不再是玩具:Mamba-2 和 RWKV-7 在多个基准上追平甚至超越同规模 Transformer
  2. 混合架构是主流方向:纯 SSM 和纯 Transformer 都不是最终答案
  3. 硬件协同设计:新的 SSM 芯片(如 SambaNova RDU)针对递推计算优化
  4. 超长上下文:SSM 的 O(1) 推理内存使其在百万级 token 场景中具有天然优势

Transformer 不会消失,但它不再是唯一选择。未来的大型模型很可能是 “70% SSM + 20% Attention + 10% MLP” 的混合体——在效率和性能之间找到最优平衡点。

参考文献

  • Gu, A. & Dao, T. (2023). Mamba: Linear-Time Sequence Modeling with Selective State Spaces
  • Peng, B. et al. (2024). RWKV-7: Architectural Innovations in Linear RNNs
  • Lieber, O. et al. (2024). Jamba: A Hybrid Transformer-Mamba Language Model
  • Gu, A. et al. (2022). Efficiently Modeling Long Sequences with Structured State Spaces (S4)

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。