00:00
各位小伙伴们大家好,前面我们已经给大家设置好了dream boss训练stable devotion模型的相关参数,那接下来我们就可以进行模型训练了,那模型训练的话我们就通过这些代码来完成,那下面我们就给大家来分析一下这些代码具体实现了哪些内容。那在这里我们给大家截图下来进行一下分析,首先我们来看第一行,然后在这里面我们是一个Python,也就说我执行一个Python脚本,那这个Python脚本呢,就是我们的trainer,也就就是我们去训练模型的时候的批文文件,在这个批文文件当中进行执行的时候,我们使用了hugging face当中的加速器来提高我们的训练速度,这是我们在这里进行模型训练的时候的相关指令,那在这我要进行训练需要指定一系列的参数,那这一系列的参数呢,就是我们在这里这所有的参数是我们在训练stableion的时候所需要的参数,那接下来我们就给大家来分析一下这些参数具体指哪些内容?好首先来看第一个,这里的是我们的混合精度训练,那在这里设置混合精度训练的时候,我们是把FLUTE32和FLUTE16结合在一起。
01:21
对模型来进行训练,那通过这种混合精度的训练,我们可以加快训练速度,提高训练效率,这是混合精度训练它的好处。那在训练stable diion的时候,我们需要加载我们的预训练模型,那第二个参数就是指明我们的预训练模型的位置。那这里呢,我们是通过model name来进行指定的,将stableion的模型转换为所需要的模型结果,那这个model name就是指的我们在前面weight-HF当中相关的结果。接下来这个参数指的是我们的训练及路径,也就是我们前面给大家介绍的train images,这里面就存放了相关的进行格子衫训练的图片。下一个参数是指的class data d,这个呢是指的预训练模型产生的图片的位置,就是我们设置的generate images。
02:21
三个路径,接下来一个路径是指的我们输出结果的保存路径,那在这里我们就是的result的一个路径,在这个路径当中我们会把最终的训练结果保存下来,而且还会保存几张预览图的结果,这是我们在这里这个路径设置的时候的一个内容。好所有的路径都设置好之后,在接下来就是我们去设置提示词的相关参数,那在这个提示词当中,我们主要有三种提示词,一种提示词呢是模型训练的instance promote,那这个呢就是我们的专有提示词,对于我们的格子衫来讲,我们前面已经给大家说过我们的专有提示词是什么,只要把专有提示词复制给他就OK了。然后再接下来是我们的预训练模型去产生图片的时候的提示词,那在这我们包含两个提示词,一个是正向的提示词和反向的提示词。正向的提示。
03:21
词就是我们希望预训练模型产生什么样的图片,反向的提示词呢,就是不希望它产生什么样的图片。在这里,这个正向提示词当中是不能够去包含我们格子衫任务的专有提示词的。除了上面两类提示词,我们还有一个生成预览图的提示词,那生成预览图的提示词也是包含正向和反向,正向提示词呢,除了包含我们的专属提示词,还应该包含你想要生成什么样图片的提示词,反向提示词,哎,就是你不想生成什么样子的,你就把它写在反向提示词当中就OK了。好,这是我们在这里设置的提示词。再接下来一个参数是我们的随机数种子,那这个随机数种子它可以保证你每次随机的结果是一样的,从而能够使我们的实验具有可重复性。再接下来的一个参数呢,是指的图像分辨率,也就是图像的大小,我们前面设置了512,也就是说我们现在图像的分辨率是512乘以512的,下面这个参数呢,是我们的bench size,也是说批量大小,你每次送到网络当中的图片的个数那。
04:37
那这个图片的个数,当你的图片个数越小的话,那对显存的要求也会越小一些,当你的bench size变大,那对显存的要求也会变大。下面这个参数是来进行梯度累积的,那这种梯度累计啊,可以变相的去提高我们的bench size,而不去增加对显存的一个需求。在接下来是设置learning rate的相关参数,那在这里设置学习率的时候,你可以指定一个值,指定好这个值之后,你可以使用学习率衰减策略来对学习率进行递减,从而呢保证我们在模型训练过程当中哈不会因learning rate发生。
05:16
梯度爆炸或者是梯度消失现象,还有我们在这里还设置了一下warm up,也就是说学习率的预热,在刚一开始进行训练的时候,我们认为网络是不稳定的,所以我们希望呢学习率小一点,所以使用到了warm up的这种策略,那前面我们已经给大家去设置过learning rate是多少,设置了我们的衰减策略,还有warm up迭代次数,这是我们前面已经设置好的参数,直接复制给他们就可以了。然后再接下来这个参数是指。预训练模型产生的图片的个数,那这里我们就是产生20个,然后下面这个呢,是最终去保存模型,你去生成预览图的个数,那在这里我们的预览图个数就是四,下一个参数指的是我最大的迭代次数,那在前面我们把这个值设置为了3000,在接下来是你去保存训练结果的时候,迭代次数的间隔是多大的,还有去记录日志的时候,你的间隔是多大的,这是我们在这里这几个参数。
06:22
还有这个clip skip,就是我们要去跳过T图检查还是不去跳过它,还有我们的number circle,就是你的训练周期数,Last a是上一训练周期的结束步数,还有我们是否去追加提示词,使用巴比特的am优化器来进行优化,最后呢,在这里我们还指定了插forms的一些参数,好我们把这些参数指定好之后,只要执行这段代码即可完成模型训练,好那我们来看一下在这个执行过程当中哈,我们会对。这个训练结果进行一个展示,那在这里就是我们这个训练结果展示的一个内容,那大家可以看一下,我们是每隔500个迭代去保存一下模型,所以大家去看到在这里,诶2000的时候会保存一次,2500的时候会保存一次,3000的时候会保存一次,那这就是我们在这里每隔500去保存一次模型结果,那最后呢,一次的迭代,我们还会保存最后一次你的训练结果。另外在训练过程当中,我们还会产生预览图,每保存一次模型,我们就会产生四个预览图,那大家可以看到在这里每一次的时候我都会生成1234个预览图,这是我们在训练过程当中展示出来的结果,当我们训练结束之后,我们还会去保存模型,我们下面来看一下保存的结果,每隔500个迭代,我们就会保存一次权重,所以在这里大家看一下从第零到第五。
07:59
百的时候,我们会保存一次权重,500~1000 1000~1500,一千五到2000,两千五一直到3000,每一次都会保存一个权重,那在这个里面我们保存的权重呢?诶,就是def user的权重结果,那获取到这个权重结果之后,我就可以利用它来进行模型转换,最终呢,去做模型预测,好,那这就是模型训练的整个过程,那下面呢,我们就到Jupiter lab当中来给大家去看一下这个模型训练的结果,好,模型训练的代码跟我们在PPT上是一样的,那在这大家看一下,我们用Python来执行我们的脚本,并指定一系列的参数,就可以来进行模型训练了,那下面我们就给大家来执行一下,来看一下模型训练的结果。
08:48
好,那现在我们去运行我们的模型训练的代码,那现在我们就可以获取我们当前的显卡信息,在接下来我就可以去产生图片,那在这里生成图片的时候,大家注意一下,是我们的预训练模型在产生我们的20张图片,也说我在这里要产生20张图片来进行相应的。
09:09
模型训练就是我们的预训练模型来产生的图片。一训练模型产生好图片之后,然后接下来我们就产生我们这个潜在空间的特征,因为本身我们的图片是512乘512的,我们在进行stable的。模型训练的时候,需要把我们的图片转换成64乘64的大小,那在这里这个就是来生成潜在空间的特征,也就是说把我们的训练及数据从512乘512转换成64乘以64的,好,那转换完之后,接下来我们就可以进行模型训练了。我们就在3000个迭代当中一次次的来进行迭代,那现在我们就迭代了60几个迭代,然后当我迭代到500个的时候,我就会产生我的预览图,然后再接下来我就会去。
10:01
保存我的权重,那下面我们就给大家来看一下,当我到了500个迭代的时候,我们产生的效果。当我们执行到500个迭代的时候,我们会把权重保存在checkpoint-500当中,另外呢,在这里我们同时还会产生四张预览图,那这四张预览图就是我们现在训练好的这个图片,训练了500个迭代之后产生的图片,剩下的2500个迭代我们在这儿就不给大家去录制视频了,等我们全部训练完成之后,我们来看一下我们的训练结果。大家来看一下,我们训练完500个迭代之后,它会去保存一个checkpoint,并生成相应的图像,然后呢,1000个迭代之后会保存check在CHECKPOINT1000当中,然后呢也会去保存图片,一千五的时候,两千两千五三千的时候,它都会去保存我们的权重,并且去生成我们的预览图片。那最后的时候大家看一下,在这里不管是两千五还是2000的时候,我们保存出的文件都是在checkpoint-2000和杠两千五当中,但是到最后一次迭代的时候,3000次迭代的时候,我们保存的文件在checkpoint last当中,这是我们在这里这整个的一个训练过程,也就是说随着我们这个训练的进行哈,每隔500个迭代,我会保存一下模型权重,保存好模型权重之后,并且会来产生我们的预览图片。
11:28
好,那这个我们就给大家先介绍这些啊,大家看一下,在我们的result文件夹当中,我们就完成了一系列的模型保存和预览图生成的结果,那在这里大家看一下,我们保存了500个迭代的时候,1000个迭代,1500个迭代,2000个迭代,2500个迭代,以及最后LAST3000个迭代的结果,那下面我们就给大家来以这个1000个迭代为例啊,来给大家去看一下其中的内容,那这个sims当中呢,就是我们产生的一系列的预览图,大家可以看一下,在这里当我迭代1000个迭代的时候,我们生成的预览图就是这个样,大家看一下,现在我们是不是就是生成了一些格子衫的人呢?对不对,这是我们在这里这个,那除了这个。
12:13
图片之外,预览图之外,大家看一下剩下的这些文件,就是我们的什么,哎,就是我们的。模型权重,那这些模型权重我们只能在当中去使用,当你要在table当中去使用这些权重的时候,我们需要把它转换成。CKPT才可以,所以下面我们就给大家来看一下模型保存的相关内容,那这里我们先把视频暂停一下。
我来说两句