Chapter 05

从经典到现代:2017 → 2026 的演化

第 04 章暴露了 KV-cache 显存与 O(n²) 两大成本——本章看 2017 原版如何被一件件替换成 2026 的 decoder-only LLM 配方,其中一半的改动正是冲着那两个成本去的。

本章交付:每项改动的替换对象 + 日期 + 驱动原因,以及 2026 标准 decoder block 全貌 | 带走的能力:看到任何开源模型配置,能逐项对照说出"这里用的是哪年的哪个方案,取代了什么"

读完本章,你脑子里会多出这几条

  • 公式核心(scaled dot-product / 残差 / 堆叠)17 年没变,变的是周边零件:位置编码、归一化、激活函数、KV 头共享方式。
  • 现代标配 = RoPE + RMSNorm/pre-norm + SwiGLU + GQA + FlashAttention;约 2019–2023 年完成切换,现已稳定。
  • 仍在快速变化(截至 2026-06):MoE 路由粒度、QK-norm 普及、MLA 低秩 KV 压缩、长上下文方案。
  • SSM/Mamba 长序列推理吞吐有优势,但 2026 年 transformer 仍主导前沿——所有顶级模型(GPT / Claude / Gemini / Llama)仍是 transformer。

5.1总览:2017 block vs 2026 block

原版公式一行没改,换掉的是套在公式外面的每一个零件。

第 03 章的完整 block 长这样:输入 → LayerNorm(post) → 多头自注意力(MHA + 正弦位置编码) → 残差 → LayerNorm(post) → ReLU-FFN → 残差。九年后,每个括号里的东西都换了;括号的数量和顺序(注意力 + FFN 交替堆叠、残差连接)原封不动。图 5.1 把两个 block 并排对照。

2017 原版 (Vaswani et al.) 2026 现代标配 输入 embedding 正弦位置编码 MHA(全 KV 头) 残差 + LayerNorm (post-norm) ReLU FFN 残差 + LayerNorm (post-norm) 输出 输入 embedding RoPE(注意力内) RMSNorm → GQA (pre-norm) 残差 RMSNorm → SwiGLU (或 MoE,pre-norm) 残差 输出 → RoPE (2021) → GQA (2023) → pre-norm (2019–20) → SwiGLU (2020) 已替换 未变
图 5.12017 原版与 2026 现代 decoder block 并排对照。红色高亮为已替换组件。注意:残差骨架和"注意力 + FFN 交替"结构九年未动;变的是每个槽位里填的具体方案。

以下各节按改动分层展开,每节注明替换了什么、何时、为何——以及替换后的代价与权衡。

5.2位置编码:sinusoidal → RoPE → 长上下文

RoPE(2021)把位置信息旋转进 Q/K,使点积天然只感知相对距离,而非绝对下标——这让位置外推从"强行插值"变成"旋转角度的缩放"。

为什么要替换正弦编码

第 03 章的正弦位置编码把位置向量加到 embedding 上,之后它随残差流传递。两个问题:① 它编码绝对位置,超出训练长度的位置就没见过;② 位置信息和语义信息混在同一个向量里,attention 计算时无法独立控制。

RoPE(Rotary Position Embedding,Su et al. 2021,arXiv 2104.09864)的做法:不再把位置向量加到 embedding,而是在计算注意力之前,把 Q 和 K 各自在二维子空间里按 θᵢ = pos / base^(2i/d) 旋转。两个相对距离为 m − n 的位置,其旋转后的点积只依赖 m − n,与绝对位置无关。结果:模型对相对距离天然敏感,绝对位置反而不重要。

RoPE 旋转公式数学
给 Q/K 每个头的 d_k 维向量,按 i = 0,1,...,d_k/2-1 分成 d_k/2 个二维对:

  旋转角:θᵢ = 1 / (base^(2i / d_k))    base = 10000(原版),Llama3 = 500000

  对第 pos 个 token 的第 i 对分量 (xᵢ, xᵢ₊₁):
    x'ᵢ   =  xᵢ · cos(pos·θᵢ)  −  xᵢ₊₁ · sin(pos·θᵢ)
    x'ᵢ₊₁ =  xᵢ · sin(pos·θᵢ)  +  xᵢ₊₁ · cos(pos·θᵢ)

  关键性质:Q_m · K_n 的结果只依赖 (m − n),与 m、n 的绝对值无关。

