SFT 与 LoRA:精简八股与标准答案

面向大模型算法 / AI Agent 算法岗。18 题,P0 优先;每题提供“面试口述版”及必要追问。先掌握 SFT 与 LoRA 的基本原理,不讨论复杂分布式训练。题目为常见面试知识点的整理,不声称逐字来自特定公司面经。

P0:SFT 基础(1–7)

1. 什么是 SFT?与预训练有什么区别?

面试口述版: SFT(Supervised Fine-Tuning)是监督微调,用高质量的输入—目标输出样本进一步训练预训练模型,使其更符合指令、输出格式或特定任务要求。预训练通常通过大规模文本学习通用语言分布,SFT 更强调在给定指令下产生期望的回答。二者都可能使用 next-token prediction 的交叉熵损失,主要区别在数据分布与训练目的。

2. 从原始数据到 SFT 参数更新的完整流程是什么?

面试口述版: 收集和清洗样本 → 构造 prompt/response 或多轮 chat 格式 → 应用 chat template → tokenizer 编码 → 截断、padding 和 attention mask → 构造 labels 与 loss mask → 前向传播得到 logits → 计算 token-level 交叉熵 → 反向传播 → optimizer 更新 → 验证与保存。训练通常使用 teacher forcing:每一步给模型真实历史 Token,并预测下一个 Token。

3. SFT 的损失函数是什么?为什么是交叉熵?

面试口述版: 核心是目标回答 Token 的负对数似然:

$$ \mathcal L_{\mathrm{SFT}}(\theta)=-\frac{1}{|\mathcal M|}\sum_{t\in\mathcal M}\log p_\theta(y_t\mid x,y_{<t}), $$

其中 $x$ 是 prompt,$y_t$ 是目标回答的第 $t$ 个 Token,$\mathcal M$ 是参与 loss 的 Token 位置集合。最小化负对数似然,就是提高标注回答出现的条件概率。实际实现中通常通过模型输出 logits 计算交叉熵。

4. Teacher Forcing 是什么?训练与推理有什么区别?

面试口述版: 训练时预测 $y_t$ 所用的前文是数据中的真实 $y_{<t}$,这叫 teacher forcing;推理时模型必须依赖此前自己生成的 Token 自回归生成。两者的上下文分布可能不同,这也是 exposure bias 的来源之一。

5. SFT 中 Prompt 部分是否计算 Loss?如何 Mask?

面试口述版: 指令微调经常只对 assistant 的目标回答计算损失,将 system/user/prompt 和 padding 对应的 labels 设为 -100(PyTorch CrossEntropyLoss 常用 ignore_index),只保留目标回答 Token。但并非所有 SFT 都必须这样做;语言建模式训练也可以对全序列计算 loss。要区分 attention mask(哪些位置参与注意力)与 loss mask(哪些位置参与损失)。

6. SFT 数据质量为什么重要?如何构造和清洗?

面试口述版: SFT 直接拟合标注输出,因此标注准确性、指令覆盖度和格式一致性往往比盲目堆数量重要。应去重、去泄漏、检查拒答与边界样本,统一 chat template,过滤低质量或自相矛盾回答,合理覆盖任务类型,并保留独立验证集。

7. 如何评估 SFT 是否有效?训练 Loss 下降够吗?

面试口述版: 不够。训练 loss 下降只能说明模型更好拟合训练样本,需在独立测试集上看任务准确率、格式正确率、泛化表现、人工评估以及幻觉与安全性,还要对比训练前的基线模型,检查过拟合和能力退化。

P0:LoRA 核心(8–14)

8. 什么是 LoRA?为什么能减少微调成本?

面试口述版: LoRA(Low-Rank Adaptation)是参数高效微调方法。它冻结预训练权重 $W_0$,只学习一个低秩更新 $\Delta W=BA$,把大矩阵更新分解为两个小矩阵,因此减少可训练参数和优化器状态的开销。LoRA 并不等于将整个基础模型压缩成低秩矩阵。

9. 请写出 LoRA 的核心公式并解释维度。

面试口述版: 对原线性层 $y=W_0x$,LoRA 改成

$$ y=W_0x+\frac{\alpha}{r}BAx. $$

若 $W_0\in\mathbb R^{d_{out}\times d_{in}}$,则 $A\in\mathbb R^{r\times d_{in}}$、$B\in\mathbb R^{d_{out}\times r}$,其中 $r\ll\min(d_{in},d_{out})$。$W_0$ 冻结,训练 $A,B$;$\alpha/r$ 是常见的 LoRA 缩放系数。不同变体可能采用不同缩放。

10. LoRA 可训练参数量怎么算?举例。

