赞
踩
- 步骤一: 冻结训练好的SD模型的权重;
- 步骤二: 在SD模型的U-Net结构中注入LoRA模块,并将其与CrossAttention模块结合,并只对这部分参数进行微调训练;
- 步骤三: 训练好新的参数后,利用重参的方式,将新参数和老的模型参数合并。
对于SD模型权重
W
0
∈
R
n
×
m
W_0 \in \mathbb{R}^{n\times m}
W0∈Rn×m,我们不再对其进行全参微调训练,而是对权重加入残差的形式,通过训练
Δ
W
\Delta W
ΔW来完成优化过程:
W
′
=
W
0
+
Δ
W
W^{'} =W_0+\Delta W
W′=W0+ΔW
其中
Δ
W
=
A
B
T
\Delta W=AB^T
ΔW=ABT,
A
∈
R
n
×
d
A\in \mathbb{R}^{n\times d}
A∈Rn×d,
B
∈
R
d
×
m
B\in \mathbb{R}^{d\times m}
B∈Rd×m,
d
d
d就是
Δ
W
\Delta W
ΔW这个参数矩阵的秩,其通过低秩分解由两个低秩矩阵的乘积组成。由于下游细分任务的域非常小,所以d可以取得很小,很多时候可以取1。因此,在训练完成后,可以获得一个参数远小于SD模型的LoRA模型。
假设原来的是100x1024的参数矩阵,那么参数量为102400,LoRA模型将矩阵拆成了两个矩阵相乘,如果设置Rank=8,那么就是100x8的B矩阵与8x1024的A矩阵做矩阵乘法,参数量为800+8192=8992,整体参数量下降了约11.39倍。
矩阵乘积
A
B
T
AB^T
ABT 与SD模型的参数有相同的维度,同时分解出来的两个较小矩阵可以确保参数更新是在低秩情况下的,这样就显著减少训练的参数数量了。
参考:
深入浅出完整解析LoRA(Low-Rank Adaptation)模型核心基础知识
什么是LoRA模型,如何使用和训练LoRA模型?你想要的都在这!
图像生成:SD LoRA模型详解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。