Lora模型训练-koya SS G...

  • 经验类型经验/观点
  • 经验属性原创文章
  • 经验版权署名-非商业性使用-相同方式共享
299 0 0 2023-06-06

现在大部分 AI 产品采用的的大模型(dreamboth),但是在产品的训练中也发现了不仅仅需要较大的内存还需要好的 GPU 成本较高

前提

现在大部分 AI 产品采用的的大模型(dreamboth),但是在产品的训练中也发现了不仅仅需要较大的内存还需要好的 GPU 成本较高,而且模型较大修改只能重新训练不能修改,为了解决这个问题开始推荐 lora 小模型时代.接下来讲解 lora 模型以及使用小模型(lora)的Koya.SS.GUI的流程.

关于Koya.SS.GU的使用教程后期会慢慢讲出来,后面的所有理论或者是英文后面都会给解释.

补充 2 个概念"扩散模型"与"微扩散模型"

首先讲一个基础概念"扩散模型"与"微扩散模型",在机器学习的流程是AI将图片马赛克化,并且提取图片或者是文本的特征,然后结合网络上或者是现有的模型进行绘图.

扩散模型:

一种用于描述某些物质或现象在空间和时间上传播或扩散的数学模型。扩散模型通常基于一些基础假设,如扩散物质的性质、扩散介质的特性、扩散过程中的环境影响等因素,以及一些已知的实验数据或观察结果。扩散模型可以帮助科学家和工程师预测和控制许多现实世界中的扩散现象。

扩散模型虽然在研究物质或现象在空间和时间上的传播和扩散方面具有重要意义,但是也存在一些缺点,下面是几个主要的缺点:

  1. 假设条件过于简化:扩散模型通常基于一些假设条件,如扩散物质的性质、扩散介质的特性、扩散过程中的环境影响等,这些条件往往过于简化,不能完全反映实际情况。
  2. 参数难以确定:扩散模型需要大量的实验数据和观测结果来确定模型的参数,但是这些数据和结果往往受到许多因素的影响,如实验条件、观测误差等,使得参数难以准确确定。
  3. 预测精度有限:由于扩散模型往往是基于简化的假设条件和参数估计,所以其预测精度有限,不能完全准确地描述实际情况。
  4. 无法考虑复杂的非线性效应:扩散模型通常是基于线性扩散方程建立的,不能考虑复杂的非线性效应和反应,如化学反应、生物反应等。
  5. 受到空间和时间尺度的限制:扩散模型通常是基于一定的空间和时间尺度建立的,不能完全描述微观和宏观尺度上的扩散现象。

随着 AI 技术的发展,为了解决dreamboth,逐步的使用了微扩散模型

微扩散模型

是一种描述粒子在随机环境中运动的数学模型。它通常被用来研究一些复杂系统的动力学行为,如生物群体的扩散、金融市场的波动等。该模型假设粒子在空间中随机游走,并且在每个时间步长内以一定的概率跳到相邻的位置。这个概率是根据粒子周围环境的特征来确定的。微扩散模型的数学形式通常是一个随机微分方程,可以使用随机模拟的方法来模拟粒子的运动行为。

微扩散模型是一种数学模型,它主要用于研究物理、化学、生物等领域中的扩散现象。与传统的扩散模型相比,微扩散模型具有以下几个优点:

  1. 能够更准确地描述扩散过程中的非线性效应:传统的扩散模型通常假设扩散系数为常数,但实际上扩散系数往往与溶液浓度、温度等因素有关,因此具有非线性特性。微扩散模型可以考虑这些因素对扩散系数的影响,从而更准确地描述扩散过程中的非线性效应。
  2. 能够考虑扩散过程中的纳米尺度效应:传统的扩散模型通常假设扩散过程是一种连续的、平滑的过程,但实际上在纳米尺度下,扩散过程会受到表面效应、界面效应等因素的影响,因此具有非连续、非平滑的特性。微扩散模型可以考虑这些因素对扩散过程的影响,从而更准确地描述扩散过程中的纳米尺度效应。
  3. 能够更好地预测扩散过程中的异常行为:在某些情况下,扩散过程中可能会出现异常行为,比如出现扩散的逆向流动、出现非高斯分布等现象。传统的扩散模型无法很好地解释这些异常行为,而微扩散模型可以通过考虑扩散过程中的各种非线性、非连续、纳米尺度效应等因素来解释这些异常行为。 

用简单的话来说就是就是更加的丝滑还能够更佳精准的描述.

而现有很多大模型都是使用的是扩散模型像(dreamboth),而小的像 lora 等用的是微扩散模型.

为什么选择选择 lora模型?

