本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

LoRA:低秩分解在 LLM 微调中的应用

LoRA:低秩分解在 LLM 微调中的应用

更新于 2026-04-23

上一篇我们建立了 Part 3 的核心观察:训练好的权重矩阵经验上接近低秩,微调的有效维度远低于参数总数。这个发现引出一个自然的问题——既然微调只需要在一个低维子空间中调整权重,我们能不能直接把增量参数化为低秩矩阵,从而大幅减少可训练参数?

LoRA(Low-Rank Adaptation, Hu et al., 2022)给出了肯定的回答。它是”经验低秩性”到”参数效率”的直接转化——可能是过去几年中对大模型微调实践影响最大的单一技术。本文将从数学框架出发,严格推导 LoRA 的核心公式,解释它为什么有效,计算它的参数量优势,并系统梳理 QLoRA、LoRA+、rsLoRA 等重要变体。

为什么需要 LoRA?

Full Fine-Tuning 的显存代价(以 LLaMA-7B 为例)模型参数 (28 GB)梯度 (28 GB)Adam 状态 (56 GB)≥ 112 GB问题 ①:单卡放不下(A100 80GB 勉强够)问题 ②:每个下游任务存一份完整副本(28 GB/份)问题 ③:多任务部署需同时加载多份模型LoRA (仅 0.13%)~0.03 GB

Full Fine-Tuning 的代价

微调一个大语言模型的标准做法是Full Fine-Tuning(全参数微调):对所有权重矩阵 WW 计算梯度 WL\nabla_W \mathcal{L},然后执行梯度下降更新:

WWηWLW \leftarrow W - \eta \nabla_W \mathcal{L}

对于一个 7B 参数的模型(如 LLaMA-7B),这意味着:

  • 显存:存储完整的模型参数(7B × 4 bytes = 28 GB, FP32)、梯度(28 GB)、优化器状态(Adam 需要额外 56 GB)——总计超过 112 GB
  • 存储:每个下游任务保存一份完整的模型副本(28 GB/份)
  • 部署:多个任务需要同时加载多份完整模型

这在实践中是不可接受的。我们需要一种方法,让微调只涉及少量额外参数,同时保持接近 Full Fine-Tuning 的性能。

理论基础:Intrinsic Dimensionality

LoRA 的理论根基来自 Art. 23 学习算子Art. 5 矩阵微积分 中讨论的两个关键结论:

结论 1(Li et al., 2018):神经网络的损失曲面具有远低于参数数量的内禀维度(intrinsic dimension)。一个有 DD 个参数的网络,其内禀维度 dintd_{\text{int}} 可能只有 DD 的千分之一。

结论 2(Aghajanyan et al., 2021):预训练越充分,微调的内禀维度越低。RoBERTa 在 MRPC 上的内禀维度仅约 200——在一个 200 维的子空间中微调就能达到满参数微调 90% 的性能。

这两个结论直接暗示:微调时权重的变化 ΔW\Delta W低秩的——它只涉及参数空间中极少数”重要方向”。如果 ΔW\Delta W 的有效秩为 rr,其中 rmin(m,n)r \ll \min(m, n),那么我们可以把 ΔW\Delta W 分解为两个小矩阵的乘积,大幅减少参数量。

LoRA 的数学框架

核心公式

LoRA 的核心思想用一个公式表达:

h=W0x+ΔWx=W0x+BAxh = W_0 x + \Delta W x = W_0 x + BAx

逐项理解:

  • W0Rd×dW_0 \in \mathbb{R}^{d \times d}预训练权重矩阵(frozen, 冻结不更新)。这里 dd 表示隐藏层维度,实际中 W0W_0 可以是非方阵 Rdout×din\mathbb{R}^{d_{\text{out}} \times d_{\text{in}}},本文为简化记号取 dout=din=dd_{\text{out}} = d_{\text{in}} = d
  • xRdx \in \mathbb{R}^d:输入向量
  • ΔW=BA\Delta W = BA低秩权重增量,其中 BRd×rB \in \mathbb{R}^{d \times r}ARr×dA \in \mathbb{R}^{r \times d}
  • rr(rank),rdr \ll d,是 LoRA 的核心超参数
  • hRdh \in \mathbb{R}^d:输出向量

