← 返回题目列表

QLoRA 的原理是什么?4-bit 量化权重真的参与训练吗?

高频 困难 第 10 / 26 题 更新于 2026/09/18
QLoRA4-bit量化NF4LoRA

简化版

QLoRA 把冻结的基座权重以 4-bit 形式存储,在计算时反量化到计算精度,并只训练 LoRA Adapter。4-bit 基座参数本身不通过优化器更新;梯度会穿过反量化计算流向通常使用更高精度保存的 LoRA 参数。

详细版

原始 QLoRA 的关键点包括:

  1. 使用适合近似正态权重分布的 4-bit NormalFloat(NF4);
  2. 对量化常数再次量化,称为 Double Quantization;
  3. 通过 Paged Optimizers 缓解长序列训练时的显存峰值;
  4. 冻结量化基座,在选定线性层训练 LoRA;
  5. 矩阵计算使用 bf16、fp16 等计算精度,而不是所有运算都在 4-bit 中完成。

QLoRA 主要减少基座权重和 Adapter 训练的显存门槛,但激活值、临时反量化缓冲和 LoRA 优化器状态仍占资源。它不是“把整个模型用 4-bit 做全量微调”。

完整版教学

记忆钩子:4-bit 是冻结基座的存储格式,反量化后参与计算,真正更新的是高精度 LoRA。

一、量化与微调怎样结合

普通 LoRA 的基座仍可能以 16-bit 加载,模型很大时仅权重就占大量显存。QLoRA 将冻结权重压到 4-bit 存储,前向和反向需要矩阵计算时再反量化到计算类型。

因为基座冻结,优化器不更新离散的 4-bit 值;真正学习的是 LoRA 增量。

二、NF4 解决什么

NF4 的量化区间针对近似正态分布权重设计,使有限的 4-bit 编码更有效地覆盖常见权重值。它是原始论文的重要设计,但实际效果仍依赖模型、量化实现和硬件。

Double Quantization 进一步压缩每个量化块所需的缩放常数,减少附加元数据。

三、Paged Optimizer 的作用

训练中的激活和优化器状态可能出现瞬时显存峰值。原始 QLoRA 借助统一内存分页管理,在峰值时降低直接 OOM 的风险。

这不等于没有代价:主机与设备之间的数据迁移可能影响性能,具体行为取决于实现。

四、计算精度别混淆

“4-bit 微调”描述的是基座权重存储,不代表梯度、激活和矩阵累加全部使用 4-bit。常见配置使用 bf16 计算,并以 fp32 或其他精度保存部分状态。

硬件不良好支持 bf16 时,应结合 fp16 的数值稳定性和实际吞吐选择。

五、QLoRA 的限制

  • 量化误差可能影响对精度敏感的任务;
  • 反量化带来额外计算;
  • 并非所有算子和硬件都高效支持;
  • Adapter 容量仍受 rank 与目标层限制;
  • 合并、再量化时可能再次引入误差;
  • 训练显存不会按权重位数等比例下降。

六、如何验证配置

先确认基座参数全部冻结,打印可训练参数,并逐层核对量化类型、compute dtype 与 LoRA 命中模块。再用小批量跑完整前后向,监控峰值显存、NaN/Inf 和梯度是否只出现在 Adapter。质量比较至少包含未量化 LoRA 或基座对照,同时验证保存重载后的输出一致性与推理引擎兼容。

七、分清存储精度与计算精度

7B 参数若以 BF16 存储,权重约 14 GB;理想 4-bit 裸权重约 3.5 GB,实际还会有量化尺度、元数据与运行时开销。QLoRA 前向时把冻结的 4-bit 权重按块反量化到 BF16/FP16 参与矩阵计算,梯度只更新 LoRA 参数,并不会直接修改 4-bit 整数码。

对象是否训练常见精度
基座权重存储NF4/4-bit
矩阵计算参与计算但不更新BF16/FP16
LoRA 参数BF16/FP16
优化器状态仅对应 LoRAFP32/8-bit 等
4-bit frozen weight -> dequantize to BF16 -> matmul
BF16 activation ------------------------^
LoRA path (trainable BF16) -> add to output

QLoRA 的显存优势不代表与全量 BF16 微调完全等价。要对量化基座、LoRA 目标模块、compute dtype 和双重量化逐项记录,并检查吞吐、峰值显存、目标质量与合并/服务兼容性。

八、常见误区与追问

  • 误区:QLoRA 会训练并更新 4-bit 基座权重。 基座量化权重冻结,训练的是附加 LoRA 参数。
  • 追问:4-bit 权重如何参与矩阵乘? 计算前按块反量化到计算 dtype,再与激活做运算。
  • 误区:NF4、BF16 和 FP32 是同一个精度位置。 它们分别可能用于权重存储、前向计算和优化器状态,职责不同。
  • 追问:Paged Optimizer 解决什么? 它缓解长序列或批次波动造成的瞬时显存峰值,不改变 LoRA 数学。
  • 追问:QLoRA 如何验收? 与 BF16 LoRA/基座比较质量、峰值显存、吞吐,并验证保存、加载和服务兼容。

九、加强记忆

QLoRA 用 4-bit 格式保存冻结基座,前向时反量化到计算精度,梯度只更新 LoRA 参数;存储精度、计算精度与优化器精度不能混为一谈。NF4、双重量化和 Paged Optimizer 分别解决分布适配、量化元数据与显存峰值问题。验收要同时比较质量、峰值显存、吞吐和部署兼容,而不是只看能否在单卡启动。