RoPE 现已是 universal 方案:Llama 1–4、Mistral、Qwen 1–3、DeepSeek-V2/V3、Gemma 2/3、Phi 3/4 全部采用(截至 2026-06)。

长上下文扩展

RoPE 把"训练长度之外"的问题转化为"超出训练的旋转角度",可以用缩放来处理:

  • Position Interpolation(Meta 2023):把超出的位置下标线性压缩到训练范围内,再微调。
  • YaRN(ICLR 2024):分频段对 RoPE base 做非均匀缩放,低频分量(长程依赖)拉伸,高频分量(局部结构)压缩。Llama 3.1(2024-07)用 YaRN 把上下文从 8K 扩到 128K,base 提至 500000。
  • iRoPE / NoPE(Llama 4,2025-04):部分层完全不用位置编码(NoPE),让模型自行从注意力模式中提取距离信息,配合 1M token 的超长上下文。
已退场 · ALiBi

ALiBi(2022,BLOOM/MPT 使用)通过给注意力分数加线性距离惩罚实现相对位置,无需旋转操作。2024 年后基本退场——RoPE 在模型质量和扩展性上均优,且已有大量工程基础设施积累。

5.3归一化与激活:RMSNorm、QK-norm、SwiGLU

三处替换各自针对不同失效模式:RMSNorm 降计算成本、pre-norm 解决深层训练不稳定、SwiGLU 提激活表达力、QK-norm 防注意力 logit 爆炸。

RMSNorm(Zhang & Sennrich 2019)——替换 LayerNorm

第 03 章的 LayerNorm 先减均值、再除标准差、再缩放偏移。RMSNorm 丢掉均值中心化,只算 RMS(均方根)再缩放:

LayerNorm vs RMSNorm数学
LayerNorm(x) = (x − μ) / √(σ² + ε) · γ + β      μ = mean(x), σ² = var(x)

RMSNorm(x)  = x / RMS(x) · γ                     RMS(x) = √(mean(x²) + ε)

区别:RMSNorm 省掉均值计算和偏移参数 β。
速度:快 10–15%(Llama 2 报告;实测在 d_model=4096 时约 12%)。

截至 2025,53 个主流开放模型中 41 个使用 RMSNorm(Raschka 2025 调查)。

pre-norm——替换 post-norm

原版是 LayerNorm(x + Sublayer(x))(post-norm:norm 在残差相加之后)。现代是 x + Sublayer(RMSNorm(x))(pre-norm:norm 在 sublayer 内,残差捷径完全不被归一化)。

第 03 章已论证过:post-norm 破坏 identity 捷径(顶层梯度被归一化后缩小),超过 12 层时需精细 warmup。pre-norm 让残差捷径完全绕过归一化,训练任意深度都稳定,从 GPT-2 起成为标准(截至 2019–2020 完成切换)。反直觉:浅层模型 pre-norm 质量略逊 post-norm;切换是为了深层可扩展性,不是质量提升。

QK-norm(2024–2025)——新增,防注意力 logit 爆炸

随着模型加深、序列加长,Q/K 点积在某些头上会产生极大值(logit 爆炸),导致 softmax 近 one-hot、注意力退化。QK-norm 在头内对 Q 和 K 各做一次 RMSNorm,把点积量级稳住。Gemma 3(Google 2025)、OLMo 2(AI2 2024)、Qwen3(Alibaba 2025)、Kimi K2(Moonshot 2025-06)均已采用。成本几乎为零——只是两个额外的 RMSNorm 操作。

SwiGLU(Shazeer 2020)——替换 ReLU/GELU

第 03 章的 FFN 用 max(0, xW₁+b₁)W₂(ReLU)。现代 FFN 改用 SwiGLU/GeGLU(Shazeer 2020),用门控机制替换单调激活:

SwiGLU FFN数学
原版 FFN(ReLU):FFN(x) = max(0, xW₁) · W₂
  W₁: (d_model, d_ff)   d_ff ≈ 4·d_model

SwiGLU FFN:FFN(x) = (xW₁ ⊙ Swish(xW₂)) · W₃
  3 个权重矩阵:W₁, W₂: (d_model, d_hidden)   W₃: (d_hidden, d_model)
  d_hidden = 2/3 · d_ff   ← 降维补偿第三个矩阵带来的参数增量
  Swish(z) = z · sigmoid(z)

