Skip to content

Attention 与 Transformer 专项面试题

目录

1. 使用说明

  • 对应知识主题Attention 与 Transformer
  • 角色:资深面试官从 Q/K/V 直觉追问到长上下文架构,高级技术应聘者负责推导形状、复杂度和 Mask;
  • 回答顺序:先用 1~3 句专业短答,再用生活化解释;公式必须说明每头维度 d_h

事实红线| 标准 Attention 的序列相关核心项为平方复杂度;FlashAttention 优化 IO 与中间存储,不得说成普遍改变渐进计算复杂度;

  • 题目数量:7 题,严格覆盖 L1~L7。

阅读图例| L1~L2 概念与边界 · L3~L4 原理与实现 · L5 工程 · L6 架构 · L7 项目复盘

答案层级| 必答结论 · 小白解释 · 加分项 · 高频误区 · 下一问

2. 递进路线

图:Attention 与 Transformer L1~L7 递进路线

替代文本: L1 Attention/Transformer 本质 → L2 Self/Causal/Cross 边界 → L3 Scaled Dot-Product 原理 → L4 多头、Mask 与 Block 实现 → L5 复杂度和 OOM 排障 → L6 长上下文方案选型 → L7 示例推理链复盘。

图表加载中…

读图结论: 蓝色阶段建立概念与边界,紫色阶段进入原理与实现,橙色和青色阶段验证工程与架构能力,绿色阶段用项目证据完成复盘。

题链从“如何按内容取信息”进入张量和缩放,再把实现细节连接到显存、优化内核与长上下文方案,最后用 Decoder-only 推理场景收束。

图:单个 Query 从匹配 Key 到聚合 Value 的 Attention 机制

替代文本: 单个 Query 与所有 Key 做点积并按每头维度平方根缩放,Causal Mask 和 Padding Mask 在 Softmax 前加入分数;沿 Key 维归一化得到权重后,再对对应 Value 加权求和,形成该 Query 在这一头的输出。

图表加载中…

读图结论: Q/K 决定“看哪里”,Mask 决定“哪些位置允许看”,Softmax 把允许位置变成分配权重,V 才是最终被加权搬运的信息。

图中 Mask 必须在 Softmax 前作用于分数;若先归一化再遮挡,剩余权重不会自动满足正确的概率归一化。实际实现会并行处理多个 Query 和多个头,但每个头都遵循同一条“缩放打分 → 屏蔽 → 沿 Key 维 Softmax → 聚合 V”的因果链。

3. 一问一答

第 1 题|L1 概念|Attention 与 Transformer 的本质分别是什么?

核心考察点|Attention 算子与 Transformer 架构的边界

面试官提问

为什么不能把 Transformer 简化为“只有 Attention”?

30 秒专业短答

Attention 是用 Query 与 Key 的相关性计算权重,再对 Value 加权聚合的信息路由机制。Transformer 以 Attention 混合跨位置信息,还依靠逐位置 FFN、残差、归一化和位置机制组成可训练的序列架构。

小白解释

Attention 像开会时根据当前问题决定重点听谁的发言;Transformer 不只是“听谁”,还要对听到的信息分别加工、保留原意见、稳定讨论过程并记住发言顺序。

  • 合格线| Attention 负责匹配和聚合;Transformer 还包含 FFN、残差、归一化、位置;
  • 加分项| 指出 Attention 权重不等于可靠因果解释,FFN 也可能占大量参数与计算;
  • 高频误区| 把 Transformer 等同 Self-Attention,或认为权重最高位置就是唯一解释;
  • 下一问| 本质明确后,继续区分 Self、Causal 与 Cross-Attention 的信息来源。

第 2 题|L2 边界|Self-Attention、Causal Attention 和 Cross-Attention 有何区别?

核心考察点|Attention 类型、来源和 Mask 语义

面试官提问

三者的 Q、K、V 来源与可见范围分别是什么?

30 秒专业短答

Self-Attention 的 Q/K/V 来自同一序列;Causal Self-Attention 仍来自同一序列,但对位置 i 屏蔽所有未来 j>i;Cross-Attention 的 Q 来自目标序列,K/V 来自外部或源序列。区别在信息来源与可见性,不在是否使用相同公式。

小白解释

