注意力与计算内核精读
从 prefill 和 decode 的复杂度差写起,经过 FlashAttention 和 KV 头变体,到分页 KV、内核融合和 RadixAttention。
- LLM 注意力与计算内核:8 篇精读笔记总览
继量化与推测解码之后的第三部推理优化精读,进入单步前向内部:注意力复杂度、FlashAttention、MQA/GQA/MLA、稀疏与线性注意力、PagedAttention、算子融合、生产验收与 RadixAttention 前缀缓存。 - 注意力计算复杂度是怎么来的?prefill 和 decode 差在哪
推导缩放点积注意力的 FLOPs 公式 4L²d 并说明为什么它与头数无关,用 L/(2d) 判据判断多长的上下文注意力会反超 FFN,推导 KV cache 显存公式并手算 7B 模型 128K 上下文的占用,区分计算密集的 prefill 与访存密集的 decode。 - FlashAttention 原理是什么?为什么又省显存又快
朴素注意力快不起来的真正瓶颈是 HBM 读写而不是 FLOPs。本文讲清 FlashAttention 的三个核心技巧——tiling、online softmax、recompute,手算验证增量式 softmax 与整体一致,给出 IO 复杂度定理,并对比 FA1/FA2/FA3 的对 GPU 架构要求与实测数据。 - MQA、GQA、MLA 有什么区别?KV Cache 该怎么省
三种注意力头变体回答的是同一个问题:每 token 缓存什么。本文给出各自的 KV 元素数公式,讲清 GQA 的 up-training 配方,推导 MLA 的低秩联合压缩并解释 RoPE 与低秩压缩的冲突及 decoupled RoPE 解法,最后手算 70B 与 DeepSeek-V2 的 KV 显存账本。 - 稀疏注意力、滑动窗口和线性注意力怎么选
对抗 L² 复杂度有三条路线:少看位置、少存 KV、换计算范式。本文讲滑动窗口注意力的局部性假设与 StreamingLLM 的 attention sink 修复,推导线性注意力的结合律与 Performer 的核近似,辨析 Mamba 的选择性 SSM 与线性注意力的本质区别,并给出场景选择表。 - PagedAttention 是怎么省下 KV Cache 显存的?
vLLM 论文实测显示,不做管理的 KV 显存有效利用率只有 20.4%–38.2%,浪费来自预留、内部碎片与外部碎片。本文讲清 PagedAttention 的逻辑块到物理块映射与 block table,辨析它与 FlashAttention 的关系,并解释 copy-on-write 如何让并行采样共享 KV。 - 注意力内核怎么优化?算子融合、CUDA Graph 与 Triton
用算术强度 FLOPs/byte 判断一个 kernel 是计算受限还是带宽受限,说明 decode 与 prefill 分别落在 Roofline 的哪一侧。本文讲算子融合的三个层次、Tensor Core 与 FP8 对注意力的意义,对比 CUDA Graph / Triton / torch.compile 的适用场景。 - 注意力优化上线怎么验收?吞吐、显存与精度怎么测
把注意力优化拆成维度、内容、布局、内核四个层次,与「每步成本 × 步数 × 单步内部效率」三因子框架对应。本文给出长上下文系统的完整组件清单,区分精确与近似优化各自的验收方法,并手算一个量化 + GQA + 推测的端到端收益算例。 - SGLang RadixAttention 原理是什么?前缀缓存怎么提升命中率
前缀缓存把「相同前缀、KV 用一次就扔」的浪费消掉。本文推导命中率 h 到 prefill 计算节省的收益模型,讲清 RadixAttention 的 radix tree、LRU leaves-first 驱逐与引用计数,排列 GPU→CPU→分布式→磁盘的 KV 存储层级,并解释 cache-aware routing 与 PD 分离。