QLoRA原理
量化LoRA的核心技术原理
核心思想
QLoRA(Quantized Low-Rank Adaptation)通过4位量化压缩基础模型, 同时使用LoRA进行参数高效微调,实现了在单张消费级GPU上微调大模型的能力。
# QLoRA = 量化 + LoRA
FP16模型 → 4bit量化 → 冻结 → LoRA适配器训练
# 显存节省约75%
三大创新
1. 4-bit NormalFloat (NF4)
专为正态分布权重设计的信息论最优量化数据类型。
# NF4优势
- 权重通常服从正态分布
- NF4在正态分布下量化误差最小
- 比均匀量化保持更好精度
2. 双重量化 (Double Quantization)
对量化常数本身再量化,进一步节省显存。
标准量化: W = Q(W, c), c是FP32常数
双重量化: c = Q(c, c'), c'是FP8常数
# 节省约0.5GB/65B模型
3. 分页优化器 (Paged Optimizer)
使用统一内存,在GPU显存不足时自动迁移到CPU内存。
# 解决方案
- 优化器状态存储在统一内存
- GPU-CPU自动数据迁移
- 避免OOM崩溃
量化精度对比
| 量化方式 | 位宽 | 压缩比 | 精度保持 |
|---|---|---|---|
| FP16 | 16 bit | 1x | 100% |
| INT8 | 8 bit | 2x | ~99% |
| FP4 | 4 bit | 4x | ~95% |
| NF4 | 4 bit | 4x | ~97% |
计算流程
1加载4位量化模型到GPU
2前向传播时反量化为FP16计算
3梯度仅更新LoRA参数(FP16)
4基础模型权重保持冻结
与LoRA对比
LoRA
- • 基础模型FP16
- • 需要较多显存
- • 训练速度较快
- • 精度完全保持
QLoRA
- • 基础模型4bit
- • 显存需求极低
- • 训练稍慢(反量化)
- • 精度几乎无损
----