关键约束W0W_0 在微调过程中完全冻结,只有 AABB 是可训练参数。

让我们用更细粒度的数学来理解 ΔW=BA\Delta W = BA 的结构。BRd×rB \in \mathbb{R}^{d \times r} 的列 b1,,brRd\mathbf{b}_1, \ldots, \mathbf{b}_r \in \mathbb{R}^d 张成输出空间中的一个 rr 维子空间;ARr×dA \in \mathbb{R}^{r \times d} 的行 a1T,,arT\mathbf{a}_1^T, \ldots, \mathbf{a}_r^T 张成输入空间中的一个 rr 维子空间。增量 ΔW=BA\Delta W = BA 的秩最多为 rr——它只能在 rr 个方向上修改模型的行为。

Art. 3 SVD 的外积展开视角:训练完成后,ΔW=BA\Delta W = BA 可以做 SVD 得到 ΔW=UΣVT=i=1rσiuiviT\Delta W = U\Sigma V^T = \sum_{i=1}^{r} \sigma_i \mathbf{u}_i \mathbf{v}_i^T。每个秩一项 σiuiviT\sigma_i \mathbf{u}_i \mathbf{v}_i^T 代表一个”微调方向”——LoRA 的假设是,微调只需要 rr 个这样的方向就够了。

下图展示了 LoRA 的架构:输入 xx 同时经过冻结的 W0W_0 和可训练的低秩旁路 BABA,两路输出相加得到最终结果。

LoRA 架构:冻结 W₀ + 低秩旁路 BA
只训练 A 和 B(蓝色),W₀(灰色)完全冻结
x ∈ RW₀冻结 (d×d)Ar×dBd×r× α/r+h = W₀x + (α/r)BAx可训练参数:2rd (而非 d²)

初始化策略

LoRA 的初始化不是对称的——它确保训练开始时增量为零

  • AA:从均值为 0 的高斯分布随机初始化,AijN(0,σ2)A_{ij} \sim \mathcal{N}(0, \sigma^2)
  • BB:初始化为零矩阵B=0B = 0

因此训练开始时 ΔW=BA=0A=0\Delta W = BA = 0 \cdot A = 0,模型的行为与预训练模型完全一致。这是一个重要的设计选择——它意味着 LoRA 微调从预训练模型的精确行为出发,逐步偏离,而不是从一个随机扰动出发。

为什么不反过来(A=0A = 0, BB 随机)?两种选择都能保证初始增量为零。Hu et al. (2022) 在原始论文中选择 B=0B = 0 的方案,后续实验也沿用了这一惯例。

Scaling Factor: α/r\alpha / r

实际实现中,LoRA 在增量上乘以一个缩放因子(scaling factor):

h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r} BAx

其中 α\alpha 是一个常数超参数(通常取 α=r\alpha = rα=2r\alpha = 2r)。

为什么需要缩放? 当改变秩 rr 时,BABA 的输出规模会随 rr 变化。αr\frac{\alpha}{r} 的作用是稳定不同 rr 下的学习动态——这样调整 rr 时不需要重新搜索学习率。当 α=r\alpha = r 时,缩放因子为 1,等价于无缩放。

在实践中,α\alpha 通常固定为某个值(如 16 或 32),然后调整 rrαr\frac{\alpha}{r} 确保了当 rr 增大时,LoRA 增量的幅度不会不受控地增长。

应用到 Transformer 的哪些层?

Hu et al. (2022) 在原始论文中实验了将 LoRA 应用到 Transformer 不同层的效果。对于一个标准的 Transformer 层,权重矩阵包括:

矩阵维度说明
WQW_Qd×dkd \times d_kQuery 投影
WKW_Kd×dkd \times d_kKey 投影
WVW_Vd×dvd \times d_vValue 投影
WOW_Odv×dd_v \times dOutput 投影
WupW_{\text{up}}d×dffd \times d_{\text{ff}}MLP 上投影
WdownW_{\text{down}}dff×dd_{\text{ff}} \times dMLP 下投影

