LoRA原理
低秩适配(Low-Rank Adaptation)微调原理
核心思想
LoRA(Low-Rank Adaptation)是一种参数高效的微调方法。其核心假设是:模型适配过程中的权重变化具有低秩特性, 因此可以用两个低秩矩阵的乘积来近似表示权重更新,大幅减少可训练参数量。
# 原始权重更新
W = W₀ + ΔW
# LoRA分解
ΔW = B × A
# 其中 B ∈ R^(d×r), A ∈ R^(r×k), r ≪ min(d,k)
工作原理
1. 冻结预训练权重
保持原始预训练权重W₀不变,只训练低秩矩阵A和B。
# 前向传播
h = W₀x + ΔWx = W₀x + BAx
# W₀冻结,A和B可训练
2. 低秩分解
将权重更新ΔW分解为两个小矩阵的乘积,秩r通常取4-64。
参数量对比:
原始:d × k 参数
LoRA:(d + k) × r 参数
压缩比:r(d + k) / dk ≈ r/min(d,k)
LoRA:(d + k) × r 参数
压缩比:r(d + k) / dk ≈ r/min(d,k)
3. 缩放因子
使用缩放因子α来控制低秩更新的贡献。
h = W₀x + (α/r) × BAx
# α通常设为r或2r
4. 初始化策略
使用特定初始化确保训练开始时LoRA不改变模型输出。
A ← 随机高斯初始化
B ← 零初始化
# 因此初始时 BA = 0,ΔW = 0
参数量对比
| 模型 | 全参数量 | LoRA (r=8) | 压缩比 |
|---|---|---|---|
| LLaMA-7B | 7B | ~4M | ~0.06% |
| LLaMA-13B | 13B | ~8M | ~0.06% |
| LLaMA-70B | 70B | ~40M | ~0.06% |
应用位置
LoRA通常应用于注意力层的Query和Value投影矩阵:
# 常见应用位置
Wq, Wv(推荐,效果最好)
Wq, Wk, Wv, Wo
全部线性层(包括FFN)
优势
✓
参数高效
可训练参数减少1000倍以上
✓
显存友好
大幅降低训练显存需求
✓
无推理延迟
部署时可合并到原权重
✓
易于切换
一个基础模型可适配多个任务
----