lora 是一种使用图像训练自己的主题方法,该图像针对于小型显卡进行的优化,这意味着与Drembetch 语文本反转相比,可以只要训练一个只有 6 到 7GB的 VRAM 的主题 ,这个对于没有好的 GPU的所有人是一个超级好的消息,基本上 lora 有点像 drembooth 和 文本反转之间的创建的这些100M 字节的小文件,可以使用与文本新版本侵入式完全相同的方式

vram:视讯随机存取记忆体,这里可以理解为一个随时可以调用的数据

文字反转:在某些机器学习模型中,文字反转指的是将输入的文本数据进行反转操作,以增加模型的鲁棒性和泛化能力。具体来说,将输入文本进行反转操作后,可以使模型学习到输入文本中不同顺序的特征表达,从而提高模型对于输入数据的理解和泛化能力。----这里可以理解为是一种抽离特征并且进行训练的方式

为什么推荐Koya.SS.GUI

koya.ss.gui 是一款超级酷的软件 非常易于使用,可以在其中训练 loar模型并且降低检查点和纹理反转嵌入甚至微调模型.而且操作上也是比较简化的.

接下来就讲讲训练的流程

训练流程

训练前提

你将确保你安装了 python 和git2 个软件,python 主要是负责搜索 git 主要是负责下载模型.

如果你已经安装了,安装稳定之后,他就应该已经在那里,推荐 NVIDIA 的30 或者 40 系列的显卡.低一些的也可以带得动.

图像准备

准备高质量的图像的并且图像有很多变化,所以你有不同角度的变化,不同的角度的不同灯光确保至少有 10 张,,拥有少量高质量的比大量低质量图像更好,那么你可以使用像:berm.net这样的网站将,图像大小调整为 512*512 分辨率,尽管分辨率较低你不一定调整任何图像的大小,可以使用任何分辨率的图像,但如果你不自信,可以在 SD 中,或者是 koyaGUi中通过进入实用程序来完成这个步骤,然后相信它基本会做能完全相同的事情,将分析每张图片.

然后创建与图片同名的文本文件,然后对于每张图片,您可以收订修改提示词,以至于它能够完美的描述图片,要输入你模型的名称,提示看起来像你的模型,但是如果你想要更精准的提示,你可以地在标题的开头输入模型的名字,

你的角色名字,你的角色的名字在较低的嵌入中,将链接在一起,但是如果不想这么做这也没什么大不了的.这取决于您,所以既然我们的图像已经准备好了,我们将不得不创建一个特定的文件夹结构,所以这也是不同的地方.

与dreamboth训练相比,但相当简单,每一张图片至少要训练 100 步骤,每一组图片至少要训练 1500 步,你将要 1500 除以你拥有的图像数量,会给你 150 个,这个数字是需要输入到文件夹名称中每张图像的训练样式的数量,因此为此你要右键右键 150 步(决定每一个训练步骤的数量),假如说后期添加图片的话所有数据需要需要进行计算(但是这个数字至少是 100).


注意点

CUP 较弱的话

如果你的 GPU 较弱的话建议启用内存注意点以及梯度检查点,这个可能会增加训练时间,但也会使用更少的 vram.

模型混用

可以调用其他的 lora 的模型进行混用,不过要设置相关的权重,还有要使用相同的种子模型才可以.

一次要训练的图像数量

数字越大,训练速度越快,因为您基本上讲训练步骤的数量除以该数字,但是你没有很多,这里有一些如果你这里只有 10 或者是 15 的话,建议你选择 1 批量大小,他实际会提高一点训练质量,当然这可能需要更长的训练时间,但最终的结果是值得的,当然更高批次大小也会增加用于训练的vram 的数量,所以你的显卡较弱的话,我建议你讲批量大小设置为 1,否则默认状态下将其保留 2,所以当涉及到这里的所有内容时,我们将默认白柳所有的内容学习率非常,你不用改变任何内容.

关于训练的最大分辨率:

如果你只有 512*512 张图片的话,如果可以的话,这是我的建议,如果你有一个好的 GPU 而不是 512*512,请请尝试 768*768 分辨率训练它,你讲使用更多 vram 但是你有高质量的图像你的最终模型会看起来更好,否则如果你有一个较弱的 GPU 只需要将它保留在 512*512 默认情况下.


总结

模型训练是一个时间长且复杂的过程,需要不断地投入到时间/经历/设备成本,还需要训练师的耐心.一旦能到 1.0 版本之后,就可以慢慢进行调试才能出结果.



Powered by Froala Editor

全部评论:0

更多作品

发表评论

取消

点击右上角
分享给朋友吧

分享到

取消

每人每天仅限5票,快给你心仪的作品鼓励的一票。

投票