实验表明,对 WQW_QWVW_V 同时应用 LoRA(即使只用 r=4r = 4)就能达到接近 Full Fine-Tuning 的性能。但在实践中,现代框架(如 PEFT, Hugging Face)通常对所有 attention 投影矩阵(WQ,WK,WV,WOW_Q, W_K, W_V, W_O)甚至 MLP 层同时应用 LoRA,以获得更好的效果。

参数量分析

单层参数量

对于一个 d×dd \times d 的权重矩阵:

  • Full Fine-Tuningd2d^2 个可训练参数
  • LoRA(秩 rrr×d+r×d=2rdr \times d + r \times d = 2rd 个可训练参数

压缩比:

Compression Ratio=d22rd=d2r\text{Compression Ratio} = \frac{d^2}{2rd} = \frac{d}{2r}

数值例子

GPT-2 (d=768d = 768, r=8r = 8)

  • Full FT: 7682=589,824768^2 = 589{,}824
  • LoRA: 2×8×768=12,2882 \times 8 \times 768 = 12{,}288
  • 压缩比: 589,82412,288=48×\frac{589{,}824}{12{,}288} = 48\times

LLaMA-7B (d=4096d = 4096, r=8r = 8)

  • Full FT: 40962=16,777,2164096^2 = 16{,}777{,}216
  • LoRA: 2×8×4096=65,5362 \times 8 \times 4096 = 65{,}536
  • 压缩比: 16,777,21665,536=256×\frac{16{,}777{,}216}{65{,}536} = 256\times

LLaMA-65B (d=8192d = 8192, r=8r = 8)

  • Full FT: 81922=67,108,8648192^2 = 67{,}108{,}864
  • LoRA: 2×8×8192=131,0722 \times 8 \times 8192 = 131{,}072
  • 压缩比: 67,108,864131,072=512×\frac{67{,}108{,}864}{131{,}072} = 512\times

一个关键观察:模型越大,LoRA 的压缩比越高。这是因为 Full FT 参数量与 d2d^2 成正比,而 LoRA 参数量与 dd 成正比。这使得 LoRA 对大模型尤为重要。

交互可视化

拖动下面的滑块调整秩 rr,观察 LoRA 参数量如何随 rr 和层维度 dd 变化。

LoRA 参数量 vs Full Fine-Tuning
秩 r:8
拖动滑块调整秩 r
单层参数量对比LLaMA-7B (d=4096), r=8Full FT16.8MLoRA65.5K压缩比: 256.0x 减少 (99.61%)
LoRA 参数量随秩 r 的变化LoRA params = 2 r d (W ∈ ℝ^{ d × d })0300.0K600.0K900.0K1.0M1816324864秩 r参数量r=812.3K65.5K131.1K
模型层Full FT (d²)LoRA (2rd)压缩比
GPT-2 (d=768)589.8K12.3K48.0x
LLaMA-7B (d=4096)16.8M65.5K256.0x
LLaMA-65B (d=8192)67.1M131.1K512.0x

读图要点

  • 柱状图:直观对比 Full FT 与 LoRA 的参数量差距。即使 r=64r = 64,LoRA 参数量仍然远小于 Full FT
  • 折线图:LoRA 参数量 2rd2rdrr 线性增长。三条线的斜率分别为 2d2d,维度 dd 越大,斜率越陡——但由于 Full FT 是 d2d^2,即使斜率陡,绝对值仍远小于 d2d^2
  • 表格:对比三种典型模型规模的压缩比。d=8192d = 8192 时,r=8r = 8 的 LoRA 只有 Full FT 的 1512\frac{1}{512} 参数

为什么 LoRA 有效?数学解释

为什么 LoRA 有效?三层数学解释① 内禀维度θ = θ₀ + PzLoRA = 结构化的子空间约束ΔW=BA 的自由度 ≈ 2rd2rd ≫ d_int → 有余量② 梯度低秩性∇ₗ ∈ span(q₁,...,qₖ)梯度集中在 Hessian前几个主方向上低秩 ΔW 捕获主要梯度③ 隐式正则化rank(ΔW) ≤ r ≪ d限制秩 = 限制模型容量≈ 截断 SVD 去噪保留主成分,去掉噪声GPT-3 175B: r=4~8 就能匹配 Full FT 性能(增大 r 到 64+ 边际收益递减)

与内禀维度的联系

回忆 Art. 23 学习算子 中 Li et al. (2018) 的内禀维度框架:将参数限制在随机子空间 θ=θ0+Pz\theta = \theta_0 + P\mathbf{z} 中优化,只需极低的维度 dintd_{\text{int}} 就能恢复大部分性能。

LoRA 可以看作这个框架的一个结构化实例。在 LoRA 中,每一层的权重增量 ΔW=BA\Delta W = BA 被限制在秩为 rr 的矩阵空间中。对于一个 d×dd \times d 的矩阵,秩 r\leq r 的矩阵构成一个维度为 r(2dr)2rdr(2d - r) \approx 2rd(当 rdr \ll d)的流形。LoRA 的总可训练参数约为 L×2rdL \times 2rd,其中 LL 是应用 LoRA 的层数。

Aghajanyan et al. (2021) 的实验显示,预训练模型微调的内禀维度 dintd_{\text{int}} 通常在数百的量级。而 LoRA 的可训练参数通常为数万到数十万——这远多于 dintd_{\text{int}},为覆盖有效子空间提供了充足的容量。

与矩阵 Taylor 展开的联系

Art. 5 矩阵微积分 中的矩阵 Taylor 展开出发,微调后的模型在某个输入 xx 上的输出变化可以写为:

h(W0+ΔW,x)h(W0,x)ΔWxh(W_0 + \Delta W, x) - h(W_0, x) \approx \Delta W \cdot x

(对于线性层,这是精确的而非近似。)LoRA 将 ΔW\Delta W 限制为低秩——这等价于假设输出的变化只沿少数方向发生。

更深层地,损失函数的一阶 Taylor 展开为:

L(W0+ΔW)L(W0)+tr(WLTΔW)\mathcal{L}(W_0 + \Delta W) \approx \mathcal{L}(W_0) + \text{tr}(\nabla_W \mathcal{L}^T \Delta W)

如果梯度 WL\nabla_W \mathcal{L} 本身(近似)低秩(这正是 Gur-Ari et al. (2018) 的发现——梯度集中在 Hessian 的前几个主方向上),那么一个低秩的 ΔW\Delta W 就足以捕获梯度中最重要的成分。

rr 的选择

rr 是 LoRA 最重要的超参数。Hu et al. (2022) 的实验发现:

  • 对于 GPT-3 175B,r=4r = 4r=8r = 8 就能在多数任务上匹配 Full Fine-Tuning 的性能
  • 增大 rr 到 64 或更高时,性能提升趋于饱和
  • 不同任务的最优 rr 可能不同——更复杂的任务可能需要更高的秩

直觉上,rr 应该与微调任务的内禀维度 dintd_{\text{int}} 匹配。简单的分类任务(如情感分析)内禀维度低,r=4r = 4 就够;复杂的生成任务可能需要 r=16r = 16 或更高。

实践中的经验法则:

场景推荐 rr
简单分类/NLI4–8
通用指令微调16–32
复杂代码生成32–64

与 Full Fine-Tuning 的等价性分析

一个自然的问题是:LoRA 是否在某种意义上等价于 Full Fine-Tuning?

理论上:当 r=min(dout,din)r = \min(d_{\text{out}}, d_{\text{in}}) 时,ΔW=BA\Delta W = BA 可以表达任意 dout×dind_{\text{out}} \times d_{\text{in}} 矩阵——此时 LoRA 的表达能力与 Full Fine-Tuning 完全一致。

实践中rdr \ll d 时,LoRA 是 Full Fine-Tuning 的一个正则化版本。它通过限制 ΔW\Delta W 的秩,隐式地施加了一个正则化约束——阻止模型在高维空间中过度拟合。这类似于 Art. 3 SVD 中截断 SVD 丢弃小奇异值的效果:保留主要成分,去掉噪声。

Hu et al. (2022) 的实验表明,在大多数下游任务上,LoRA (r=8r = 8) 的性能与 Full Fine-Tuning 的差距在 1% 以内。这个结果有力地验证了内禀维度理论的预测:微调的有效子空间确实是低维的。

LoRA 的推理优化

LoRA 推理优化:合并后零额外开销
训练W₀ 冻结 + BA 可训练合并W = W₀ + (α/r)BA推理部署单个 W,零额外延迟多任务部署:共享 W₀ + 切换 (A,B) 模块存储:d² + N×2rd(而非 N×d²)

LoRA 有一个对推理非常友好的性质:训练完成后,可以将低秩增量合并回原始权重

W=W0+αrBAW = W_0 + \frac{\alpha}{r}BA

合并后的 WW 是一个标准的 d×dd \times d 矩阵,推理时不需要任何额外计算——没有延迟开销。这使得 LoRA 在推理效率上完全等价于原始模型。

对比其他参数高效微调方法:

方法推理延迟原因
LoRA(合并后)无额外延迟增量合并回权重
Adapter有额外延迟需要额外的前向传播步骤
Prefix Tuning有额外延迟增加了序列长度

另外,多任务场景下可以共享 W0W_0、切换 LoRA 模块。对于 NN 个下游任务,只需存储 NN 个小的 (A,B)(A, B) 矩阵对,加上一份共享的 W0W_0——存储从 N×d2N \times d^2 降到 d2+N×2rdd^2 + N \times 2rd

变体与进展

LoRA 的核心框架催生了一系列重要变体,每个变体解决 LoRA 的一个特定局限。

QLoRA: 量化 + 低秩

QLoRA:量化 × 低秩的正交组合xW̃₀ (4-bit NF4)冻结 · 量化 · 节省 4× 显存BA·FP16/BF16 · 可训练+h= Dequant(W̃₀)x + BAx三大技术1. NF4 量化2. Double Quant.3. Paged Optim.效果:单张 48GB GPU 微调 65B 模型,性能 ≈ 16-bit Full FT

QLoRA(Quantized LoRA, Dettmers et al., 2023)是 LoRA 最重要的变体之一。它的核心思想是:

h=Dequant(W~0)x+BAxh = \text{Dequant}(\tilde{W}_0) \cdot x + BAx

其中 W~0\tilde{W}_0W0W_0 的 4-bit 量化版本。QLoRA 引入了三个关键技术:

1. 4-bit NormalFloat (NF4) 量化

NF4 是一种信息论最优的数据类型。它基于一个观察:预训练权重近似服从均值为 0 的正态分布 N(0,σ2)\mathcal{N}(0, \sigma^2)。NF4 将正态分布的分位数(quantile)作为量化网格点,使得每个量化区间包含相等的概率质量——这是对正态分布的信息论最优量化。

2. Double Quantization

量化常数(quantization constants)本身也被量化。标准的 blockwise 量化为每个 block(如 64 个权重)存储一个 FP32 的缩放因子,这额外占用 32/64=0.532/64 = 0.5 bit/param。Double quantization 将这些缩放因子再做一次 8-bit 量化,把额外开销降到约 0.127 bit/param。

3. Paged Optimizers

使用 NVIDIA Unified Memory 实现优化器状态的 CPU-GPU 分页,避免 GPU 显存溢出。

核心组合思路:QLoRA 将”量化”和”低秩”两种压缩思路正交组合——量化压缩已有的预训练权重(从 16-bit 到 4-bit),LoRA 压缩新增的微调参数(低秩约束)。两者互不干扰:

W~04-bit 量化+αrBA低秩增量 (FP16/BF16)\underbrace{\tilde{W}_0}_{\text{4-bit 量化}} + \underbrace{\frac{\alpha}{r}BA}_{\text{低秩增量 (FP16/BF16)}}

效果:QLoRA 可以在单张 48 GB GPU(如 A6000)上微调 65B 参数的模型,性能与 16-bit Full Fine-Tuning 几乎一致。

LQ-LoRA: 低秩 + 量化联合分解

LQ-LoRA(Guo et al., ICLR 2024)进一步将低秩分解和量化统一到一个框架中。不同于 QLoRA 先量化再加 LoRA,LQ-LoRA 对每个权重矩阵做联合分解:

WQ+LRW \approx Q + LR

其中 QQ 是量化矩阵,L,RL, R 是低秩矩阵。分解目标是最小化:

minQ,L,RWQLRF2\min_{Q, L, R} \|W - Q - LR\|_F^2

这种联合优化的关键优势是:低秩部分 LRLR 可以补偿量化误差——QQ 中的量化噪声被 LRLR 的连续值部分吸收。相比 QLoRA 的”先量化后适配”的级联方式,联合分解能更好地在量化精度和低秩容量之间分配”误差预算”。

LoRA+: 差异化学习率

LoRA+(Hayou et al., ICML 2024)观察到 LoRA 中 AABB 的最优学习率应该不同:

At+1=AtηAAL,Bt+1=BtηBBLA_{t+1} = A_t - \eta_A \nabla_A \mathcal{L}, \quad B_{t+1} = B_t - \eta_B \nabla_B \mathcal{L}

其中 ηBηA\eta_B \gg \eta_A(通常 ηB/ηA16\eta_B / \eta_A \approx 16)。

直觉上,AA 决定了从输入空间中”选择哪些方向”(投影),BB 决定了”在输出空间中如何表达”(重建)。由于 BB 初始化为零,它需要更大的学习率来快速离开零点附近的平坦区域。

LoRA+ 的实验显示,这种差异化学习率可以将训练速度提升 2 倍,并略微改善最终性能。

rsLoRA: 秩稳定化缩放

rsLoRA(Rank-Stabilized LoRA, Kalajdzievski, 2023)指出 LoRA 的标准缩放因子 α/r\alpha / r 在不同秩下的行为不一致。当 rr 增大时,BABA 的输出方差会增大(因为求和的项变多),但 α/r\alpha / r 的补偿不足。

rsLoRA 提出用 α/r\alpha / \sqrt{r} 替代 α/r\alpha / r

h=W0x+αrBAxh = W_0 x + \frac{\alpha}{\sqrt{r}} BAx

这个修正确保了:无论 rr 取什么值,LoRA 增量的输出方差保持稳定。数学上,如果 AABB 的元素独立同分布,BABA 的每个元素是 rr 个随机变量的和,方差正比于 rr,标准差正比于 r\sqrt{r}。除以 r\sqrt{r} 正好归一化方差。

实践中,rsLoRA 在大 rr(如 r32r \geq 32)时效果尤为明显。

NNCF lora_correction: 补偿量化误差

NNCF(Neural Network Compression Framework) 中实现了一种称为 lora_correction 的技术。核心思想是用低秩矩阵补偿权重量化引入的误差:

Wcorrected=Quant(W)+ΔWcorrectionW_{\text{corrected}} = \text{Quant}(W) + \Delta W_{\text{correction}}

其中 ΔWcorrection=BA\Delta W_{\text{correction}} = BA 是一个低秩矩阵,通过最小化 WQuant(W)BAF2\|W - \text{Quant}(W) - BA\|_F^2 来训练。

这与 LoRA 的微调用途不同——lora_correction 的目标不是适配下游任务,而是还原量化前的精度。但数学形式完全一致:都是用低秩矩阵 BABA 来近似一个目标矩阵(微调中是 ΔWtask\Delta W_{\text{task}},量化补偿中是 WQuant(W)W - \text{Quant}(W))。

变体总结

变体核心改进解决的问题
QLoRA4-bit NF4 量化 + LoRA显存不够大
LQ-LoRA量化+低秩联合分解量化误差大
LoRA+ηBηA\eta_B \gg \eta_A训练速度慢
rsLoRAα/r\alpha/\sqrt{r} 缩放不同 rr 下不稳定
lora_correction低秩矩阵补偿量化误差量化精度损失

数值验证

让我们用一个具体的数值例子,验证 LoRA 的参数量计算和推理合并。

设定

取 LLaMA-7B 的一个 attention 层的 WQW_Q 矩阵:d=4096d = 4096r=8r = 8α=16\alpha = 16

参数量

LoRA 参数=2×r×d=2×8×4096=65,536\text{LoRA 参数} = 2 \times r \times d = 2 \times 8 \times 4096 = 65{,}536

Full FT 参数=d2=40962=16,777,216\text{Full FT 参数} = d^2 = 4096^2 = 16{,}777{,}216

压缩比=16,777,21665,536=256×\text{压缩比} = \frac{16{,}777{,}216}{65{,}536} = 256\times

Scaling factor

αr=168=2\frac{\alpha}{r} = \frac{16}{8} = 2

推理合并

训练完成后,合并权重:

Wmerged=W0+αrBA=W0+2BAW_{\text{merged}} = W_0 + \frac{\alpha}{r}BA = W_0 + 2 \cdot BA

WmergedR4096×4096W_{\text{merged}} \in \mathbb{R}^{4096 \times 4096},推理时直接用 WmergedW_{\text{merged}} 替代 W0W_0,无额外开销。

LLaMA-7B 全模型 LoRA 参数量估算

LLaMA-7B 有 32 层 Transformer,每层有 4 个 attention 投影(WQ,WK,WV,WOW_Q, W_K, W_V, W_O,维度均为 4096×40964096 \times 4096)。如果对所有 attention 投影应用 LoRA (r=8r = 8):

LoRA 总参数=32×4×2×8×4096=8,388,6088.4M\text{LoRA 总参数} = 32 \times 4 \times 2 \times 8 \times 4096 = 8{,}388{,}608 \approx 8.4\text{M}

对比模型总参数 6.7B\approx 6.7\text{B},LoRA 可训练参数仅占 0.13%\approx 0.13\%

总结与展望

本文建立了 LoRA 的完整数学框架,从理论基础到实践细节。回顾关键要点:

  • 核心公式 h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r}BAx:冻结预训练权重 W0W_0,只训练低秩增量 ΔW=BA\Delta W = BABRd×rB \in \mathbb{R}^{d \times r}ARr×dA \in \mathbb{R}^{r \times d}rdr \ll d
  • 初始化AN(0,σ2)A \sim \mathcal{N}(0, \sigma^2)B=0B = 0,确保训练开始时 ΔW=0\Delta W = 0
  • 理论基础:内禀维度理论(Li et al., 2018; Aghajanyan et al., 2021)解释了为什么低秩增量就足够——微调的有效维度远低于参数总数
  • 参数效率:压缩比 d/(2r)d / (2r),对于 LLaMA-7B (d=4096d = 4096, r=8r = 8) 达到 256 倍压缩,可训练参数仅占总参数的 0.13%
  • 推理无开销:训练后合并 W=W0+αrBAW = W_0 + \frac{\alpha}{r}BA,推理时完全等价于原始模型
  • 重要变体:QLoRA(4-bit 量化 + LoRA)、LoRA+(差异化学习率)、rsLoRA(α/r\alpha/\sqrt{r} 缩放)、LQ-LoRA(联合分解)、lora_correction(量化误差补偿)

LoRA 是 Part 1 工具在 Part 3 语境下的直接应用:Art. 3 SVD 的低秩近似思想变成了参数化策略,Art. 5 矩阵微积分 的 Taylor 展开和 Hessian 分析解释了低秩更新的有效性。同一套数学工具——从分解到优化——贯穿了理论和实践。

下一篇我们进入第二个应用方向:Efficient Attention——利用注意力矩阵的近似低秩性降低 O(n2)O(n^2) 的计算复杂度。如果说 LoRA 利用了权重增量 ΔW\Delta W 的低秩性来压缩训练,Efficient Attention 则利用注意力矩阵 softmax(QKT/dk)\text{softmax}(QK^T/\sqrt{d_k}) 的低秩性来加速推理——同一个数学原理,不同的切入点。