Self-Attention 像一组人互相看发言记录,Causal 讨论要求每个人只能看自己之前的记录,Cross-Attention 则像写报告的人拿自己的问题去查另一份资料库。

  • 合格线| Q/K/V 来源、未来屏蔽和典型用途正确;
  • 加分项| 联系 Encoder-only、Decoder-only 和 Encoder-decoder,但不把形态与任务绝对绑定;
  • 高频误区| 认为 Causal Mask 删除了 Token,或说 Cross-Attention 的三者都来自同一序列;
  • 下一问| 信息来源确定后,继续推导匹配分数为何要除以 sqrt(d_h)

第 3 题|L3 原理|为什么 Scaled Dot-Product Attention 要除以 sqrt(d_h)

核心考察点|缩放点积公式、方差假设和 Softmax 数值行为

面试官提问

请写出核心公式,并从方差和 Softmax 饱和解释缩放。

30 秒专业短答

每头计算 S=QKᵀ/sqrt(d_h)+M,再令 A=softmax(S, dim=-1)O=AV。若 Q、K 各维近似独立、零均值且单位方差,点积方差约随头维 d_h 增长;除以 sqrt(d_h) 可稳定 Logit 尺度,避免 Softmax 过度饱和和梯度变小。

小白解释

把很多独立小分数相加,维度越多总分波动越大,容易让 Softmax 变成几乎只选一个候选;按维度的标准差缩放,像把不同题量考试换算到可比较尺度。

  • 合格线| 分母是每头维度 d_h 的平方根,说明点积方差与饱和;
  • 加分项| 解释为何不是为了把分数归一化到 0~1,也不是除以总隐藏维 d
  • 高频误区| 写成 sqrt(d) 而不说明头维,或说缩放是为了让权重和为 1;
  • 下一问| 公式直觉建立后,继续推导多头张量、Mask 合并和 Transformer Block。

第 4 题|L4 实现|多头 Attention 的张量怎样变化,Mask 如何正确应用?

核心考察点|多头形状、Softmax 轴、Mask 和 Block

面试官提问

[B,n,d] 推到权重矩阵并回到输出,说明 Softmax 维度、Causal/Padding Mask 和 Block 结构。

30 秒专业短答

输入投影后先为 [B,n,d],按 h 个头重排成 [B,h,n,d_h],分数为 [B,h,n,n],沿最后的 Key 维 Softmax,聚合后拼接回 [B,n,d] 并做输出投影。Causal Mask 屏蔽未来 Key,Padding Mask 屏蔽无效 Key;结果再进入残差、LayerNorm 与逐位置 FFN,具体 Pre-LN/Post-LN 顺序依架构。

小白解释

像把同一份材料分给多个小组从不同角度阅读,每组都对可看的资料打权重,再把结论合并;遮罩规定哪些页不能看,最后还要经过个人加工和保留原始笔记。

  • 合格线| d_h=d/h、权重 [B,h,n,n]、Softmax 沿 Key 维、两类 Mask 职责;
  • 加分项| 指出全屏蔽行可能产生 NaN,不同 API 的布尔 Mask 语义需按目标版本写真值测试;
  • 高频误区| Softmax 沿 Query 维,Mask 主对角线或未来方向反了,或把 Pre-LN 说成唯一结构;
  • 下一问| 正确实现会显式产生与序列平方相关的分数矩阵,下一步分析复杂度和 OOM。

第 5 题|L5 工程|标准 Attention 的复杂度如何拆解,长输入 OOM 怎样排查?

核心考察点|复杂度分项、形状主导项与 IO 优化

面试官提问

不要只背 O(n²),请说明投影、Attention、FFN 与内存,并解释 FlashAttention 的边界。

30 秒专业短答

Q/K/V 与输出投影约为 O(Bnd²),分数和聚合约为 O(Bn²d),朴素注意力矩阵内存约为 O(Bhn²),FFN 约为 O(Bndd_ff);主导项依 nd 和实现而变。FlashAttention 通过分块和 IO-aware 计算减少中间写读与显存,不改变标准精确 Attention 的渐进计算定义。

小白解释

既有“每份材料先做转换”的成本,也有“每个位置和所有位置互相比较”的成本;后者像人数翻倍后配对数接近四倍。FlashAttention 像改进会议记录和搬运方式,少搬中间纸张,但仍要完成这些配对计算。

  • 合格线| 投影、 分数/聚合、注意力内存和 FFN 均能拆出;
  • 加分项| OOM 时检查输入/生成长度、batch、dtype、头数、显式权重保存、优化内核路径和其他激活;
  • 高频误区| 只说 O(n²) 不会推矩阵,或宣称 FlashAttention 把复杂度普遍变成线性;
  • 下一问| 明确瓶颈后,才能按任务选择精确全局 Attention、滑窗、稀疏或 RAG。