参数量:原版 2·d_model·d_ff,SwiGLU ≈ 3·d_model·(2/3·d_ff) = 2·d_model·d_ff  → 基本持平

53 个主流开放模型中 38 个使用 SwiGLU 或 GeGLU(Raschka 2025 调查)。Llama/Mistral/DeepSeek/Qwen/Gemma/Phi 全部采用。

想一想

SwiGLU 比 ReLU 多一个矩阵 W₂,为什么说参数量"基本持平"?如果不把 d_hidden 降到 2/3,参数量会怎样?

展开答案(先停 10 秒再点)

原版 ReLU FFN 有两个矩阵:W₁ (d_model × d_ff) 和 W₂ (d_ff × d_model),总参数 2·d_model·d_ff。SwiGLU 有三个矩阵:W₁、W₂ 各 (d_model × d_hidden) 和 W₃ (d_hidden × d_model),总参数 3·d_model·d_hidden。令 d_hidden = 2/3·d_ff,则总参数 = 3·d_model·(2/3·d_ff) = 2·d_model·d_ff,与原版持平。若不缩减 d_hidden(保持 d_ff),参数量变为 3/2 倍——等于每层 FFN 增加 50%,整体模型显著变大。

5.4注意力效率:MHA → MQA → GQA → MLA

KV-cache 的显存成本正比于 K/V 头的数量——这条链上的每一步都在压头数,代价是不同程度的质量损失。

第 04 章建立了 KV-cache 的成本公式:seq_len × layers × heads × head_dim × 2 × dtype_bytes。7B/32层/32头/d128/8K/fp16 ≈ 8 GB。压缩 KV 头数量是最直接的降显存路径。

MHA 原版(2017) Q₁ Q₂ Q₃ Q₄ K₁ K₂ K₃ K₄ V₁ V₂ V₃ V₄ 4 K/V 头 cache = 4× MQA Shazeer 2019 Q₁ Q₂ Q₃ Q₄ K V 1 K/V 头 cache = 1×(掉质量) GQA ✓ 现主流 Ainslie 2023 Q₁ Q₂ Q₃ Q₄ K₁ K₂ V₁ V₂ 2 K/V 头(g=2) cache = 2×(质量近 MHA) MLA DeepSeek-V2 2024-05 Q₁ Q₂ Q₃ Q₄ c_KV 低秩潜向量 按需上投 K/V cache = 低秩 c_KV 省 93%(DeepSeek-V2) K 头(缓存) V 头(缓存) Q 头(不缓存)
图 5.2MHA / MQA / GQA / MLA 的 KV 头共享对照(以 4 个 Q 头为例)。注意:Q 头不进 KV-cache;压缩目标是 K/V 头。GQA 是当前主流;MLA 省显存最多但引入上投计算,截至 2026-06 仅 DeepSeek 系列采用。
表 5.1 · 注意力 KV 压缩方案对比(截至 2026-06)
方案出处KV 头数质量代表模型
MHA Vaswani 2017 = Q 头数(h) 基准 GPT-2、原版 BERT
MQA Shazeer 2019 1 大模型明显掉 早期 Falcon、PaLM(部分)
GQA Ainslie et al. 2023 g(Q头数/g,通常 8) 接近 MHA Llama 2-70B 起、Llama 3 全系、Mistral、Qwen2/3、Gemma 2/3、Phi 3/4
MLA DeepSeek-V2 2024-05 低秩 c_KV(相当于极少头) 相当或更好(报告内) DeepSeek-V2/V3/R1

何时选 GQA vs MLA?GQA 是通用首选:工程成熟、质量稳定、所有主流推理框架均已优化。MLA 在极长上下文或显存严重受限场景(如 DeepSeek-V2 部署在 A100×8 上跑 671B 模型)有明显优势;但需要在推理时对低秩潜向量做上投运算,且截至 2026-06 仅 DeepSeek 系列在生产中验证过——其他厂商仍在观望。

5.5FlashAttention:不近似地解决 O(n²)

FlashAttention 不改变注意力的数学结果,只改变在 GPU 上怎么算——把 n×n 矩阵分块留在 SRAM 里,避免落地 HBM,从而把显存从 O(n²) 降到 O(n)。

第 04 章指出 O(n²) 的痛点:n=8192 时,每头注意力矩阵 ~268M floats,必须写回 HBM(高带宽显存)再读回来做 softmax——这是显存瓶颈,不只是算力瓶颈。标准 CUDA 核不断往返 HBM,慢在 IO。

