M4-037M4: Sequences & TransformersAttention Variants (MHA / MQA / GQA)Medium
Mastery:
Attention Variants (MHA / MQA / GQA): 解释稀疏注意力与滑动窗口注意力。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 只让每个 token 关注部分位置(局部窗口 / 固定稀疏模式 / 学习式),把 O(L²) 降到 O(L·w) 或 O(L·k)。
📌 Key Takeaways
- •滑动窗口:每个 token 只看前后 w 个(Mistral/Longformer)
- •固定稀疏模式(strided/dilated)或学习式稀疏(Top-k)
- •局部 + 少量全局 token 的混合可保持全局信息通路
📐 Mathematical Derivations
数学机理:<strong>动机</strong>——标准注意力复杂度 O(L²d),长序列下不可行;而经验观察显示<strong>注意力高度局部化</strong>(大部分权重集中在邻近位置)与<strong>稀疏</strong>(只有少数位置被显著关注)。<strong>滑动窗口注意力(SWA)</strong>——限制每个 query 只关注最近的 w 个 key:Attn_i=softmax(Q_iK_{i−w:i}ᵀ)V_{i−w:i},复杂度降到 <strong>O(L·w·d)</strong>(线性于长度)。<strong>关键问题</strong>——纯局部窗口使信息无法跨越超过 w 的距离;解法有两条:(a) <strong>堆叠扩大感受野</strong>——L 层窗口 w 的网络,感受野为 L·w(类似 CNN);(b) <strong>混合全局 token</strong>——保留少量'全局 token'(如序列开头、特殊标记)供所有位置关注,或每隔几层插入一层全注意力(<strong>层间交替</strong>,如 Gemma-2/Mistral 的'SWA + 全注意力交替')。<strong>其他稀疏模式</strong>:(a) <strong>固定模式</strong>(strided/dilated,如 Longformer 的'局部窗口 + 空洞窗口 + 全局');(b) <strong>学习式稀疏</strong>(Top-k 注意力,只保留分数最高的 k 个位置);(c) <strong>块稀疏</strong>(把序列分块,只算部分块的注意力)。<strong>为什么 GPU 上加速有限</strong>——稀疏注意力的 FLOPs 虽降低,但 (a) <strong>内存访问不规则</strong>(难以利用 GPU 的连续访存与张量核心)、(b) <strong>仍需读取被屏蔽位置的信息</strong>(除非有专门的稀疏 kernel)、(c) <strong>负载不均衡</strong>(不同 query 的稀疏模式不同)。故朴素稀疏实现常<strong>不比稠密快</strong>,需专门 kernel(如 FlashAttention 的块稀疏变体)才能兑现加速。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'稀疏 ≠ 快'的教训</strong>——这是高效注意力领域的核心工程现实;FLOPs 降低只是必要条件,还需 (a) 规则化稀疏模式(块对齐)、(b) 定制 kernel、(c) 与 Flash Attention 的 IO 优化结合。② <strong>滑动窗口的实用性</strong>——SWA 因模式规则(连续窗口)、易于 kernel 实现,是<strong>最成功的稀疏方案</strong>;Mistral-7B、Gemma-2 等采用'SWA + 全注意力交替',在保持长上下文能力的同时大幅降低计算。③ <strong>与 KV cache 的关系</strong>——SWA 使 KV cache 只需保留最近 w 个(环形缓冲),显存从 O(L) 降到 <strong>O(w)</strong>(常数);这是长上下文推理的重要优势(StreamingLLM 即基于此)。④ <strong>'注意力汇聚'的必要性</strong>——纯 SWA 若无全局 token,会导致注意力模式退化(模型需一个'垃圾桶'位置);故 SWA 模型常保留初始 token(attention sink)或专门的全局 token。⑤ <strong>学习式稀疏的进展</strong>——NSA(Native Sparse Attention)等用可学习的分块选择 + 硬件友好设计,在长上下文上取得接近全注意力的质量与显著加速。⑥ <strong>面试要点</strong>——被问'稀疏注意力',应给出'<strong>滑动窗口(最实用)+ 全局 token/层间交替(保全局通路)+ 块稀疏(硬件友好)</strong>'的分类,并强调'<strong>FLOPs 降低不等于加速,需规则模式 + 定制 kernel</strong>';这是区分'读过论文'与'做过部署'的关键。
⚠️ Common Interview Pitfalls
- ✕以为稀疏注意力一定更快(需规则模式与定制 kernel)
- ✕纯滑动窗口不保留全局 token 导致全局信息通路断裂
🎯 Interviewer Follow-ups
- ?滑动窗口为什么需要'全局 token'或'层间交替'?
- ?稀疏注意力为什么在 GPU 上加速有限?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.