一、基础概念题
[[挑战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 → rB:低秩矩阵,输入维度r → dr:秩(rank)
参数量计算:
plaintext
参数量 = d * r + r * d = 2 * d * r
例子:
模型维度
d=4096,r=8LoRA 参数量 =
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 spot:8~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 题极速背诵版(面试前看)
- LoRA 公式:
h = W0x + BAx,只训练 A、B - 参数量:
2*d*r - rank 推荐 8~16
- LoRA 冻结主干,不更新原模型
- QLoRA = 4 bit NF 4 + LoRA
- QLoRA 单卡 24 G 可训 7 B/13 B
- LoRA 可合并权重,推理无损耗
- 增量更新 ΔW 具有低秩特性
- QLoRA 存储量化,计算反量化
- LoRA 比 Adapter 更快、更稳