外观
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);主导项依n、d和实现而变。FlashAttention 通过分块和 IO-aware 计算减少中间写读与显存,不改变标准精确 Attention 的渐进计算定义。
小白解释
既有“每份材料先做转换”的成本,也有“每个位置和所有位置互相比较”的成本;后者像人数翻倍后配对数接近四倍。FlashAttention 像改进会议记录和搬运方式,少搬中间纸张,但仍要完成这些配对计算。
- 合格线| 投影、
n²分数/聚合、注意力内存和 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 的渐进定义;
- 长上下文方案必须联合验证质量、显存、延迟和实际执行路径。