第 6 题|L6 架构|长上下文应怎样选择 Attention 优化或 RAG?

核心考察点|长上下文架构选型和质量—性能权衡

面试官提问

FlashAttention、滑窗、稀疏 Attention 与 RAG 分别解决什么问题,代价是什么?

30 秒专业短答

FlashAttention 保持精确全局 Attention 定义,主要优化 IO 和中间存储;滑窗或块稀疏减少部分远距离直接交互,但会引入模式与质量代价;RAG 从外部语料筛选相关证据以缩短输入,却依赖召回质量。选择应基于是否需要全局依赖、上下文规模、硬件、延迟和固定质量评测,而非只看最大窗口。

小白解释

资料太多时,可以换更高效的整桌阅读方式、只看附近章节、按规则跳读,或先用目录找相关页;它们分别省搬运、缩小阅读范围或先过滤资料,没有一种在所有任务上都免费。

  • 合格线| 四类方案的主要收益与丢失边界清楚;
  • 加分项| 提出因果性、Padding 不变性、长依赖回归、实际内核路径、P95/P99 和峰值显存联合验收;
  • 高频误区| 把优化内核、稀疏模式与检索视为等价替代,或只用宣传倍数决策;
  • 下一问| 最后把这些选择落到源文档的 Decoder-only 代码审查助手示例。

第 7 题|L7 项目复盘|如何为代码审查助手设计 Decoder-only 推理链路?

核心考察点|从 Attention 机制到推理服务的项目表达与证据边界

面试官提问

请说明 Mask、长上下文、优化内核和验收;当前仓库能否证明性能?

30 秒专业短答

这是源文档中的示例项目:Tokenizer 产生 ID 与 Padding Mask,Prefill 对完整 Prompt 做因果 Self-Attention,Decode 复用每层 K/V;入口先做 Token 预算,优化内核只在支持的设备、dtype、形状和 Mask 上启用,并与正确性基线比较。仓库没有真实服务和压测,不能声称 TTFT、吞吐、显存节省或固定加速倍数。

小白解释

助手写下一句时只能看已给的规则和前文,不能偷看未来;长代码先检查是否放得下,快速阅读工具也要和标准答案逐项对照。现在只有设计和教学实现,没有真实机器上的性能报告。

  • 合格线| Causal/ Padding Mask、Token 准入、KV Cache、正确性基线和性能分位数;
  • 加分项| 记录实际内核、dtype、长度切片、因果性、Padding 不变性和流式一致性;
  • 高频误区| 把 KV Cache 说成消除 Prefill 或常数复杂度,或编造优化倍数;
  • 下一问| 本组题结束;后续应手写单头/多头 Attention 并与官方算子做同 Mask 对照。

4. 自测与评分

  • [ ] 从 [B,n,d] 手推到 [B,h,n,n],再回到 [B,n,d]
  • [ ] 用单位方差假设解释 sqrt(d_h)
  • [ ] 写 Causal 与 Padding Mask 真值测试,并制造全屏蔽行;
  • [ ] 分别记录序列长度增长时的时间和峰值内存;
  • [ ] 按准确性、原理深度、工程意识、项目表达、沟通结构各 0~5 分评分;
  • [ ] 若声称 FlashAttention 改变标准 Attention 渐进复杂度,准确性不得判为优秀。

5. 事实边界与参考资料

  • 单一事实源:Attention 与 Transformer
  • 源文档依据包括 Transformer、FlashAttention、FlashAttention-2、LayerNorm 原始论文和 PyTorch SDPA/MultiheadAttention 官方文档;
  • Mask 布尔语义、可用内核和精度路径依目标框架版本、硬件与形状,必须实测;

当前无法确认| 示例代码审查助手的模型、服务、输出质量、延迟、显存、吞吐和业务效果。

6. 总结

一句话记忆: Attention 用 Q 匹配 K 并聚合 V,Transformer 再用 FFN、残差、归一化与位置机制把它组织成可训练架构。

  • 缩放分母是每头维度 sqrt(d_h)
  • Multi-Head 权重形状为 [B,h,n,n],Mask 和 Softmax 轴必须验证;
  • 标准 Attention 的序列相关核心项是平方复杂度;
  • FlashAttention 优化 IO 与中间存储,不改变精确 Attention 的渐进定义;
  • 长上下文方案必须联合验证质量、显存、延迟和实际执行路径。