LoRA+QLoRA
LoRA
是什么?
LoRA(Low-Rank Adaptation)是一种用于微调大模型(LLM / Diffusion / Transformer)的技术。
冻结原始模型参数,只训练一个低秩矩阵来表示权重更新。
这样可以让权重变化 ΔW 不需要完整矩阵,在极少训练参数的情况下,让模型学到新任务能力。


为什么需要?
lora的设计亮点
参数少,速度快,模块化
模块化的本质:
LoRA 将“任务能力”封装成一个 独立的参数模块,可以在 不改变原模型 的情况下加载或卸载。
在代码层面 LoRA 是一个 外挂模块:
1 | Base Model |
训练时:
1 | 只训练 LoRA Module |
推理时:
1 | Base Model + LoRA |

可以随时加载/卸载能力
例如一个基础模型:
1 | LLaMA |
不同能力可以变成不同 LoRA:
1 | base_model |
使用时只需要:
1 | load_lora("finance") |
模型就具备 金融知识能力。
不需要重新训练模型。
LoRA解决的核心问题
大模型微调成本太高:
| 方法 | 训练参数 |
|---|---|
| Full Fine-tuning | 100% |
| Adapter | 3% |
| LoRA | 0.1% ~ 1% |
因此 LoRA 成为 当前最主流的 LLM 微调方法之一。
为什么权重变化可以用低秩矩阵表示
LoRA: Low-Rank Adaptation of Large Language Models
因为只需要调整一小部分行为。
在大模型微调过程中,任务带来的权重变化通常只发生在少数方向上,因此权重更新矩阵 ΔW\Delta WΔW 往往具有 低秩结构(Low-Rank Structure)。
换句话说:
任务变化 ≈ 高维空间中的低维子空间变换
为什么增量权重 ΔW 可以进行低秩分解


为什么 LoRA 插入在线性层而不是别的位置
LoRA 插入在线性层,是因为 Transformer 的主要参数和计算都集中在矩阵乘法结构中,而低秩更新正好可以直接作用在权重矩阵上。
结论
LoRA 主要插入在 Transformer 的线性变换层(Linear Layer),例如:
- Attention 的 Q、K、V、O projection
- MLP 的 Linear 层
原因:
Transformer 中绝大多数参数都集中在线性层,而这些层的计算形式正好适合低秩矩阵分解。

因此:
1 | Transformer ≈ Linear Layer + Nonlinear Activation |
为什么可以拆解为A和B

为什么 LoRA 初始化时 B = 0 而不是随机?
B=0的目的:训练开始时模型完全等同于原始模型

alpha scaling 的作用是什么
在 LoRA 中,alpha(α\alphaα)用于控制 LoRA 更新对原模型权重的影响强度。
换句话说:
alpha scaling 用于调节低秩更新 ΔW\Delta WΔW 的尺度,防止更新过大或过小。
alpha 控制 LoRA 的影响力度
LoRA如何更新参数

LoRA可以用在Transformer的哪些层面
- 注意力层(self-Attention)
- 前馈层(FFN)
通常插入到 Transformer 的线性层
LoRA常见超参数
| 参数 | 含义 |
|---|---|
| rank (r) | 低秩维度 |
| alpha | scaling 系数 |
| dropout | 防止过拟合 |
| target modules | 插入层 |
常见配置:
1 | r = 8 |
LoRA 改进版本
:(加速训练)
DoRA : (提升表达力)
rsLoRA:(动态秩调整)
PiSSA :(优化初始化)
如何选择
训练资源有限:
- LoRA+
- rsLoRA
追求高性能:
- DoRA
- PiSSA



