最近面试中遇到的八股文 – 大模型/算法篇

Jiecheng LIAO 发布于 25 天前 187 次阅读


最近面试中遇到的八股文 - 大模型/算法篇

1. Transformer: Post-Norm vs Pre-Norm

Pre Norm vs Post Norm

Pre Norm: 在attention前先layer norm;残差路径保持更"干净直通"。

Post Norm: 在attention后,残差+layer norm(Transformer原结构)。

影响

Pre Norm: 先把输入"标准化",再喂给子层;残差路径保持更"干净直通"。反向传播时至少有一条"恒等映射"的梯度通路(残差x直接传),深层堆起来也不太容易梯度消失/爆炸,所以大模型/深层Transformer普遍更偏向Pre-Norm。

Post Norm: 的每个子层输出都会再经过LN(·)。这会让梯度每层都要穿过LN的雅可比,深层时更容易出现训练不稳定、需要更小学习率/更精细warmup。

Post-Norm vs Pre-Norm

Post-Norm vs Pre-Norm 结构对比

2. 位置编码

传统正余弦函数位置编码

使用正弦和余弦函数生成位置编码,具有良好的相对位置关系和可外推性。

RoPE (Rotary Position Embedding)

旋转位置编码,通过复数旋转的方式将位置信息注入到注意力计算中。

位置编码

位置编码与RoPE

3. Layer Norm vs RMS Norm vs Batch Norm

用于处理层与层之间的归一化。

BatchNorm

训练时:分别对C个维度,在所有样本内求均值和方差→得到C个均值和方差→T(b, s, c)再分别对每个通道标准化(缩放系数和偏置是为了缓解标准化分布时有损失)

推理时:均值和方差随训练不断更新;遵循动量更新准则,作为全局的变量。

应用:常用于CV领域

缺点:训练、推理存在不一致;bs过小会导致训练时不稳定。

LayerNorm

对每一个样本(不同的颜色层)求均值和方差,一共有B个均值和方差。

特点:LN训练推理一致;不受bs影响。

应用:常用NLP领域,句子的padding长度不同用batch norm会导致计算不稳定。(为什么Transformer用LayerNorm?)

RMSNorm

是LayerNorm的一个简单变体,减少运算量。不需要同时计算均值和方差,而只需要计算均方根Root Mean Square。

归一化方法

Layer Norm vs RMS Norm vs Batch Norm

4. Mask Attention

为什么需要mask attention模块?为什么只有decoder第一个模块需要?如何实现的?

  • 为什么需要:在自回归生成任务中,当前位置不能看到未来的token,否则会造成信息泄露
  • 为什么只有decoder第一个模块:Decoder需要自回归生成,而Encoder可以同时看到所有输入
  • 如何实现:通过将上三角矩阵置为负无穷大,使得softmax后这些位置的权重为0
Mask Attention

Mask Attention原理

5. Attention 缩放因子

为什么是÷√(d_k),而不是d_k?推导全过程

背景:对于随机变量x,方差定义为Var(x) = E[x²] - (E[x])²

关键点:

  • 点积的期望值为:E[q·k] = 0(假设均值为0)
  • 期望值的平方为:(E[q·k])² = 0
  • 点积的方差为:Var(q·k) = E[(q·k)²] = d_k(假设每个维度方差为1)
Attention缩放因子

Attention缩放因子推导

6. Softmax 手撕

防止溢出的方法

减去最大值(标准)

对每个向量做x = x - max(x),因为 softmax(x) == softmax(x - c)

logsumexp(x)

数值稳定的对数 softmax 计算

手撕MHA,加KV Cache

Multi-Head Attention的KV Cache优化:在自回归生成时,缓存之前计算过的K和V,避免重复计算。

attention计算量大如何优化?

  • MQA (Multi-Query Attention): 多个head共享同一个K和V
  • GQA (Grouped-Query Attention): 多个head分组共享K和V
  • Flash Attention: 通过IO感知的精确注意力算法,减少HBM访问
Softmax实现

Softmax实现与优化

7. 优化器与微调方法

Adam 和 Momentum / RMSProp 的关系

  • Momentum: 只用一阶矩 mt(方向平滑)
  • RMSProp: 只用二阶矩 vt(步长自适应)
  • Adam: 两者合体 + 偏差矫正(更稳)

常用的微调方法

1. 全量微调

从预训练权重继续训练。优点很明显,缺点:容易过拟合或遗忘通用能力

Catastrophic Forgetting如何解决?

  • Mix-in: "新任务数据"与"通用/原始分布数据"混着训
  • Holdout: 维护通用能力测试set,监控新任务&通用能力的loss
  • 早停

2. 参数高效微调 (PEFT)

冻结大部分基座参数,只训练很少新增参数。

2.1 LoRA / QLoRA

原理:学习一个增量矩阵ΔW,并且强行让它是低秩的。就像给大矩阵打一个"轻量补丁"。

LoRA: 在注意力/MLP的线性层上加低秩增量矩阵,只训练这些低秩参数。

QLoRA: 把基座权重量化到4-bit等低比特,仍用LoRA训练(训练更省显存)。

2.2 Adapter

在每层插入小瓶颈网络(adapter block),只训练adapter。

LoRA & Adapter 区别:

  • Adapter(瓶颈小网络): 在每个Transformer block插入一个小模块:down-proj (d→r) → 非线性 → up-proj (r→d),带残差加回去。像在每层旁边加个"小旁路网络",专门学任务增量。
  • LoRA(低秩权重增量): 不改网络拓扑,而是在某些线性层权重上做低秩分解增量:W' = W + ΔW,其中ΔW = B @ A,只训练A/B。不直接动大矩阵W,而是用一个"低秩补丁"去修正它。
2.3 Prefix-Tuning / Prompt-Tuning / P-Tuning v2

不改模型权重或只训练一小段"软提示"(连续向量前缀),用于引导注意力。

3. 训练方法:SFT

(instruction, input → output) 的监督数据做交叉熵训练

实践里常见组合:(继续预训练)→ SFT(常用LoRA/QLoRA)→ 对齐(DPO等)

4. 偏好对齐

  • 4.1 RLHF (PPO): SFT后训练奖励模型(RM),再用强化学习优化
  • 4.2 DPO / IPO / KTO / ORPO: 用成对偏好数据(chosen vs rejected)直接优化对比目标
微调方法

LoRA vs Adapter vs 其他微调方法

8. MOE & DeepSpeed

MOE 混合专家模型

关键:

  • 1. 稀疏MoE层,代替Transformer中的FFN层,作为若干专家
  • 2. 门控路由判断不同的token前往不同的专家,一个token可以被发往多个专家
  • 3. 负载均衡:门控网络往往倾向于主要激活相同的几个专家,所以训练时引入了一个辅助损失,平衡了专家之间的选择

案例:Switch Transformer, 通过MoE层共享参数。模型训练中的多卡并行、模型训练卡通信等相关知识。

DeepSpeed

DeepSpeed提供了多种大模型训练优化技术,包括:

  • ZeRO: 零冗余优化器,分片优化器状态、梯度和参数
  • 3D并行: 数据并行、张量并行、流水线并行的组合
  • 混合精度训练: FP16/BF16训练减少显存占用
MOE & DeepSpeed

MOE混合专家模型与DeepSpeed

9. 其他知识点

AUC & ROC相关计算

ROC曲线:真正例率(TPR) vs 假正例率(FPR)

AUC:ROC曲线下面积,衡量模型分类性能的指标

搜推基础知识

搜索与推荐系统的核心算法和技术栈

损失函数理解

参考资料

AUC & ROC & 损失函数