LoRA与QLoRA:大语言模型参数高效微调深度实战
引言
大语言模型(LLM)的参数规模从十亿到万亿不等,全量微调(Full Fine-tuning)虽然效果强大,但其计算和内存成本往往让个人开发者和小团队望而却步。以70B参数的模型为例,全量微调需要超过140GB显存(BF16权重 优化器状态 梯度),这远超单张A100 80GB显存的承载能力。参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)技术的出现,使得在消费级GPU上微调超大规模模型成为现实。
本文深入剖析最具代表性的PEFT方法——LoRA(Low-Rank Adaptation)及其量化版本QLoRA,从数学原理到工程实践完整覆盖,带你彻底掌握大语言模型微调的核心技术。
为什么需要参数高效微调?
全量微调的瓶颈
全量微调需要对模型中每一个参数计算梯度并更新,对于一个N参数的模型,至少需要以下显存开销:
| 组件 | 精度 | 显存 (以70B模型为例) |
|---|---|---|
| 模型权重 | BF16/FP16 | ~140 GB |
| 梯度 | BF16/FP16 | ~140 GB |
| 优化器状态 (Adam) | FP32 | ~560 GB |
| 激活值/中间状态 | BF16 | ~280 GB |
总计:超过1TB显存——这需要8张A100 80GB组成集群,对于研究者来说成本极高。
PEFT核心思想
PEFT的核心洞察是:尽管预训练模型参数量巨大,但微调是对模型的"低秩"改变——即微调前后的差异矩阵$\Delta W。因此,我们只需引入少量的可训练参数(通常少于原模型参数的1%),冻结原始权重,即可达到接近全量微调的效果。
LoRA:低秩分解的数学原理
核心公式
LoRA的核心思想很简单:在冻结原始权重 \in \mathbb{R}^{d \times k},引入一个低秩分解矩阵来表示权重变化:
W' = W \Delta W = W B \cdot A
其中:
- \in \mathbb{R}^{d \times r}$:可训练的上投影矩阵,初始化为零
- \in \mathbb{R}^{r \times k}$:可训练的下投影矩阵,初始化为高斯分布
- \ll \min(d, k)$:低秩参数,典型值为4、8、16、64
前向传播
在LoRA微调中,原始模型的前向传播变为:
h = W' \cdot x = W \cdot x B \cdot A \cdot x
由于,梯度只通过,参数量从 \times k \times (d k)$。以GPT-3的175B模型为例,当=12288$、=4,可训练参数量仅为原模型的0.02%。
秩
| 秩 r | 可训练参数比例 | 典型效果 |
|---|---|---|
| 4 |
评论列表 共有 0 条评论 |

发表评论 取消回复