怎么还要炼模型啊-LoRA(Stable Diffusion深入学习:Part 3)

(本篇主讲LoRA部分)

最近英伟达的50系列显卡也快要发售了,经常能够刷到很多小伙伴在问有没有必要买50系列或者说现在买40系列会不会算49年入国军。

这个时候就会有些小伙伴回复说:“XX型号就够了,除非需要AI炼丹”。

这里的AI炼丹指的就是模型训练,而所谓的跑图指的是让AI进行绘画生成。

常见的模型训练方式有:

  • Textual Inversion 文本反演

  • HyperNetwork 超网络

  • Finetune/Dreambooth 微调

  • LoRA系列(LoRA、LyCORIS)

图片来源:https://zhuanlan.zhihu.com/p/669791212

Textual Inversion现在是我们常见的Embedding;HyperNetwork用的比较少就不需要;Finetune是直接微调,Dreambooth会引入一些之间用过的图片防止模型忘记以前学过的东西。

这里Finetune+正则化=Dreambooth

‌**正则化(Regularization)是机器学习和深度学习中一种重要的技术,主要用于防止模型过拟合,提高模型的泛化能力。**‌

通过在损失函数中添加正则项,正则化限制了模型的复杂度,使其在训练数据和未见数据上表现一致。正则化可以分为L1正则和L2正则,分别对应绝对值约束和平方差约束。L1正则化通过在损失函数中加入参数绝对值之和的惩罚项,促使部分参数变为零,实现特征选择和模型稀疏化;而L2正则化则在损失函数中添加参数平方和的惩罚项,使系数更小,增强模型的稳定性。‌

LoRA

还有些小伙伴可能会有疑问, LoRA和LyCORIS是有啥区别?

LoRA全称是Low-Rank Adaptation of Large Language Models(大语言模型的低秩适应)

低秩在数学和计算机科学中指的是一个矩阵中非零特征值的数量较少,一个矩阵的秩是其非零特征值的个数,而秩矩阵则是指远小于矩阵的维度。

例如一个N x N的矩阵,如果其秩为r,且r远小于N,则称该矩阵为低秩矩阵。

如果将将低秩图像的特征值从大到小排序的话会得到这样的曲线:

从特征向量的角度来理解低秩的含义的话,那就是矩阵只需要极少数的几个特征向量就可以近似还原出矩阵中的每一个向量。

在特征向量还原矩阵的过程中,特征值越大的特征向量其与矩阵中的大部分向量相似。所以只需要前几个重要的特征向量进行线性组合,就能近似的还原矩阵中的大多数向量。

最左边的图就是第一个特征向量,然后第二个图用11个特征向量,第三个图用21个特征向量就能很好地还原出原始图像的细节了。

像是一般图像也会用类似的方法压缩信息,以便节省传输过程中的流量,像是微信下载的时候会提供一个下载原图的选项。有的时候看到一些很糊的表情包(电子包浆),那可能就是不断压缩的结果。

LoRA开发的初衷是当一些超过十亿参数的LLM大模型(GPT)为了适应某一细分领域的任务时,需要对大模型做出针对这一领域的Finetuning微调,这样的微调会导致大量算力资源的损耗。

而LoRA可以冻结预训练的大模型的权重,并且在每个Transformer块中注入可训练层。因为LoRA的训练不触及大模型本身,在SD模型想要学习的位置创建一个新的“小型神经网络”,然后在这个小的神经网络上训练。

当想要分享这个LoRA模型时,只需要分享这个小的神经网络,所以包含的数据量很小通常不超过几百MB。

素材来源:https://zhuanlan.zhihu.com/p/669791212

这里用再简单一点的语言就是我和我朋友一起去吃麦当劳,我的是板烧鸡腿堡他的是麦香鱼堡。这个汉堡就是一个大模型,然后我给我的板烧鸡腿堡中的鸡肉加上一些辣酱,我的汉堡就变成了带有辣味的板烧鸡腿堡。

