Transformer 为什么比 RNN 快

一句话速记

说「快」时默认指训练与单次前向在 GPU 上更好并行:RNN 在时间维上步与步串行,Transformer 在训练阶段可对全序列各位置用矩阵一次性算自注意力。推理阶段自回归生成本质仍是步进,但单次前向内部仍是高并行。

必须先拆「训练 vs 推理」,不拆容易被追问穿。

先澄清:「快」指什么

阶段RNN / LSTMTransformer谁通常更快、为什么
训练(有整句标签,一次前向要算全序列)时间步 t 依赖 t−1 的 h_{t-1}时间维上串行自注意力在实现上为 Q、K、V 与序列长度 n 的矩阵乘n 个位置在硬件上可并行训练通常 Transformer 更吃满 GPU、 wall-clock 更短(同算力、可比设置下,粗结论)
推理(自回归,一个一个吐 token)每步只算一个 h_t,步与步仍串行每步要算当前已生成前缀上的注意力,步与步仍串行;但单步前向内部是大矩阵每步延迟上不一定「RNN 更慢、Transformer 更快」的绝对关系;吞吐上往往仍是 Transformer 更有优势(大 GEMM、工程优化多)

所以:真正拉开差距的,是「训练 / 有监督的一次前向」里能不能把时间维并掉,不是「Transformer 发 token 不要时间」。

为什么训练阶段 Transformer 能并行、RNN 不能

  • RNN 一步h_t = f(x_t, h_{t-1})。算 h_t 必须先有 h_{t-1}时间维依赖链 → 无法对 t=1…n 在单遍里完全并行完整个网络的前向(同一层上)。
  • Transformer 一步(单层):每个位置 i 的表示由所有位置的 K、V 与当前 Q 一起算。实现上为矩阵运算(形状大致 (n, d)(d, d) 类乘法),单遍前向里同时更新所有位置(在该层内)。

和 GPU 的关系(加分点)

  • GPU 对 大矩阵乘(GEMM) 极友好;大量小步串行 则容易「吃不饱」。
  • RNN 长序列 = 多步小算子串成链;Transformer 在单层内 = 少批大矩阵更匹配 GPU 形态(粗直觉,具体还看实现和 batch)。

复杂度(避免被追问时懵)

  • RNN 单序列单步(一个时间步、一层):约 O(d²) 量级(与 d 相关的矩阵向量乘,取决于实现)。

  • 全序列 n、一层(RNN):必须走 O(n) 个时间步,总代价约 O(n·d²),且时间步串行

  • Self-Attention 一层(序列长度 n、隐藏维 d、单头,忽略常数与多头):
    Q, K, VO(n·d²),算 QK^TO(n²·d),再与 V 为 O(n²·d)
    随 n 的瓶颈往往是 O(n²·d)(当 n 很大时压过线性项)。

  • 重要:Transformer 训练快 说的是 能并行 + 大矩阵适合 GPU不是 说复杂度一定比 RNN 低。n 很大时,注意力的 n² 还会变成长上下文瓶颈(FlashAttention 等要解决的也是这块)。

和「路径长度」那套话的区别

  • RNN:信息从位置 1 到位置 n 在隐状态里要「走」约 O(n) 步,长距依赖还衰减。
  • Transformer(单层自注意力):任意两位置在一层内经注意力直接连边,表示路径 O(1) 层(指深度),利于建模远距关系。

这一点通常说成「长距离、不经过 O(n) 个时间步的压缩」,更偏效果与表示能力「快」 主要指 计算并行与硬件利用率。别混成一句糊话。

延伸追问

  • Q:推理时生成一句话,也是 Transformer 更快吗?
    答:自回归下外层的步数仍是「每生成 1 个 token 要跑 1 次前向」;RNN 也一样。快不快看单步前向的算子形态、工程(KV Cache 等)和算力。不要答「推理一定快一倍」这种绝对话。

  • Q:那 Transformer 相对 RNN 的核心优势是什么?
    答三点拆开:(1) 训练时可并行 (2) 远距依赖表示路径短 (3) 规模化(堆层、大矩阵)在工程上更顺。不打包成「就是快」。

  • Q:Transformer 有没有比 RNN 更慢的时候?
    答:n 小、层浅、要极致低延迟的端侧 有时小 RNN 更省;n 很大 时注意力 O(n²) 显存和算力都顶;长上下文要用 FlashAttention、稀疏注意力、线性注意力、RNN/Mamba 系等折中。

  • Q:KV Cache 是什么、跟「快」有啥关系?(追问常见)
    答:自回归时已生成位置的 K、V 不重复算,缓存起来,新一步只算新 token 的 K、V 并拼上,避免每步 O(n²) 里重复部分爆掉。这是推理工程侧的「快」。

我的记法

TODO

状态

  • 已背速记
  • 能讲通俗版
  • 能答追问
  • 在实际场景中用上过

参考资料

  • Vaswani et al., 2017(并行与注意力动机)
  • FlashAttention: Fast and Memory-Efficient Exact Attention(长序列工程)