IO-aware 分块的关键洞察

GPU 的 SRAM(片上内存,A100 约 20 MB/SM)远快于 HBM(约 80 GB,带宽 2 TB/s)。FlashAttention 把 Q/K/V 切成小块,在 SRAM 内完成 softmax 分子、分母的累积,直接输出 O——整个过程不落地 n×n 矩阵。因为分块计算在数学上等价(利用 online softmax 的分母可拆合性),输出结果与标准注意力逐 bit 相同,不是近似。

FlashAttention 核心思路(伪代码)概念
标准注意力:
  S = Q · Kᵀ / √d_k        # (n, n) — 必须落地 HBM
  P = softmax(S)            # (n, n) — 再次落地
  O = P · V                 # (n, d_v) — 结果

FlashAttention(分块):
  将 Q 切成块 Q₁, Q₂, ...;将 K, V 切成块 K₁, K₂, ...
  对每块 Qᵢ,遍历所有 Kⱼ, Vⱼ:
    在 SRAM 内算 Sᵢⱼ = Qᵢ · Kⱼᵀ / √d_k
    用 online softmax 累积分子/分母(safe softmax 技巧)
    累积对 Oᵢ 的贡献
  只把最终 Oᵢ 写回 HBM

  结果:HBM 读写 O(n) 而非 O(n²);输出与标准注意力逐 bit 相同。

三个版本的演进:FlashAttention-1(Dao et al. 2022,arXiv 2205.14135,NeurIPS 2022)建立分块框架,2–4× 速度提升;FlashAttention-2(2023)改进线程块分配,GPU 利用率从 ~35% 提升到 ~70%,成为 PyTorch/vLLM 等框架的默认 kernel;FlashAttention-3(2024-07,arXiv 2407.08608,NeurIPS 2024)针对 Hopper(H100)架构,用 warp 专门化 + FP8,吞吐达 ~740 TFLOPs(fp16),仍处于向生产铺开阶段(截至 2026-06 部分框架已合并)。

洞察 · 不近似 vs 近似

线性注意力(Katharopoulos 2020)、performer(Choromanski 2020)等方案用核函数近似把 O(n²) 降到 O(n),但质量损失明显。FlashAttention 是唯一在不改变数学结果的前提下解决 IO 瓶颈的方法——这是它能成为标准 kernel 而非"研究方向"的原因。

5.6长上下文:sliding-window 与 attention sinks

即使有 FlashAttention,超长序列(64K+)的注意力仍然太贵——sliding-window 把每个 token 的注意力范围限制在 W 个邻居内,把复杂度从 O(n²) 降到 O(n·W)。

Mistral sliding-window attention(Jiang et al. 2023,Mistral 7B 论文):每个 token 只注意前后 W 个 token(Mistral 7B 取 W=4096),超出窗口的 token 不计算、不缓存。复杂度从 O(n²) 变为 O(n·W),n 很大时是巨大节省。代价:无法对窗口外的远程上下文直接注意。Gemma 3/Mistral 2 用 sliding-window 与全注意力层交替(全注意力层作为远程连接点),兼顾局部与全局。

StreamingLLM attention sinks(Xiao et al. 2023-09):观察到 LLM 注意力权重高度集中在序列最初几个 token(称为 "attention sink"),即使这些 token 语义无关。保留最初 4 个 token 的 KV,配合 sliding-window,就能在几乎无限流式序列上稳定推理——不需要重训练,是推理时的技术而非训练改动。这不是 context window 扩展,而是流式推理稳定性技巧。

5.7MoE:把 FFN 变稀疏

MoE(Mixture of Experts)把每层的 dense FFN 换成 N 个"专家"FFN,每个 token 由 router 只激活其中 top-k 个——total 参数巨大,active 参数(实际计算)远小于 total。

第 03 章的 FFN 是一个对所有 token 都用的 dense 层。MoE 将它拆成多个专家 FFN,加一个轻量 router(通常是一层线性 + softmax),router 为每个 token 选出 top-k 个专家,该 token 只经过这 k 个专家的计算。

MoE FFN 前向(简化)概念
dense FFN:output = FFN(x)          # 所有 token 用同一个 FFN

MoE FFN:
  scores = softmax(x · W_router)    # (vocab, N_experts)
  top_k_idx = argtopk(scores, k)    # 每 token 选 k 个专家
  output = Σᵢ∈top_k scores[i] · Expertᵢ(x)

