一、基础概念题

[[挑战16分钟搞定,LoRA与QLoRA深度解析]]

1. 什么是 LoRA?核心思想是什么?

[[【全748集】目前B站最全最细的AI大模型八股文面试全套教程,2026年最新版,包含所有干货!七天就能从小白到大神!少走99%的弯路!存下吧!很难找全的!-P8-RAG技术演进流程]] 回答: LoRA 是大模型高效微调(PEFT)方法,核心思想是:

冻结大模型主干参数,只在 Transformer 的 Attention 层插入两个小的低秩矩阵(A 和 B)训练。

通过低秩矩阵学习增量知识,只训练极少参数(0.1%~1%),就能达到接近全量微调的效果。

2. LoRA 为什么有效?

回答: 大模型微调过程中,参数更新具有低秩特性,真正变化的信息只占很小的子空间。

LoRA 用低秩矩阵建模这个变化,既省显存,又保留表达能力

3. 什么是 QLoRA?它解决了什么问题?

回答: QLoRA = 量化 + LoRA,用 4 bit 量化把模型权重压缩,再配合 LoRA 微调。

解决:单张消费级显卡(如 24 G)也能微调 7 B/13 B/70 B 大模型,极大降低显存门槛。


二、核心区别题

4. LoRA 与全参数微调(Full Fine-tune)的区别?

回答: - 全微调:训练所有参数,显存极高、文件极大、容易过拟合 - LoRA:只训练低秩矩阵,显存低、速度快、文件小(几 MB~ 百 MB)、可插拔切换

5. LoRA 与 QLoRA 的核心区别?

回答: - LoRA:用 FP 16/BF 16 训练,需要较高显存 - QLoRA:在 4 bit 量化权重上跑 LoRA,显存再减少 75% - 效果:QLoRA 几乎无损 LoRA 效果

6. QLoRA 为什么不会掉点?(为什么量化不影响效果?)

回答: 因为用了 4 bit NormalFloat、双量化、Paged Optimizer 等技术,把量化误差压到最低,

同时冻结量化后的主干模型,只靠 LoRA 学习,效果基本无损。


三、原理细节题

7. LoRA 一般加在哪些层?为什么?

回答:

主要加在 Attention 的 q、k、v、o 投影层,最常用是 q+v 或者 q+k+v

因为 注意力层是语义理解核心,微调效果最好;MLP 层加不加影响不大。

8. LoRA 的秩 r(rank)怎么选?

回答: - 常用:8、16、32、64 - r 越大:表达能力越强、参数量越大、显存越高 - 经验值:r=8 / 16 通用最优

9. LoRA 训练时,主干模型是否更新?

回答:

主干完全冻结,不更新,只训练 A、B 两个小矩阵。

这是 LoRA 省显存、可插拔、多任务不冲突的关键。


四、落地 / 工程题

10. LoRA 模型如何合并到基模型?为什么要合并?

回答:

训练后把 W = W 0 + BA 合并成一个权重。

目的:

  • 推理速度变快
  • 部署方便(像普通模型一样用)
  • 去掉 LoRA 结构,兼容所有框架

11. QLoRA 支持哪些量化精度?

回答:

主流是 4 bit,也支持 8 bit;

4 bit 是性价比最高的方案,显存最低、效果最好。

12. LoRA 优点总结(必背)

回答: 1. 显存占用极低 2. 训练速度快 3. 模型文件极小(KB/MB 级) 4. 可插拔、可切换、多任务独立 5. 效果接近全量微调 6. 部署简单、可合并

LoRA / QLoRA 深度面试题(算法 + 计算向)


一、公式 & 前向传播计算类(必考)

1. 请写出 LoRA 的前向传播公式,并解释参数量计算

标准答案:

LoRA 公式:

plaintext

h = W0 * x + BA * x
  • W0:预训练模型权重(冻结)
  • A:低秩矩阵,输入维度 d → r
  • B:低秩矩阵,输入维度 r → d
  • r:秩(rank)

参数量计算:

plaintext

参数量 = d * r + r * d = 2 * d * r

例子:

  • 模型维度 d=4096r=8

  • LoRA 参数量 = 2 * 4096 * 8 = 65536

  • 而全量参数是 4096*4096=16M

    相差 256 倍!


2. LoRA 为什么先乘 A 再乘 B?反过来行不行?

标准答案:

不行,必须是:

plaintext

x → A(d→r)→ B(r→d)

