大模型Transformer高频面试题
大模型 & Transformer 高频面试题及答案
🎯 适用岗位:算法工程师、AI 应用开发、大模型研发 📅 整理日期:2026-06-07 💬 答案按面试口语化写,直接照着说就行
一、Transformer 核心架构
Q1:Transformer 的基本结构是什么?
Transformer 分两半——Encoder 和 Decoder,每半都是 N 个一样的层叠在一起。
单层 Encoder 就是:多头注意力 → 残差+归一化 → 前馈网络 → 残差+归一化。
Decoder 多了一步:先是带 mask 的自注意力(只能看当前和之前的 token),然后是交叉注意力(去拿 Encoder 的信息),最后才是前馈网络。
现在主流大模型分三种路线:
- BERT 那种只用 Encoder:双向注意力,擅长理解类任务,比如分类、实体识别
- GPT/LLaMA 那种只用 Decoder:单向注意力,擅长生成
- T5 那种 Encoder+Decoder:适合翻译、摘要这种输入输出都很长的任务
追问:为什么现在大模型几乎都用 Decoder-only?
主要几个原因:一是自回归的训练目标和推理完全一致,训练效率高;二是单向注意力天然适配 next-token prediction;三是工程上更简单,推理时 KV Cache 处理更自然;四是实验发现同等参数量下 Decoder-only 的 scaling 效果更好。
Q2:Transformer 相比 RNN/LSTM 有什么优势?
最核心的就两点:并行和长距离依赖。
RNN 必须一个 token 一个 token 顺序算,没法并行,GPU 利用率低。Transformer 的注意力机制所有位置可以同时算,训练速度差了好几倍。
另外 RNN 处理长序列容易梯度消失,远处的信息传着传着就丢了。Transformer 的注意力是直接”看”到所有位置的,不管隔多远都是一步到位。
当然 Transformer 也有代价——注意力是 O(n²) 的复杂度,序列越长越吃内存,但总体来说在 GPU 上训练还是比 RNN 快得多。
二、Self-Attention 机制
Q3:Self-Attention 的计算流程是什么?
简单说就三步:
- 输入先过三个线性层,分别得到 Q(查询)、K(键)、V(值)
- Q 和 K 做点积算相似度,除以 √d_k 缩放一下,过 softmax 得到注意力权重
- 用权重对 V 做加权求和,得到输出
用公式说就是:Attention(Q,K,V) = softmax(Q·K^T / √d_k) · V
直觉上理解:Q 是”我想找什么”,K 是”我有什么”,Q·K^T 算的是匹配程度,V 是”找到之后给你什么内容”。
Q4:为什么要除以 √d_k?⭐超高频
因为 d_k 一大,Q 和 K 的点积值就会变得很大,softmax 一收到很大的输入,输出就几乎变成 one-hot 了——只有一个位置接近 1,其他都接近 0。这时候梯度几乎为 0,模型就训不动了。
除以 √d_k 就是把点积值”拉回”正常范围,让 softmax 的输出更平滑,梯度能正常传播。
数学上解释的话:假设 Q 和 K 的每个元素都是均值为 0、方差为 1 的,那点积的方差就是 d_k,除以 √d_k 之后方差就归一化回 1 了。
Q5:Multi-Head Attention 的作用是什么?
多头注意力就是让模型同时从不同角度去看输入。每个头学到的注意力模式不一样——有的头关注语法关系,有的关注语义关系,有的关注相邻词,有的关注远距离依赖。
如果只用一个大头,它只能学一种模式;用多个小头,每个头可以专门化,最后拼起来信息更丰富。
而且多头在计算上也更高效:每个头的维度是 d_model/h,多个头可以并行算,总计算量和单头差不多。
Q6:MHA / MQA / GQA 的区别?⭐高频
这三个的区别就在于 K 和 V 是不是共享的:
- MHA(多头注意力):每个头都有自己的 Q、K、V,效果最好但 KV Cache 最大,推理最慢
- MQA(多查询注意力):Q 还是每个头独立,但 K 和 V 所有头共享一份,推理最快但效果会掉一点
- GQA(分组查询注意力):折中方案,把头分成几组,组内共享 K 和 V。比如 8 个头分 2 组,每组 4 个头共享一组 K、V
现在主流模型基本都选 GQA,比如 LLaMA-2/3、Mistral,用很小的质量损失换来了显著的推理加速和内存节省。
三、位置编码
Q7:为什么 Transformer 需要位置编码?
因为 Self-Attention 是”不分先后”的——你把输入的顺序打乱,Attention 算出来的结果只是对应位置换了一下,模型根本不知道谁在前谁在后。
“猫吃鱼”和”鱼吃猫”对 Attention 来说是一样的,这显然不行。所以得额外告诉模型每个 token 在哪个位置,这就是位置编码。
Q8:RoPE 旋转位置编码是什么?为什么现在主流都用它?
位置编码分几代:
- 绝对位置编码(BERT 用的):给每个位置一个固定向量,简单但超出训练长度就不行了
- 相对位置编码(T5 用的):编码的是两个 token 之间的距离,外推性好但实现复杂
- RoPE(LLaMA、Qwen 用的):用旋转矩阵把位置信息”转”进 Q 和 K 里,这样 Q·K^T 的点积天然就包含了相对位置信息
RoPE 厉害的地方在于它统一了绝对和相对位置编码的优点——实现简单,外推性好,所以现在基本是大模型的标配。
四、KV Cache 与推理优化
Q9:什么是 KV Cache?为什么需要它?⭐超高频
大模型生成文本是一个 token 一个 token 往外蹦的。每生成一个新 token,都要用前面所有 token 的 K 和 V 来算注意力。
问题是:前面那些 token 的 K 和 V 其实不会变,每次重新算是纯浪费。所以就把算过的 K 和 V 缓存起来,下次直接用,只算新 token 的就行。
没有 KV Cache 的话,生成第 t 个 token 要重新算前 t-1 个,复杂度是 O(t²);有了之后只算当前 token 的,复杂度降到 O(t)。推理速度能快 5-10 倍,现在所有线上服务的大模型都用这个。
Q10:为什么缓存 K 和 V,不缓存 Q?⭐超高频
因为历史 token 的 K 和 V 在后续每一步都要被”查”到——新 token 的 Q 要和所有历史 token 的 K 算相似度,再用权重去取历史 token 的 V。所以缓存 K 和 V 有实实在在的收益。
但 Q 不一样——每个 token 的 Q 只在当前这一步用,下一步的 Q 是新 token 产生的,跟之前的 Q 没关系。所以缓存 Q 没有任何加速效果,不是”不能”缓存,是缓存了也没用。
Q11:常见的推理加速方法有哪些?
主要有这几个:
- KV Cache:缓存历史 K/V 避免重复计算,5-10 倍加速,没有精度损失
- 量化:把模型权重从 FP16 压到 INT8 甚至 INT4,2-4 倍加速,精度损失很小
- GQA/MQA:减少 K/V 的头数,降低内存和计算量,1.5-3 倍加速
- Speculative Decoding(投机解码):用小模型先猜几个 token,大模型并行验证,猜对了就一次接受多个,2-3 倍加速,精度无损
- Continuous Batching:动态把不同请求拼在一起,提高 GPU 利用率,吞吐能翻好几倍
五、大模型训练与对齐
Q12:大模型的训练流程是什么?
分三步走:预训练 → SFT → RLHF/DPO
预训练:用海量无标注文本(万亿级 token),目标是 next-token prediction。这一步最贵,烧掉 99% 的算力和数据,让模型学会语言的基本规律和世界知识。
SFT(有监督微调):用几万条高质量的”指令-回答”对,教模型听懂人的指令、按格式回答。这一步成本中等,但很关键,是从”语言模型”变成”助手”的关键一步。
RLHF/DPO(对齐训练):用人类偏好数据,让模型的回答更符合人的价值观——更有用、更安全、更诚实。这一步成本相对低,但决定了模型的”性格”。
Q13:RLHF 的流程是什么?
两步:
第一步,训练奖励模型:让人对同一个问题的多个回答排序,用这些排序数据训练一个打分模型,它能给回答打出一个”人类偏好分数”。
第二步,用 PPO 强化学习优化:让大模型生成回答,奖励模型打分,用 PPO 算法根据分数更新大模型。同时加一个 KL 散度惩罚,防止模型为了拿高分而变得太极端。
RLHF 的问题:奖励模型可能被”钻空子”(reward hacking),PPO 训练不稳定、超参难调,而且需要同时跑 4 个模型(策略模型、参考模型、奖励模型、价值模型),显存开销很大。
Q14:DPO 和 RLHF 的区别?⭐高频
DPO 本质上是 RLHF 的简化版。
RLHF 要两步:先训练奖励模型,再用 PPO 做强化学习。DPO 把这两步合成一步——直接用人类偏好数据(好回答 vs 差回答)来优化策略模型,不需要单独的奖励模型,也不需要 PPO。
好处很明显:训练更稳定(不像 PPO 那么多超参要调),只需要 2 个模型而不是 4 个,实现也简单得多。
所以现在 DPO 基本成了对齐训练的主流选择,除非有特殊需求才会用 RLHF。
Q15:LoRA 的原理是什么?⭐高频
LoRA 的核心想法是:微调时不直接改原始权重,而是加一个低秩的”补丁”。
原始是 Y = X·W,LoRA 变成 Y = X·(W + B·A),其中 B 和 A 是两个很小的矩阵,秩 r 远小于原始维度。
举个例子:如果原始权重是 4096×4096,有 1600 万参数;LoRA 用秩 8 的话,B 是 4096×8,A 是 8×4096,加起来才 6.5 万参数,减少了 99.6%。
关键优势:一是训练参数极少,单卡就能微调大模型;二是推理时可以把 B·A 合并回 W,没有任何额外延迟;三是不同任务可以训练不同的 LoRA,随时切换。
六、大模型架构与应用
Q16:MoE(混合专家)是什么?
MoE 的思路是:模型参数可以很大,但每个 token 只激活其中一小部分。
具体来说,每一层有多个”专家”(其实就是多个前馈网络),来一个 token 先过路由器(Gate),路由器选出最合适的 Top-K 个专家,只让这几个专家算,最后把结果加权求和。
比如 Mixtral 8×7B,总参数 46.7B,但每个 token 只用 12.9B 的参数,计算量跟 13B 的稠密模型差不多,效果却接近 47B 的。
挑战主要是:负载均衡(别让所有 token 都挤到同一个专家)、多卡通信开销大、显存占用还是按总参数来的。
Q17:RAG 和微调的区别?怎么选?⭐高频
RAG 是给模型外挂一个知识库,每次提问先检索相关内容,塞进 prompt 里让模型基于检索结果回答。微调是用特定数据继续训练模型,把知识”写进”权重里。
核心区别:
- 知识更新:RAG 改检索库就行,实时更新;微调得重新训练
- 幻觉控制:RAG 有检索结果做依据,幻觉少;微调全靠模型”记忆”,容易编
- 成本:RAG 不用训练,成本低;微调要 GPU 和数据
- 擅长的事:RAG 擅长知识密集型问答,微调擅长调整风格、格式、特定能力
选哪个?需要实时知识就 RAG,需要特定风格/能力就微调,两者都要就 RAG + 微调一起上。
Q18:大模型的幻觉问题怎么缓解?
大模型幻觉的根本原因是:它是概率语言模型,不是知识库,生成的是”看起来合理”的文本,不保证事实正确。
缓解方法:
- RAG:最直接,给模型提供外部知识做依据,效果最好
- CoT(思维链):让模型一步步推理,中间步骤可以检查,减少跳步出错
- 对齐训练:RLHF/DPO 训练时惩罚幻觉输出,让模型学会说”我不知道”
- 系统提示:在 prompt 里明确要求”不确定就说不知道”,简单但有效
实际中一般是 RAG + CoT + 对齐训练三板斧一起用。
Q19:什么是思维链(CoT)?
CoT 就是让模型把推理过程写出来,而不是直接给答案。
有几种用法:
- Zero-shot CoT:最简单,在 prompt 末尾加一句”Let’s think step by step”,模型就会自动展开推理
- Few-shot CoT:给几个带推理过程的示例,模型照着格式来
- Self-Consistency:多次采样取多数结果,更可靠但更慢
为什么 CoT 有效?因为复杂问题一步算出来容易错,拆成多个简单步骤每步出错的概率就低多了。而且中间步骤可以人工检查,方便定位问题。
🎯 速记口诀
Transformer 核心:Self-Attention + 位置编码 + 残差 + LayerNormAttention 缩放:除以 √d_k,不然 softmax 变 one-hot,梯度消失位置编码:RoPE 是主流,统一绝对+相对KV Cache:缓存历史 K/V 省重复计算,Q 不用缓存因为只用一次MHA→GQA:质量和速度的折中,LLaMA-2/3 的选择训练三步曲:预训练 → SFT → RLHF/DPODPO vs RLHF:DPO 不需要奖励模型,更简单稳定LoRA:低秩补丁,训练 0.1% 参数,推理零延迟RAG vs 微调:要实时知识用 RAG,要风格能力用微调幻觉缓解:RAG + CoT + 对齐训练 三板斧Share Article
If this article helped you, please share it with others!