active 参数 = k/N × total 参数
计算量(FLOPs)≈ dense 模型的 k/N 倍
显存(推理,单机单卡)≈ 需装下所有 N 个专家权重 → 通常需多卡
token x Router top-k 路由 Expert 1 ✓ Expert 3 ✓ Expert 2 ✗ Expert 4 ✗ 加权求和 Σ score·E(x) 输出 未激活:权重占显存但不算 active = k/N × total FLOPs 本例 k=2, N=4 → 激活 50%
图 5.3MoE 路由示意(k=2,N=4 专家)。红色为被激活的专家,灰色虚线为未激活专家(权重占显存,但对本 token 不执行计算)。注意:显存需装下全部专家;active 参数决定推理速度;total 参数决定模型容量。

前沿 MoE 模型演进(全部 dated):

  • Mixtral 8×7B(Mistral AI,2024-01):46.7B total / ~12.9B active,top-2 路由,8 个专家,开创性地将开源 MoE 推向实用。
  • DeepSeek-V3(DeepSeek,2024-12):671B total / 37B active,细粒度 256 专家 top-8 + 共享专家(每 token 必过)+ 无辅助损失负载均衡,训练成本 ~$5.6M(H800 集群)。
  • Llama 4 Maverick(Meta,2025-04):400B total / 17B active,128 专家 + 1 共享专家,iRoPE 支持 1M token 上下文。
  • Qwen3-235B(Alibaba,2025-04):235B total / 22B active,继续细粒度路由趋势。
  • Kimi K2(Moonshot AI,2025-06):1T total / ~32B active,截至 2026-06 公开的最大 MoE 模型之一。

截至 2026-06,MoE 是前沿开放模型的主流扩展路径——几乎所有新一代超大模型都采用稀疏 MoE 而非继续堆 dense 参数。路由粒度(专家数量、每 token 激活数)和负载均衡方案仍在快速演化。

5.82026 标准 decoder block 配方

把前面各节的替换拼在一起,就是 2026 年任何主流开源 LLM 的单层 decoder block。

2026 标准 decoder block(前向)数学 / 伪代码
输入:x  (batch, seq_len, d_model)

── 注意力子层 ──────────────────────────────────────────────────
h  = RMSNorm(x)                        # pre-norm(替换 post-norm LayerNorm)
q  = h · W_Q    # (batch, seq, d_model)
k  = h · W_K    # (batch, seq, g_heads × head_dim)   g_heads « num_q_heads
v  = h · W_V    # 同上
q, k = apply_RoPE(q, k, positions)     # 旋转编码(替换 sinusoidal 加法)
# 可选:QK-norm(Gemma3/Qwen3/Kimi K2)
q, k = RMSNorm_per_head(q), RMSNorm_per_head(k)
attn = FlashAttention(q, k, v, causal_mask)   # IO-aware 精确计算
x    = x + attn · W_O                  # 残差(未被 norm)

── FFN 子层(dense)────────────────────────────────────────────
h  = RMSNorm(x)                        # 第二个 pre-norm
x  = x + SwiGLU_FFN(h)                 # SwiGLU(替换 ReLU)+ 残差

── FFN 子层(稀疏 MoE,前沿大模型)─────────────────────────────
h  = RMSNorm(x)
x  = x + MoE_FFN(h, router)            # router 选 top-k 专家

── 可选扩展 ────────────────────────────────────────────────────
部分层用 sliding-window attention(替换全局 attention,Gemma3/Mistral2)
部分层用 NoPE(无位置编码,Llama4 每 N 层一个)

对照回图 5.1:括号里每个槽位现在都有了确定的方案。核心公式(scaled dot-product、残差、堆叠 N 层)从未动过。

5.9挑战者:SSM/Mamba 与混合模型

选择性 SSM 在长序列推理吞吐上确实赢过 transformer,但 MMLU / 多跳推理质量在 2026 年仍落后——transformer 仍主导前沿。

状态空间模型(SSM)把序列建模转化为线性动态系统,递推状态而非建立 n×n 注意力矩阵。Mamba(Gu & Dao 2023-12)引入选择性 SSM:状态转移矩阵 A、B、C 都是输入相关的(不再是全局固定的),赋予模型动态忽略或保留信息的能力。