因为:

  • A 随机初始化

  • B 初始化为 0

    → 确保训练开始时 LoRA 输出为 0,不破坏原模型输出。

如果反过来,初始化无法保证为 0,破坏模型稳定性。


3. LoRA 的微调过程中,梯度回传到哪里?

标准答案:

梯度只回传到 A 和 B

主干 W0 完全冻结,不接收梯度,不更新


二、矩阵低秩本质类(深度题)

4. 为什么大模型的增量更新 ΔW 是低秩的?

标准答案:

大模型在预训练后已学到大量知识,微调只学习少量新增知识

模型参数的更新主要集中在低维子空间,不是全空间变化。

因此 ΔW 可以被低秩矩阵 BA 精准近似。

一句话:

增量知识 << 模型总知识 → 低秩表达足够。


5. LoRA 的 rank 大小如何影响效果?

标准答案:

  • r 太小:表达能力不足,学不进新知识
  • r 太大:参数量变大,过拟合风险上升,显存增加
  • sweet spot8~16 是通用最优

三、QLoRA 量化原理类(大厂高频)

6. QLoRA 为什么用 4 bit NF 4?为什么不用普通 INT 4?

标准答案:

  • 模型权重服从正态分布
  • NF 4(NormalFloat 4 bit)对正态分布数据量化误差最小
  • INT 4 均匀量化 → 误差大、效果掉点

一句话:

NF 4 专为大模型权重分布设计,精度最接近 FP 16。


7. QLoRA 的双量化(Double Quantization)是什么?解决什么?

标准答案:

量化常数再做一次量化。

目的:

进一步降低显存,比普通 4 bit 再省 1.5% 显存。


8. Paged Optimizer 作用是什么?

标准答案:

解决显存碎片问题,防止梯度 / 优化器状态爆显存。

保证4 bit 训练时显存稳定不溢出


四、显存计算类(最容易考)

9. 用 LoRA 训练 7 B 模型,需要多少显存?

标准答案:

  • 7 B 模型 FP 16:26 GB
  • LoRA 只加少量参数(几 MB)
  • 所以 24 G 显卡可以跑

如果是 QLoRA(4 bit):

  • 7 B 模型只占 7 GB 显存
  • 笔记本都能训

10. 计算:d=4096,r=16,一个 LoRA 层参数量是多少?

答案:

plaintext

2 * 4096 * 16 = 131072

五、训练 & 推理工程类(深度)

11. LoRA 训练时,为什么要加 alpha 缩放?

公式:

plaintext

LoRA_output = (BA * x) * alpha / r

标准答案:

控制 LoRA 输出的尺度,避免破坏原模型分布。

alpha 通常设置为 = r,这样缩放系数 = 1。


12. LoRA 推理时,为什么可以把 BA 合并到 W 0?

标准答案:

因为:

plaintext

W0 x + BA x = (W0 + BA) x

可以提前合并成一个矩阵,推理无损耗、不掉点、速度变快


13. LoRA 和 Adapter 有什么区别?

标准答案:

  • Adapter:在 FFN 层新增模块,推理延时增加
  • LoRA:低秩矩阵,可合并,推理零延时
  • LoRA 效果更稳、速度更快、显存更低

六、面试官压箱底终极三问

14. LoRA 的局限性是什么?

标准答案:

  • 只能学习增量知识,不能完全改变模型行为
  • 复杂任务(数学、代码)可能不如全量微调
  • 只加在 attention 层,MLP 不训练

15. QLoRA 会影响最终模型效果吗?

标准答案:

几乎不影响。

4 bit NF 4 + 双量化 + 冻结主干 → 精度损失可以忽略。


16. 为什么 QLoRA 训练时,模型权重是量化的,但计算仍以 FP 16/BF 16 进行?

标准答案:

量化只用于存储

前向计算时会反量化回 FP 16

→ 计算精度不变,显存大幅降低。


最终 10 题极速背诵版(面试前看)

  1. LoRA 公式:h = W0x + BAx,只训练 A、B
  2. 参数量:2*d*r
  3. rank 推荐 8~16
  4. LoRA 冻结主干,不更新原模型
  5. QLoRA = 4 bit NF 4 + LoRA
  6. QLoRA 单卡 24 G 可训 7 B/13 B
  7. LoRA 可合并权重,推理无损耗
  8. 增量更新 ΔW 具有低秩特性
  9. QLoRA 存储量化,计算反量化
  10. LoRA 比 Adapter 更快、更稳