【校招笔试真题】简要介绍 Self-Attention 的前沿算法

1. 引言:为什么 Self-Attention 需要持续改进

Self-Attention 是 Transformer 的核心,它让序列中每个 token 都能与所有 token 交互,从而建模长距离依赖。但标准实现存在两个硬伤:

  • 计算与显存复杂度为 O(N²):序列长度翻倍,注意力矩阵规模变为 4 倍,长序列训练极易显存爆炸;
  • 推理时 KV Cache 开销大:自回归生成需要缓存全部历史 K、V,显存占用随上下文线性增长,成为长上下文推理的瓶颈。

围绕这两个痛点,业界从硬件机制、模型架构、位置编码三个方向提出了大量改进算法。下面按这三条主线梳理。

2. 硬件机制优化:FlashAttention

FlashAttention 针对 GPU 的存储层级(HBM 显存与 SRAM 片上缓存)做优化,核心思想是分块计算(Tiling)+ 前向重计算(Recomputation):

  • 将 Q、K、V 切分成小块,逐块加载到 SRAM 中完成注意力计算,避免把完整的 N×N 注意力矩阵写回 HBM;
  • 反向传播时不保存中间注意力矩阵,而是重新计算,用少量额外算力换取大量显存。

效果上,它把注意力部分的内存读写复杂度从 O(N²) 降到 O(N),解决了长序列训练时的显存爆炸问题,同时因为减少了 HBM 访问,实际速度也显著提升。FlashAttention 属于"精确注意力",不改变数学结果,是当前训练与推理的默认基础设施。

3. 架构优化

3.1 MQA(Multi-Query Attention)

标准 MHA 中每个注意力头都有独立的 Q、K、V。MQA 让所有注意力头共享同一组 K 和 V,只保留多头 Q。

  • 推理时 KV Cache 缩小为原来的 1/h(h 为头数),显存占用和访存带宽大幅下降;
  • 生成速度明显加快,适合高并发推理场景;
  • 代价是模型表达能力略有损失,效果通常略逊于 MHA。

3.2 GQA(Grouped-Query Attention)

GQA 是 MQA 与 MHA 的折中:把 Query 头划分为若干组,每组内的 Query 共享一组 K、V。

  • 组数等于头数时退化为 MHA,组数为 1 时退化为 MQA;
  • 在维持接近 MQA 的推理速度的同时,保留了接近 MHA 的模型性能;
  • 目前被 LLaMA 2/3 等主流大模型广泛采用,是工程上性价比最高的方案之一。

3.3 Linear Attention

标准注意力的 softmax 使其无法利用矩阵乘法的结合律。Linear Attention 引入特征映射 φ(·) 替换或近似 softmax 的非线性操作,把注意力写成:

Attention(Q,K,V)=ϕ(Q)(ϕ(K)⊤V)ϕ(Q)(ϕ(K)⊤1) \text{Attention}(Q,K,V) = \frac{\phi(Q)\left(\phi(K)^\top V\right)}{\phi(Q)\left(\phi(K)^\top \mathbf{1}\right)} Attention(Q,K,V)=ϕ(Q)(ϕ(K)⊤1)ϕ(Q)(ϕ(K)⊤V)

利用结合律先算 φ(K)ᵀV,可将序列长度复杂度从 O(N²) 降为 O(N),推理时可维护一个固定大小的状态,天然适合超长序列与流式场景。代价是近似带来的精度损失,在长程精确检索类任务上仍有差距。

3.4 MLA(Multi-head Latent Attention)

MLA 由 DeepSeek 提出,核心是低秩投影压缩 KV:将输入的隐藏状态先投影压缩成一个极低维的共享隐向量(latent vector),推理阶段只需缓存这个压缩向量,计算注意力时再上投影恢复出完整的 K、V。

  • KV Cache 体积大幅压缩,长上下文推理显存显著降低;
  • 相比 MQA/GQA 的"共享"思路,MLA 通过低秩分解保留了更强的表达能力,性能接近甚至优于 MHA。