优势(经过 2024 年实测):

  • O(n) 时间和显存:推理时不需要 KV-cache,状态大小固定——长序列吞吐比 FlashAttention transformer 高,最高约 5× 速度(长上下文场景)。
  • 适合流式无限长序列:状态是定长的,不随上下文增长。

局限(同样经过实测,honest assessment):

  • MMLU / 多跳推理仍落后:NVIDIA 2024 在 8B 规模系统对比中确认,Mamba 在通用知识和多步推理任务上仍弱于同规模 transformer。
  • 反直觉:训练吞吐更低。Mamba 的效率赢在推理;训练阶段 GPU 并行度更低,FlashAttention transformer 反而更快训练。
  • 电话簿查找类任务(需要精确随机访问历史 token):状态压缩会丢失精确位置信息,transformer 的 KV-cache 在这类任务上更可靠。

近期动向(全部 dated):

  • Mamba-3(ICLR 2026,Princeton):用"半状态尺寸"换推理速度,质量与 Mamba-2 接近。
  • RWKV-7 "Goose"(2025-03):线性 RNN 架构,无注意力矩阵,长序列下 memory 固定。
  • Jamba(AI21 Labs,ICLR 2025):混合架构,43% Mamba-2 层 + 7% attention 层 + 50% MLP,长上下文推理吞吐约 3× 纯 transformer;这是"混合模型"是近期可信替代路线的直接证据。
诚实结论(截至 2026-06)

所有顶级前沿模型(GPT-4o / Claude / Gemini / Llama 4)仍是 transformer。SSM/Mamba 在长序列推理吞吐上有真实优势,混合模型是近期长上下文/吞吐场景的可信路线——但通用推理质量尚未追上。这个结论有明确的时效性:如果 Mamba-4 或某个混合模型在 MMLU 和多跳推理上与 transformer 齐平,结论将改变。

§本章 self-check

先合上教程,把能想到的答案写在编辑器里。写完再点开对照——直接点开等于把这节当再读一遍。

  1. RoPE 把位置编码的方式从"加到 embedding"改成了什么?它为什么天然支持相对位置,而正弦编码不行?
  2. FlashAttention 声称"不近似"——意思是什么?它和线性注意力(Performer 等近似方法)的根本区别在哪里?
  3. 选择/判断题:一家公司要在单节点 8×A100 上部署一个 200B 参数的模型做长文档(64K token)推理,对延迟敏感、对 KV-cache 显存极其紧张。从 GQA 和 MLA 中选哪个?给出理由,并说明你放弃另一个的代价是什么。
  4. SSM/Mamba 的"训练吞吐低于 FlashAttention transformer"是反直觉结论——解释为什么,以及 Mamba 的效率优势具体体现在哪个阶段。
答案(先做完再展开)
  1. RoPE 把 Q/K 在二维子空间内按 pos × θᵢ 角度旋转。两个位置的点积结果只依赖它们的相对距离 m − n,与绝对位置无关——旋转角之差抵消了绝对值。正弦编码是加法混入 embedding,点积展开后含绝对位置项,无法分离。
  2. FlashAttention 通过分块+online softmax,在 SRAM 内完成全部计算,输出与标准注意力逐 bit 相同(online softmax 在数学上等价)——改的是 IO 路径,不改数学。线性注意力用核函数近似 softmax,数学结果不同,会丢失精度,尤其在精确 token 检索任务上。
  3. 选 MLA。理由:MLA 把 KV 压缩为低秩潜向量,DeepSeek-V2 实测省 93.3% KV-cache 显存——对 64K 长文档显存极度紧张的场景,这是决定性优势。代价:放弃 GQA 意味着放弃更成熟的工程支持(主流推理框架 MLA 优化较少)、以及未经其他厂商大规模验证的可靠性;MLA 在推理时需对低秩潜向量做上投运算,有额外计算开销。若显存不是瓶颈,GQA 更稳妥。
  4. Mamba 的选择性 SSM 在 GPU 上训练时,A/B/C 矩阵是输入相关的(不固定),无法像 attention 那样把整个序列的操作合并成大规模矩阵乘法(GEMM),GPU 并行度更低;而 FlashAttention transformer 的 Q×K 是大 GEMM,GPU 利用率更高。Mamba 的效率优势在推理阶段:状态是定长的递推,不需要 KV-cache 增长,长序列推理时间/显存是 O(n) 而非 O(n²)。