先这样答
QLoRA 是 LoRA 的省显存变体,思路分两步:先把冻结不动的基座权重做低位宽量化存储,常规用 4 bit,也就是每个权重只用 4 个比特保存;再在这份量化基座上加 LoRA 旁路矩阵,训练只更新这些高精度的小矩阵。
为什么能省:微调的显存大头在基座权重,全量微调还要为它们保留梯度和优化器状态。QLoRA 把基座权重的存储压到 4 bit,基座本身不训练,没有梯度和优化器开销,可训练的只有很小的 LoRA 部分。计算时量化权重会反量化回高位宽参与运算,精度损失主要来自这层存储压缩。
一句总结:QLoRA 等于「量化存储的基座加 LoRA 训练」,让单张消费级显卡也能微调很大的模型。代价是训练速度慢一些,量化对最终效果也可能有轻微影响,对质量苛刻的任务建议和普通 LoRA 对比后再定。
面试官会怎么追问
- 「QLoRA 和 LoRA 的产物通用吗?」 通用。QLoRA 训出来的 LoRA 权重和普通 LoRA 是同一种东西,可以合并回原精度基座做推理,也可以直接挂在量化基座上跑,切换成本很低。
- 「量化会不会影响训练效果?」 基座权重冻结,参数更新全在高精度的 LoRA 部分,但量化的精度损失会通过前向计算影响梯度。多数任务影响可以接受,敏感任务建议做对比实验,不要默认无损。
- 「什么时候不用 QLoRA?」 模型不大、单卡本来就装得下时,量化省下的显存有限,反而添了一道量化开销;追求效果上限、预算充足的场景,直接上更高精度的 LoRA 或全量微调更省心。
回答的坑
- 把 QLoRA 说成一种新的训练算法。它是「量化基座加 LoRA」的组合方案,训练机制还是 LoRA 那一套,说得越玄越暴露没看过实现。
- 默认量化零损失。低位宽存储一定带精度代价,多数任务上看不太出来,不代表所有任务都看不出来,结论要靠对比实验给。
同系列的题
—— 本题完 ——