3.5 DSA(DeepSeek Sparse Attention)

DSA 在 MLA 基础上进一步做稀疏化,采用"先粗筛、后细筛"的两阶段策略:

  1. 粗筛:在计算完整注意力之前,用一个轻量快速的索引器(Indexer)计算当前 Query token 与所有历史 token 的关联度分数;
  2. 细筛:只挑选分数最高的 Top-k 个 token,在这些 token 之间执行完整的注意力计算。

这样有效过滤了无关区域引入的噪声,把注意力计算量从 O(N²) 降到接近 O(N·k),在保持长上下文建模能力的同时大幅降低计算开销。

4. 位置编码优化:RoPE

RoPE(Rotary Position Embedding)通过复数空间的旋转矩阵将绝对位置信息注入到 Q 和 K 的点积运算中:

  • 对 Q、K 按位置角频率进行旋转,使得注意力分数只依赖相对位置差,天然具备相对位置编码的性质;
  • 不引入额外参数,实现简单,且对序列长度有更好的泛化能力;
  • 配合位置插值(PI)、NTK-aware 缩放、YaRN 等技术,可进一步把训练时的短上下文外推到更长上下文。

RoPE 已成为 LLaMA、Qwen、DeepSeek 等主流开源模型的标配位置编码方案。

5. 三类改进对比总结

方向 代表算法 核心思路 主要收益
硬件机制 FlashAttention 分块计算 + 重计算 显存读写 O(N²)→O(N),长序列可训练
架构(KV 共享) MQA / GQA 多头共享 K、V KV Cache 缩小,推理加速
架构(低秩压缩) MLA 低秩投影压缩 KV 长上下文显存大幅降低,性能接近 MHA
架构(稀疏化) DSA 粗筛 + 细筛 Top-k 计算量降至近 O(N·k),过滤噪声
架构(线性化) Linear Attention 特征映射 + 结合律 复杂度降为 O(N),适合超长序列
位置编码 RoPE 旋转矩阵注入位置 相对位置感知,长度泛化更好

6. 面试答题要点

回答这类题时,建议按"问题 → 思路 → 收益 → 代价"的结构展开,并注意以下几点:

  • 先点明 Self-Attention 的两个核心痛点(O(N²) 复杂度、KV Cache 开销),让回答有主线;
  • 区分训练侧优化 (FlashAttention)与推理侧优化(MQA/GQA/MLA/DSA),体现工程视角;
  • 说明各方案的取舍:MQA 快但损性能,GQA 折中,MLA 压缩但需上投影,Linear Attention 快但精度有损;
  • 能补充实际落地情况(如 GQA 用于 LLaMA、MLA/DSA 用于 DeepSeek)会明显加分。
相关推荐
在所不辞兄2 小时前
【零基础学智能仿真-63】ABACUS作业工具与MCP接口
人工智能·深度学习·神经网络·机器学习·智能仿真
楚山之石2 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
blackappleD2 小时前
百度 Unlimited OCR 2 拆解:SR-SWA 如何让百页文档的 KV 缓存不再涨
人工智能·llm
数字新视界2 小时前
国产动环数据库在智能机房环境监控中的应用与优势分析
大数据·人工智能·数据中心·机房管理·模块化机房
holly就是我2 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
雨中飘荡的记忆2 小时前
额度又见底了?这个开源项目,给 AI 编程助手接上 61 家"加油站"
人工智能
天远Date Lab2 小时前
零信任架构实战:基于天远企业年报信息核验构建自动化商业保理财务与社保穿透评估网关
人工智能·架构·自动化
EnCi Zheng2 小时前
后端怎么把AI接口稳定安全低成本接进业务:超时重试、密钥隔离与成本熔断清单
人工智能·后端·安全·架构·api
loulanyue_2 小时前
给概率大模型套上确定性缰绳:GraphRAG、神经符号与知识超图重构可信AI底座——读陈华钧杨博等CNCC2026第十届知识图谱论坛实录
人工智能·rag