找回密码
立即注册
搜索
发回帖 发新帖

5156

积分

0

好友

661

主题
发表于 2 小时前 | 查看: 8| 回复: 0

发现 LoRA 很适合作为面试题来考察。首先,基本大模型领域人人都用过,候选人即便是没实际训过模型,也多半对 LoRA 有所耳闻;其次,LoRA 既涉及工程落地经验,也牵扯到数学原理,无论面试对象是初级还是高级,都能试探出深浅。

一、基础认知与实践经验:破冰与背景考察

1. 你在什么场景下使用过 LoRA?具体微调的是什么模型?

考察点在于了解候选人的真实项目经历。究竟只是跑通了开源脚本(如 LLaMA-Factory),还是具备实际的业务落地能力(例如垂直领域知识注入、角色扮演、代码生成等)。

2. LoRA 与全量微调(Full Fine-Tuning,FFT)相比,在显存消耗、训练速度和最终效果上有什么差异?

参考要点如下:

  • 显存:大幅降低。通常只需 FFT 的 1/3 到 1/10,因为无需保存全量参数对应的优化器状态和梯度。
  • 速度:训练更快,因为计算梯度的参数量大幅减少。
  • 效果:在大部分下游任务中,LoRA 可以达到与 FFT 媲美的效果(通常能达到 90% 以上);但在需要注入大量全新知识的场景下,FFT 的上限往往更高。

3. 在训练 LoRA 时,你通常会调整哪些超参数?它们分别有什么作用?

秩大小(Rank,$r$)、缩放系数(Alpha,$\alpha$)、Dropout 率、学习率(LR)、作用的模块(Target Modules)都是常见调整项。

二、核心原理与数学基础:深度考察

4. 请简述 LoRA 的核心原理。

核心思想是冻结预训练模型的权重 $W_0$,通过引入两个低秩矩阵 $A$ 和 $B$ 来近似权重的更新量 $\Delta W$。

前向传播公式变为:

$$h = W_0x + \Delta Wx = W_0x + BAx$$

其中 $A$ 通常使用高斯分布初始化,$B$ 使用零初始化,这样能保证训练开始时 $\Delta W = 0$。

5. 什么是低秩矩阵?什么是低秩分解?为什么大模型的权重更新可以被假设为低秩的?

  • 低秩矩阵:矩阵的秩(线性无关的行或列的最大数量)远小于其行数或列数。
  • 低秩分解:将一个大矩阵近似表示为两个小矩阵的乘积。例如将 $d \times d$ 的矩阵分解为 $d \times r$ 和 $r \times d$ 两个矩阵的乘积,其中 $r \ll d$。
  • 为什么可行:借鉴了 Aghajanyan 等人(2020)的研究结论——预训练大模型具有极低的"内在维度"(Intrinsic Dimension)。模型在预训练阶段已学到通用表征,下游任务的微调只需在特定的低维子空间内进行参数更新即可。

6. 你还知道其他的矩阵分解方法吗(如 SVD、PCA 等)?为什么 LoRA 不直接使用 SVD 进行分解?

  • 其他方法:奇异值分解(SVD)、主成分分析(PCA)、LU 分解、QR 分解等。
  • 为什么不用 SVD:SVD 是对已确定的矩阵做分解。但在微调开始时,我们并不知道目标更新矩阵 $\Delta W$ 是什么——它是需要通过反向传播学出来的。
  • LoRA 的做法是直接定义两个低秩矩阵 $A$ 和 $B$ 作为可学习参数,通过梯度下降让模型自行寻找最优的低秩空间,而非对已知矩阵做数学分解。

7. LoRA 公式中通常有一个缩放因子(Scaling factor,通常是 $\alpha/r$),它的作用是什么?

它的作用是在改变秩 $r$ 的大小时,保持梯度和激活值的数量级稳定。调参时通常会固定 $\alpha$ 和 $r$ 的比例(例如 $\alpha = 2r$),这样调整 $r$ 时就不需要大幅修改学习率。

三、工程细节与调优:考察踩坑经验

8. LoRA 通常作用于 Transformer 的哪些模块?只微调 Attention 模块和同时微调 MLP 模块有什么区别?

最初的 LoRA 论文主要作用于 Attention 的 $W_q$ 和 $W_v$。

但后续实践(如 QLoRA 论文)表明,将 LoRA 应用于所有线性层——包括 $W_k$、$W_o$ 以及 MLP 层的 gate_proj、up_proj、down_proj——通常能取得更好的效果,代价是参数量会略有增加。

9. LoRA 在推理(Inference)阶段会增加延迟吗?为什么?

不会增加延迟。

因为在推理前,可以通过重参数化(Reparameterization)把训练好的低秩矩阵合并到原权重中:

$$W_{merged} = W_0 + BA$$

推理时只需使用 $W_{merged}$ 进行计算,网络结构和参数量与原模型完全一致。

10. 如果在使用 LoRA 微调时发现模型出现了严重的"灾难性遗忘"(比如只会回答特定领域问题,丧失了通用对话能力),你会怎么排查和解决?

排查与解决思路:

  • 减小 $r$ 或 $\alpha$;
  • 降低学习率;
  • 在训练数据中按比例混合通用领域的预训练/指令微调数据(Data Mixing);
  • 减少训练的 Epoch。

四、前沿变体与横向对比:区分优秀候选人

11. 了解过 QLoRA 吗?它和普通的 LoRA 有什么区别?

QLoRA 引入了 4-bit NormalFloat(NF4)量化、双重量化(Double Quantization)和分页优化器(Paged Optimizers)。

区别在于:LoRA 的基座模型通常以 FP16/BF16 加载,而 QLoRA 将基座模型量化到 4-bit,大幅降低了显存需求(可以在单张 24G 显卡上微调 33B 模型),同时通过 LoRA 保持了接近全量微调的性能。

12. 社区后来提出了很多 LoRA 的变体,比如 AdaLoRA、DoRA 等,你能挑一个讲讲它解决了 LoRA 的什么痛点吗?

  • AdaLoRA:解决了 LoRA 中所有模块共享相同秩 $r$ 的问题,它可以根据模块重要性动态分配秩的大小,对更重要的层分配更大的 $r$。
  • DoRA(Weight-Decomposed Low-Rank Adaptation):将权重分解为"幅度"(Magnitude)和"方向"(Direction),只对方向进行低秩更新,效果比普通 LoRA 更好,学习模式更接近全量微调。

13. 除了 LoRA 系列,你还了解哪些 PEFT(参数高效微调)方法?

Prompt Tuning、Prefix Tuning、P-Tuning v2、Adapter 等都属于此列。

候选人能说出它们的大致原理即可,比如在输入前拼接可学习的 Embedding,或在 Transformer 块之间插入小型网络。

面试官使用建议

  • 初级/中级候选人:重点考察第一层和第三层,确认他们能干活,知道如何调参和合并模型。
  • 高级/算法研究员候选人:重点考察第二层和第四层,要求不仅知其然,还要知其所以然,并且对前沿论文保持持续跟进。

作者:DolbyUUU,来源:知乎专栏




上一篇:千万 QPS 架构容灾演练:桌面推演到全链路切换的 5 级演进
下一篇:抓包分析与网络调试面试自测:10道高频考题详解
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-4 06:10 , Processed in 0.065047 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表