核心区别
LoRA (Low-Rank Adaptation)
- 参数高效微调方法
- 冻结原始模型权重,只训练低秩适配器(adapter)
- 模型以全精度(FP16/BF16)加载到显存
- 显存占用较高,适合显存充足的情况
QLoRA (Quantized LoRA)
- LoRA + 量化(Quantization)
- 将模型量化为 4-bit(或 8-bit),再应用 LoRA
- 显存占用显著降低,可在消费级 GPU 上训练大模型
技术细节对比
| 特性 | LoRA | QLoRA |
|---|---|---|
| 量化 | ❌ 无量化 | ✅ 4-bit/8-bit 量化 |
| 显存占用 | 较高(全精度模型) | 低(量化模型) |
| 训练速度 | 较快 | 稍慢(量化开销) |
| 精度损失 | 无量化损失 | 有量化损失(通常可接受) |
| 适用场景 | 显存充足 | 显存受限 |
代码示例
quantization_config=BitsAndBytesConfig(
load_in_4bit=True, # 4-bit 量化
bnb_4bit_compute_dtype=torch.float16, # 计算时使用 FP16
bnb_4bit_use_double_quant=True, # 双重量化提高精度
bnb_4bit_quant_type="nf4" # NF4 量化类型
)
如果使用标准 LoRA,只需注释掉 BitsAndBytesConfig 配置即可。
选择建议
- 使用 QLoRA:显存受限(如 Colab T4)、需要训练大模型(7B+)
- 使用 LoRA:显存充足、追求更快训练速度、需要更高精度
QLoRA 是 LoRA 的量化版本,核心思想相同,但通过量化进一步降低显存需求。