而这个添加辣酱的行为就相当于是在炼LoRA,只需要添加辣酱而不需要重新做个辣堡。然后我把添加了辣酱的板烧鸡肉从汉堡里抽出来,然后我的朋友把这块鸡肉塞进他的汉堡里,这样他的汉堡也就有了辣味了。

大概就是这样个意思,在朋友原来的汉堡整体不变的情况下我“炼”了快鸡肉赛到了他的汉堡里。当然我也不知道这么说对不对,如果有不对的地方欢迎在评论区留言指出,反正我是有点饿了。

LyCORIS

而LyCORIS则是LoRA的升级版,LyCORIS全称:LoRA beyond Conventional methods, Other Rank adaptation Implementations for Stable Diffusion(用另一种超越常规的Rank Adaptation来实现稳定扩散)。

LyCORIS算是LoRA思路的进一步扩展,通常比LoRA更有表现力,也可以捕捉到更多的训练图像的细节。

LyCORIS属于一系列LoRA方法的总称:

LoCon(LoRA for convolution network):将LoRA运用到卷积网络的方法。因为扩散模型中卷积层也起着十分重要的作用,所以LoCon是想在微调过程中能有更多的层参与进来,使其生成的图像质量和保真度等性能更佳。(LoCon可以将不同的角色风格合并,非常灵活)

LoHA(LoRA with Hadamard Product Representation):这里的Hadamard Product为哈达玛积,是一个逐项二元的运算。其输入为两个相同形状的矩阵,输出是具有同样形状、各个位置的元素等于两个输入矩阵相同位置元素乘积的矩阵:

LoHa基于此将一个大矩阵分为了两个LoRA:

LoKR(LoRA with Kronecker Product):LoKR与LoHa很像,不过不同的是Kronecker Product是克罗内克积,这种是对两个任意大小的矩阵进行运算然后生成块矩阵。

KoKR分解出的四个矩阵参数量很小,因此得到的LoKR模型文件会很小,但模型的生成能力并没有减弱很多。

DyLoRA(Dynamic Search - free LoRA):可能有些人会认为LoRA的Rank秩数越高越好,但实际上得根据模型、数据集、任务目标等因素来找合适的Rank。LoRA其实有两个问题:LoRA的文件大小固定,训练后没法更改;优化且找寻不到同Rank秩数下最优模型。

而DyLoRA可以学习低于指定Rank的LoRA,这使得训练好的DyLoRA模型文件的Rank是可以轻易调整的。

LoRA-FA(LoRA with Frozen-A):这是一种内存高效的微调方法,可以减少激活内存还不会降低模型性能。具体情况是在微调过程中冻结低秩矩阵A的权重,仅更新低秩矩阵B的权重,以此减少对VRAM占用并提高训练学习效率。

如果看着有点懵的小伙伴可以看下这张图:


其实刚接触LoRA的时候只是了解了如何操作使用以及如何炼制,今天这篇笔记则是让我更好地深入了解其原理。

当然说深入肯定也没多深,但至少对我来说我是了解到了更多相关知识。

为了缓解大家辛苦学习的疲惫,我也找了一些图分享给大家。

那么大伙下篇笔记见啦!拜了个拜!

https://civitai.com/images/44539474

https://civitai.com/images/44668057

https://civitai.com/images/44094400

https://civitai.com/images/40824911

文章部分参考素材来源

原教程视频:

https://www.bilibili.com/video/BV1x8411m76H/?spm_id_from=333.880.my_history.page.click&vd_source=f18a24315a35799d8d1912ad50652d90

Stable Diffusion-LoRA模型

https://zhuanlan.zhihu.com/p/669791212

Stable Diffusion-LyCORIS模型

https://zhuanlan.zhihu.com/p/671361137

正则化详解

https://blog.csdn.net/qq_44648285/article/details/143289451

整理低秩的理解

https://blog.csdn.net/GodNotAMen/article/details/134488659

矩阵低秩有何意义

https://blog.csdn.net/qq_24876435/article/details/123367895

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

若有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值