Transformer 与模型架构
方法比较 高级 重要度 5/5 面试就绪 理解阶段 约 18 分钟

FlashAttention、稀疏注意力、线性注意力与 PagedAttention 怎么区分

在模型函数、计算稀疏性、内存调度和服务阶段四个维度比较常见注意力优化,给出可执行的选择规则。

发布于 2026-09-01

本文目录

    FlashAttention 官方仓库在 A100 上报告的前向与反向性能基准。

    图:官方仓库中的 A100 前向与反向基准;倍数只适用于图中给定参数。来源:Dao-AILab/flash-attention,作者 FlashAttention contributors,许可 BSD-3-Clause。

    比较问题

    这些名称都与“长上下文或注意力效率”有关,但优化对象不同。若只按“省显存、加速”归为一类,就无法回答它们是否改变模型函数、作用于训练还是服务、能否叠加使用。

    统一前提

    比较时固定四个问题:

    1. 是否仍计算标准 softmax(QKᵀ)V?
    2. 是否减少 query-key 配对数量或用核函数改写?
    3. 优化的是注意力中间激活,还是自回归服务中的 KV Cache 管理?
    4. 收益主要出现在训练、Prefill、Decode,还是并发调度?

    核心差异

    方法主要改变是否保持标准全注意力主要收益位置主要代价
    FlashAttention分块顺序、在线 Softmax、片上复用是,数值容差内精确训练与长序列 Prefill 的激活和 HBM 流量kernel 支持受硬件、shape、dtype 限制
    稀疏注意力只计算选定连接模式否减少有效 query-key 对稀疏模式可能漏掉依赖,硬件利用率不必然高
    线性注意力用核技巧或状态递推改写注意力否把序列复杂度降到近似线性表达、稳定性和训练行为与 Softmax 注意力不同
    PagedAttention用分页思想管理 KV Cache 块不直接改变注意力数学在线服务的 KV 利用率、动态批处理和并发引入块表、调度和运行时复杂度

    FlashAttention 和 PagedAttention 可以同时存在:前者负责某次注意力 kernel 怎样算,后者负责许多请求的历史 K/V 怎样分配和寻址。它们不是互斥替代品。

    选择规则

    • 模型行为必须保持不变,只想减少训练或 Prefill 激活:先检查框架是否能选中 FlashAttention 类 backend。
    • 上下文长到全连接本身的算术量不可接受,并允许重新训练或质量变化:评估稀疏、滑窗、块稀疏或线性替代方案。
    • 在线服务显存被大量、长度不一的 KV Cache 占满:问题首先属于 KV 管理和调度,应考虑分页、前缀复用、量化或卸载。
    • Decode 的 TPOT 受历史 K/V 读取限制:不能仅凭训练 benchmark 选择方案,要针对 T_q=1 的真实负载测量。

    选择时先定位瓶颈,再决定优化层次。不要从一个热门名词反推问题。

    反例与边界

    • “FlashAttention 把复杂度从二次降为线性”只适用于中间存储的表述,不能用来描述全注意力算术量。
    • “稀疏连接更少,所以一定更快”忽略了稀疏 kernel 的索引、负载均衡和硬件利用率。
    • “PagedAttention 是新的注意力公式”错误;它的核心是服务运行时对 KV Cache 的分页管理。
    • “线性注意力可直接替换现有模型”通常不成立;模型结构和训练过程已经改变,需要质量与稳定性验证。

    面试输出

    先按优化层次分组:FlashAttention 是保持标准注意力函数的 IO-aware kernel;稀疏和线性注意力改变参与计算的连接或数学形式;PagedAttention 管理推理服务中的 KV Cache。然后说明它们可以组合:模型可使用 GQA,kernel 使用 FlashAttention,服务层再使用分页 KV 管理。最后把选择落到训练/Prefill/Decode、质量要求、硬件和负载。

    主动回忆

    1. 为什么 FlashAttention 与 PagedAttention 可以同时使用?
    2. 哪些方法需要重新训练或至少做模型质量回归?
    3. “显存从二次降为线性”分别可能指中间激活还是 KV Cache?
    4. 若线上瓶颈是大量短请求排队,优化注意力 kernel 是否一定是第一优先级?

    参考资料

    输入关键词,查找全部技术文章。

      搜索范围:正文、标题、分类和标签