面试口述版: 原矩阵参数量是 $d_{out}d_{in}$,LoRA 新增可训练参数量是 $r(d_{in}+d_{out})$。若原矩阵为 $4096\times4096$、$r=8$:全量为 $16,777,216$,LoRA 为 $8\times(4096+4096)=65,536$,即针对这一层矩阵的可训练参数约为原来的 $0.39\%$。全模型比例还取决于插入哪些层。

11. 为什么低秩分解能起作用?LoRA 的局限性是什么?

面试口述版: LoRA 基于一个经验假设:特定任务所需的权重更新可能具有较低的有效秩,因此不需要为每个权重都训练独立更新。限制是当任务变化复杂、rank 太小或适配层不足时,表达能力可能受限;它也不能从原理上保证与全参数微调完全等价。

12. LoRA 的 r、alpha、dropout、target_modules 分别是什么?

面试口述版: r 是低秩维度,越大通常表达能力和训练成本越高;lora_alpha 控制更新幅度的缩放;lora_dropout 对 LoRA 路径进行正则化;target_modules 指定在哪些模块注入 LoRA,例如注意力的 q_proj、v_proj,也可覆盖更多线性层。具体参数需通过验证集调节,不存在对所有模型都最优的固定值。

13. LoRA 为什么常初始化为 A 随机、B 为零?

面试口述版: 初始化 $B=0$ 可使 $BA=0$,因此训练起始时网络与原模型完全一致,不会因随机适配器改变原输出。随后优化器逐步学习低秩更新。实现中可能采用其他等效或改进初始化方案。

14. LoRA 和全参数微调有什么区别?推理时能否 Merge?

面试口述版: 全参数微调更新大量原始权重,LoRA 冻结原权重,只更新小型适配矩阵,通常更节省可训练参数、优化器状态和多任务存储成本。对于标准线性 LoRA,可把 $W'=W_0+(\alpha/r)BA$ 合并回原矩阵,在不保留独立适配器调用的情况下推理。是否完全等价取决于推理精度、量化以及实际实现细节。

P1:高频对比与追问(15–18)

15. SFT 和 LoRA 是什么关系?可以同时用吗?

面试口述版: SFT 是训练目标/阶段,LoRA 是参数更新方式,两者不在一个概念维度上。SFT 可以采用全参数微调,也可以采用 LoRA;反过来,LoRA 也可应用于其他训练目标。SFT + LoRA 指用 SFT 目标训练 LoRA 适配器。

16. LoRA 和 QLoRA 的区别是什么?

面试口述版: 标准 LoRA 在冻结的基础权重上增加可训练低秩矩阵;QLoRA 进一步把冻结的基础模型权重量化(经典方案为 4-bit),在量化底座上反向传播训练 LoRA 参数,以进一步节省显存。量化并非把 LoRA 的 A/B 矩阵也都直接变成 4-bit 训练。训练速度和数值表现取决于硬件、实现及量化配置。

17. SFT 和 DPO、GRPO 有什么区别?

面试口述版: SFT 用目标答案做监督学习,让模型模仿示范输出;DPO 通常利用偏好成对数据直接优化偏好目标,无需在线采样与独立奖励模型;GRPO 属于基于组内相对奖励的策略优化,采样多个回答、计算相对优势,再用策略目标更新。SFT 常用于先建立指令遵循能力,之后可以视目标再做偏好优化或强化学习,但不是固定必须的顺序。

18. 如果项目需要小样本定制能力,你会如何选择 SFT + LoRA?

面试口述版: 我会先判断需求是否真的需要参数更新:若仅需补知识优先考虑 RAG,若需要更稳定的输出格式、工具调用行为或任务风格,才考虑 SFT。资源有限时可以用 LoRA 进行 SFT,准备高质量的指令—回答样本,分离训练验证数据,基于准确率、格式通过率及基线对比评估,再决定是否调整 rank、目标层或者升级到全参数微调。不要把尚未实施的微调当作已完成的项目成果。


面试速记(最重要的六句话)

  1. SFT 是监督微调,常用目标回答的 Token 交叉熵。
  2. Teacher forcing:训练用真实前文,推理用模型生成前文。
  3. 只训练回答时,Prompt 的 labels 可设为 -100;这与 attention mask 不同。
  4. LoRA:$W=W_0+\frac{\alpha}{r}BA$,冻结 $W_0$,训练 $A,B$。
  5. LoRA 参数量:$r(d_{in}+d_{out})$;rank 越大不保证性能一定越好。
  6. SFT 是训练目标;LoRA 是微调技术,可同时使用。

推荐复习顺序

1 → 2 → 3 → 5 → 8 → 9 → 10 → 12 → 15 → 16 → 17,其余作为追问。

参考资料

本资料归纳公开论文与官方技术文档中的核心考点,偏向算法岗通用问法,不代表具体企业的原题逐字复现。

站内搜索

没有找到内容!