LoRA(Low-Rank Adaptation)通过低秩分解将权重矩阵拆分为两个小矩阵相乘,训练时只更新低秩矩阵,显著降低大模型微调的计算和存储成本。
核心原理
将权重矩阵$W \in \mathbb{R}^{m \times n}$近似为两个低秩矩阵的乘积: $$W \approx A \times B$$
其中$A \in \mathbb{R}^{m \times r}$,$B \in \mathbb{R}^{r \times n}$,$r \ll \min(m, n)$为秩。
实现流程
- 冻结原始权重矩阵$W$
- 初始化低秩矩阵$A$(随机高斯)和$B$(零初始化)
- 前向传播:$W’ = W + AB$
- 训练时只更新$A$和$B$
PyTorch实现
| |
参数量对比
| 方法 | 参数量 | 说明 |
|---|---|---|
| 全参数微调 | $m \times n$ | 更新所有参数 |
| LoRA | $r \times (m + n)$ | 仅更新低秩矩阵 |
示例:$m=n=4096$,$r=8$时,参数量从16M降至65K,减少99.6%。
核心论文
相关工作
| 方法 | 说明 |
|---|---|
| Adapters | 在每层插入小模块,仅更新模块 |
| Prefix Tuning | 在输入前添加可学习前缀 |
| Prompt Tuning | 仅优化软提示词 |
张芷铭的个人博客
Comments