LLM 大模型面试题的"基础与架构"板块。来源:AiGC 面试宝典(宁静致远),共 9 份 PDF + 顶层 3 份综合面试题集。
一、Decoder 三种架构(基础面 1)
主流开源模型体系分类
| 类型 | 代表模型 | 注意力 |
|---|---|---|
| Prefix Decoder 系 | ChatGLM / ChatGLM2 / U-PaLM | 输入双向 + 输出单向 |
| Causal Decoder 系 | LLaMA-7B / LLaMa 衍生物 | 从左到右单向 |
| Encoder-Decoder | T5 / Flan-T5 / BART | 输入双向 + 输出单向(独立的 encoder) |
三者区别 = attention mask 不同
- Prefix Decoder :对前缀(prompt)做双向 attention,后续生成做单向
- Causal Decoder:全程单向,从左到右
- Encoder-Decoder:Encoder 双向,Decoder 单向,且 Decoder 可访问 Encoder 全输出
二、Layer Normalization(LN/RMS/Deep)
1. Layer Norm 公式
LN(x) = γ * (x - μ) / σ + β
其中 μ, σ 是 x 的均值和标准差(layer 内每个样本的特征维度)
2. RMS Norm
RMS Norm(x) = γ * x / RMS(x)
其中 RMS(x) = sqrt(mean(x²))
相比 LN 的特点:
- 简化:去除掉均值计算的平移部分(只留 scaling,无 shift)
- 更快:计算速度更快
- 效果相当甚至略有提升
3. Deep Norm
思路:
- 执行 LN 之前 up-scale 残差连接(alpha > 1)
- 初始化阶段 down-scale 模型参数(beta < 1)
优点:解决了 1000 层 Transformer 的训练稳定性问题。Microsoft 2022 论文。
主流 LLM 用哪种 Norm?
| 模型 | Norm |
|---|---|
| GPT 系列 | Layer Norm |
| BERT | Layer Norm |
| LLaMA / GLM | RMS Norm |
| GPT-NeoX / GLM-130B | Deep Norm |
三、激活函数
FFN 块基本公式
FFN(x) = max(0, xW_1 + b_1) * W_2 + b_2
中间维度通常为 4h
主要激活函数
| 函数 | 公式 | 特性 |
|---|---|---|
| GeLU | x * Φ(x),Φ 是高斯 CDF | 平滑替代 ReLU |
| Swish | x * σ(x) | 自动求导友好 |
| GLU | (x * W) ⊗ σ(x * V) | 线性门控单元 |
| GeGLU | (x * W) ⊗ GeLU(x * V) | GLU + GeLU |
| SwiGLU | (x * W) ⊗ Swish(x * V) | GLU + Swish,LLaMA 使用 |
GLU 系列中间维度 = 4h * 2/3(因为有 3 个权重矩阵而非 2 个)。
主流 LLM 用哪种激活函数?
| 模型 | 激活 |
|---|---|
| GPT-3 | GeLU |
| LLaMA / LLaMA-2 / LLaMA-3 | SwiGLU |
| PaLM | SwiGLU |
| GLM-130B | GeGLU |
四、Attention 升级
传统 Attention 的问题
- 上下文长度约束(O(n²) 显存)
- 速度慢、内存占用大
Attention 优化方向
- 提升上下文长度
- 加速 + 减少内存占用
Attention 变体清单
| 变体 | 思路 |
|---|---|
| 稀疏 attention | 引入稀疏偏差降低复杂度 |
| 线性化 attention | 解开 attention 矩阵与内核特征图,逆序计算实现线性复杂度 |
| 原型 / 内存压缩 | 减少 Q / KV 数量 |
| 低阶 self-Attention | 捕获低阶属性 |
| Attention 与先验 | 用先验补充或替代标准 attention |
| 改进多头机制 | MQA / GQA 等 |
Multi-Query Attention (MQA)
- 所有头共享同一 K, V,只保留多个 Q
- 效果:推理大幅加速,显存 KV cache 显著减小
- 代价:略损精度(后来 GQA 改善)
Grouped-Query Attention (GQA)
- MQA 与 MHA 的折中:将 Q 头分组,每组共享一对 K, V
- 效果:精度接近 MHA + 显存接近 MQA
- LLaMA-2 / 3 默认使用
Flash Attention
- 利用 GPU 显存层级,减少 HBM 访问
- 块状(tiling)计算,不实例化全 attention 矩阵
- 2-4x 加速,显存接近线性
五、Transformers 操作(代码题)
利用 transformers 加载 Bert
from transformers import BertModel, BertTokenizer
model_name = 'bert-base-uncased'
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertModel.from_pretrained(model_name)
输出指定 hidden_state
output = model(input_ids, output_hidden_states=True)
# output.last_hidden_state 最后一层
# output.hidden_states 每一层 list
BERT 最后一层 / 每一层向量输出
- last_hidden_state = encoder 最后一层
- pooler_output = [CLS] 的特殊处理输出
- hidden_states[i] = 第 i 层
六、损失函数
KL 散度
KL(P || Q) = Σ P(x) log(P(x) / Q(x))
衡量两个概率分布的差异。非对称(KL(P||Q) ≠ KL(Q||P))。
交叉熵损失
CE = -Σ y_true * log(y_pred)
物理意义:衡量模型预测分布与真实分布的差异。
KL 散度与交叉熵的区别
- CE = H(P) + KL(P||Q)
- H(P) 是真实分布的熵(常数)
- 优化 CE 等同于优化 KL(P||Q)
分类用 CE 不用 MSE
- CE 梯度大(随预测错误增大),收敛快
- MSE 用 sigmoid 时梯度消失,训练慢
softmax 数值稳定问题
如果 e^x 超过 float,减去最大值再 softmax(等价但不溢出):
softmax(x_i) = exp(x_i - max(x)) / Σ exp(x_j - max(x))
多任务学习 loss 差异过大
| 方法 | 思路 |
|---|---|
| 加权 | 手动调权重 |
| 不确定性加权(Kendall et al.) | 学习每任务的不确定性 |
| GradNorm | 梯度归一化 |
| PCGrad | 投影冲突梯度 |
七、相似度函数
除了 cosine 还有哪些?
| 方法 | 公式 | |---|---| | 余弦相似度 | cos(θ) = A·B / (||A|| ||B||) | | 欧氏距离 | √Σ(a_i - b_i)² | | 曼哈顿距离 | Σ|a_i - b_i| | | Jaccard 相似度 | |A∩B| / |A∪B| | | 皮尔逊相关系数 | cov(X,Y) / (σ_X σ_Y) |
对比学习(Contrastive Learning)
- 无监督学习:训练模型让相同样本表示更近,不同样本更远
- 网络:Siamese / Triplet
- 损失:InfoNCE / Triplet Loss
对比学习负样本
重要程度:取决于具体任务和数据。
负样本构造成本高怎么解决?:
- 难负样本挖掘(Hard Negative Mining):每次选模型表现最差的样本作负
- In-batch Negatives:batch 内非自身样本作负
- MoCo / SimCLR:动量队列扩大负样本数
八、LLMs 进阶面(生成式 + 复读机问题)
什么是生成式大模型?
自回归生成:基于前面 token 逐一预测下一个 token。
大模型如何让生成丰富而不单调?
- 采样策略:Temperature / Top-K / Top-P / Nucleus
- 多样性增强:Beam Search 多束 / Diverse Beam
LLMs 复读机问题
症状:生成时 反复说同一句话 / 同一段。
8 大缓解策略:
| 策略 | 思路 |
|---|---|
| Unlikelihood Training | 训练时惩罚已生成过的 token |
| 引入噪声 | 训练数据加噪声,提升鲁棒性 |
| Repetition Penalty | 推理时降低已出现 token 概率 |
| Contrastive Search | 对比上下文,降低相似度 |
| Beam Search | 多束搜索更好覆盖 |
| Top-K Sampling | 限制选择空间 |
| Nucleus Sampler (Top-P) | 累计概率截断 |
| Temperature | 调节分布平滑度 |
| No repeat ngram size | 禁止重复出现 N-gram |
| 重复率指标检测 | 训练时监控重复率作 loss 项 |
九、LLMs 训练经验帖(实操向)
分布式训练框架选择
多用 DeepSpeed,少用 PyTorch 原生 torchrun。 在节点数量少时区别不大,数百节点时 DeepSpeed 强大(便于启动 + 性能分析)。
训练建议清单
- 弹性容错和自动重启 — 大模型训练 几周 甚至 几月,机器故障常发生
- 定期保存模型 (checkpointing) — 中断恢复必备
- 想清楚再开始训练 — 大模型训练成本高,先想明确目的,记录参数和中间结果
- 学习率热身 (warmup) — 防止训练初期 loss 爆炸
- 梯度裁剪 (gradient clipping) — 防止梯度爆炸
- Mixed Precision (混合精度) — fp16 加速,fp32 稳定
- Gradient Accumulation — 显存不够时累积梯度模拟大 batch
- Gradient Checkpointing — 时间换显存
十、综合面试题集(顶层 3 大 PDF)
Transformer 面试题总结 97 道
涵盖:
- Transformer 架构原理(self-attention / multi-head / 位置编码)
- BERT / GPT / T5 区别
- Position Encoding(绝对 / 相对 / 旋转 RoPE)
- 训练细节(layer norm 位置 / dropout / warmup)
- 推理优化(KV cache / FlashAttention)
- 多语言 / 多模态 Transformer
AI 大模型面试题 (102 题)
涵盖:
- LLM 通识(GPT-3/4 / LLaMA / Claude 演化)
- RAG / Agent / 工具调用
- 训练(SFT / RLHF / DPO)
- 推理优化(量化 / 蒸馏 / 推理加速)
- 评测(MMLU / GSM8K / HumanEval)
大模型 LLM 最全八股和答案 2024
集成上述题目的"标答"版本,适合突击复习。
See also
- LLM 面试 / RAG 检索增强生成完整专题 — RAG 专题(20+ PDFs)
- LLM 面试 / 微调与强化学习完整专题 — 微调 / RLHF / PEFT 专题
- LLM 面试 / 分布式训练 8 篇图解专题 — 分布式训练专题
- AI 产品经理面试与转型 / 12 份资料汇编 — AI 产品经理面试题(更高层视角)
- Foundation Models for NLP(Springer 教科书精读) — Foundation Models for NLP 完整教材(理论基础)
- AI Agent 技术架构演进 2025(深度研究报告) — Agent 架构深度研究(实战)
高频考点优先级
- 🔥🔥🔥 Attention 各种变体(MQA/GQA/Flash) — 每场必考
- 🔥🔥🔥 复读机问题 + 缓解(采样策略全家桶) — 每场必考
- 🔥🔥 激活函数(SwiGLU 必懂)
- 🔥🔥 Layer Norm vs RMS Norm
- 🔥🔥 损失函数(CE vs MSE 数值稳定)
- 🔥 三种 Decoder 架构区别
- 🔥 Transformers 代码加载/输出