LoRA(Low-Rank Adaptation)模型核心基础知识


一、LoRA模型的概念

  • LoRA的全称:Low-Rank Adaptation of Large Language Models,是一种微调模型,可以理解为stable diffusion模型的一种插件,用于满足一种特定的风格,或指定的人物特征属性;
  • 我们可以使用SD模型+LoRA微调训练的方式,只训练参数量很小的LoRA模型,就能在下游细分任务中取得不错的效果;
  • LoRA大幅降低了SD模型训练时的显存占用,因为并不优化主模型(SD模型),所以主模型对应的优化器参数不需要存储。但计算量没有明显变化,因为LoRA是在主模型的全参梯度基础上增加了“残差”梯度,同时节省了主模型优化器更新权重的过程。

二、LoRA模型的核心原理

(一)LoRA模型的训练逻辑

  • 步骤一: 冻结训练好的SD模型的权重;
  • 步骤二: 在SD模型的U-Net结构中注入LoRA模块,并将其与CrossAttention模块结合,并只对这部分参数进行微调训练;
  • 步骤三: 训练好新的参数后,利用重参的方式,将新参数和老的模型参数合并。

在这里插入图片描述

(二)LoRA的参数合并方式

对于SD模型权重 W 0 ∈ R n × m W_0 \in \mathbb{R}^{n\times m} W0Rn×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} ARn×d B ∈ R d × m B\in \mathbb{R}^{d\times m} BRd×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模型的参数有相同的维度,同时分解出来的两个较小矩阵可以确保参数更新是在低秩情况下的,这样就显著减少训练的参数数量了。

  • 对于矩阵A:使用随机高斯分布初始化
  • 对于矩阵B:使用全0初始化
  • 初始状态下这两个矩阵相乘的结果为0,从而保证初始阶段时只有SD模型(主模型)生效

参考:
深入浅出完整解析LoRA(Low-Rank Adaptation)模型核心基础知识
什么是LoRA模型,如何使用和训练LoRA模型?你想要的都在这!
图像生成:SD LoRA模型详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值