QLoRA

分类: 量化与低秩

QLoRA

定义

QLoRA(Quantized LoRA)是 Dettmers et al. (2023) 提出的一种高效微调方法,将预训练模型量化为 4-bit(NormalFloat4),在量化基础上添加低秩适配器(LoRA),使 65B 参数模型可以在单张 48GB GPU 上微调,同时保持与全参数微调相当的性能

数学形式

LoRA 的核心思想——冻结预训练权重 W0W_0,仅训练低秩增量: W=W0+ΔW=W0+BAW = W_0 + \Delta W = W_0 + BA

其中 BRd×rB \in \mathbb{R}^{d \times r}ARr×kA \in \mathbb{R}^{r \times k}rmin(d,k)r \ll \min(d, k)

QLoRA 的三个关键创新:

  • 4-bit NormalFloat(NF4)量化:Q(w)=NF4(w)Q(w) = \text{NF4}(w),基于正态分布分位数的最优量化
  • 双重量化(Double Quantization):对量化常数再量化,节省约 0.37 bit/参数
  • 分页优化器(Paged Optimizers):利用 NVIDIA 统一内存避免 OOM

核心要点

NormalFloat4(NF4):假设预训练权重近似正态分布,用正态分布的分位数作为量化节点——理论上是正态分布数据的信息论最优 4-bit 量化

显存节省:65B 模型从 ~130GB(FP16)压缩到 ~33GB(NF4),加上 LoRA 适配器和优化器状态,单张 A100-48GB 即可微调

Guanaco:QLoRA 训练的对话模型,在 Vicuna benchmark 上达到 ChatGPT 性能的 99.3%,仅用 24 小时单卡训练

LoRA rank 选择:实验发现 r=64r=64 在多数任务上效果最佳,但 r=16r=16 已足够好

与全参数微调的对比:在 MMLU 等基准上,QLoRA 微调的模型与 16-bit 全参数微调性能持平

适用场景:资源受限的 LLM 微调、领域适配、指令微调

CS224N 讨论 LLM 高效训练和适配时的核心技术

代表工作

QLoRA: Efficient Finetuning of Quantized LLMs (Dettmers et al., 2023)

LoRA: Low-Rank Adaptation of Large Language Models (Hu et al., 2022)

相关概念

Alignment

Gradient Descent