00:00
各位小伙伴们大家好,在前面的视频当中,我们已经把Laura训练stableion的相关参数都已经配置好了,那接下来我们就可以开启训练了,那在这进行训练的时候呢,我们使用hugging face当中的呃,Conccelerate来进行分布式的训练啊,来提高我们的训练速度,那下面我们就给大家来看一下这一部分的训练内容,那我们在这里把这一部分代码给大家截图一下,好们一行一行的来给大家去分析一下,首先我们来看第一行,在这里呢,我们是有一个Python,有说我要去执行一个什么Python脚本,那我要执行的Python脚本是谁呢?是这里是SDSCS文件夹下面我们的ch network.py也就说在这里面我要完成我的训练,那在这个训练过程当中,我所需要的参数有哪些呢?下面这一些都是这个PY文件当中所需要的参数,那稍后我们再去说明这些参数是做什。
01:00
怎么的,下面我们先看上面这里啊,然后在这里我进行训练的时候使用的是什么?是hugging face当中的excellent库来实现分布式训练,那在进行分布式训练过程当中,我设置了一下我们的每一个进程当中的线程数是八,也就说一个进程当中我就有八个线程啊,来进行数据的一个处理,这是我们在这里啊,这个运行的时候的一个内容。好,那下面我们再来给大家去看一下什么呢?刚刚我们说了啊,去进行训练的时候,我要需要设置下面这些参数,那我们就给大家来分析一下每个参数是做什么的,那首先呢,我们来看第一个参数,我们来看这个enable bucket,那这个参数啊,它是来做什么,是,是否可以通过非正方形的图片来进行训练?如果我把它设为true,也就说现在就是处哈,那我们是可以使用长宽不一样的图片来进行训练的,当它是false的时候,就说这里我们没有开其它。
02:00
的话,那我就必须送进去是正方形的图片来进行训练,它就必须是宽高是一样的,这是我们的第一个参数,好,下面我们再看第二个参数,那第二个参数它指定的是什么?大家来看一下这里是指的什么?预训练模型的位置,我们前面定义了一个变量,在这个变量当中就是存储的我们预训练模型的路径,所以在这里我们把这个路径赋值给他就可以了。这是我们的第二个参数,好,下面我们再来看第三个参数。第三个参数指的是在训练过程当中,我所需要的数据集放在哪里,只要指定好就可以了。这里面就是我用Laura来训练stableion的图片都放在了这个路径当中。好,下面我们再往下看。第四个参数是我们的输出路径,也说最后你进行模型训练的时候,你保存的模型权重放在哪,就放在我们的output文件夹下面。另外在训练过程当中,你产生的一。
03:00
系列的日志啊,那都放在我们这个logs文件夹当中,那logs文件夹当中我去存储我们的日志的时候,是不是每个日志我需要去给它命名一下,那在命名的时候,每个日志的前缀都是我们的output name output name是什么来着,我们前面给大家设置了是我们的风格是什么就设置为什么,那对于我们现在这个任务来讲,就是格glass作为我们的训练的这个输出名字,那这时候格glass就作为我们输出日志的前缀名,好,下面这个参数,这个参数大家看一下是什么,是不是分辨率啊,它就指定了我现在送到网络当中的图像分辨率是多少,现在我们使用的是512乘512的图片,那这里的分辨率也就是512乘以512,再看下面这个参数,那这个参数哈,它指的是什么?是我去训练我的stableion的时候,我们的之路是什么样子的,我们前面给大家设置了它就是lower。
04:00
的形式,就通过A和B啊来进行训练就可以了,然后再看下面这个参数,那这个参数大家看一下是什么?最大的训练轮次,你要训练多少个轮次?这个是我们的学习率learning rate啊,我们设置的是总体的学习率,下面是unit的学习率啊,指的是我去训练unit,更新unit那一部分的参数的时候,你的学习率是多少?然后再接下来是我们的文本编码器,它的一个学习率,然后这我们设置好学习率之后,然后呢,对于这学学习率我还设置了一些策略,然后一个是衰减策略,还有一个是我们的warm up的策略,还有当你使用余弦的方式来进行学习率衰减的时候,我们有一个重启的轮次,那在这里进行设置,然后下面再看,这里是我们网络设置的相关内容啊,那这个上面这个DEMO这个参数呢,指的是我在进行支路当中进行降维的时候。
05:00
这个R的大小啊,这个阿尔法的值一般跟dim是一样的就可以了,你也可以把它设置的比Di小一些,再接下来是我们的output name,那output name呢,指的是我们训练出来的模型,命名的时候它的前缀是什么?下面这个呢是我们的benchside,也就是说你一次送入到网络当中多少张图片,下面这一个是我们要进行模型保存的时候要。间隔多少个轮次,再接下来是我是否进行混合精度的一个训练,那在这里我们设置为FP16,那就是指我要进行混合精度的训练,再接下来是我们去保存模型的时候的精度,那这里我们就按半精度来进行保存,也就是以葫芦的16来进行保存,C的是我们的随机数种子,然后下面这个是我们潜在空间的一些特征,大家都知道我们在这里进行cion的时候,是在潜在空间进行扩散,对吧?那这时候这个里面就是指我现在就是用潜在空间的扩散模型来进行图像生成,另外还有我们的鲜艳损失的权重,还有在这里我们这个token的最大长度,接下来这个呢,是指我们前面给大家去看训练级数据的时候,我们是不是每个PNG文件都对应着一个TXT啊,那这里就是指的我们对图像描述的文本信息放在TXT文件当中,在接下来这个参数呢?
06:26
是指我们去保存模型的时候的它的格式,那在这里我们使用的是什么?我们使用的是safe ten来进行保存,最后这两个是我们的最大分辨率和最小分辨率,我们的图片最小分辨率不能在这个比它小,然后最大分辨率也不能比它大,还有在这我们要保持tokens的顺序啊,也就说多少你在进行打乱的时候,你的tokens前多少个是不能被打乱的,最后呢,我们去设置了一些查form当中的一些参数,那这就是我们在这里进行模型训练的时候,整体参数的一个设置,那设置好之后我们直接执行一下这段代码就可以来进行模型训练,那训练过程当中大家来看一下,我就开始一个一个迭代的去进行训练,在我第一个迭代的时候,我就是steps是零,然后呢,现在也是第一个轮次,然后当我训练完第一个轮次之后,大家看一下我的迭代次数就变成了10%,因为我要训练多少个轮次。
07:26
我要训练十个轮次,然后接下来是第二个轮次,然后呢,Step就变成了20%,我是每隔两个轮次会来保存一下我们的权重,所以在这里大家看一下,训练到第二个轮次的时候,我是不是就保存了一下权重啊,那下面第三第四是一样的,哎,训练完第四个轮次之后,我要保存一下权重,然后第六个轮次保存一下权重,然后呢,第八个轮次一直到我们最后一个轮次,我都要来保存一下我们这个权重,那大家注意一下,最后一个轮次的时候,我们直接保存的就是glass.shift也说我们就没有再指定这是我最后一个轮次,那大家知道你在这里保存的时候看到没有轮次信息的结果,就是我们最终保存的。
08:14
权重信息,好,那这是我们的训练过程,那这个训练过程完成之后,在我们的output文件夹下面呀,哎,就会存储下来这样的几个safeer,也就说我们的模型权重,那对于这些模型权重,大家看一下是不是就是刚才我们去介绍整个训练过程的时候,第二个轮次保存下来的权重,第四个,第六个,第八个,一直到最后一个轮次保存下来的模型权重,这就是我们在这里训练出来的最终结果,好,那现在大家来看一下,我获取到这个最终结果之后,我是不是就可以在web UI当中来进行预测啦,所以当我获取到这个结果之后,我就直接到web UI当中来进行预测就可以了,那在进行预测之前,我们首先呢,到Jupiter lab当中,来给大家去演示一下我们整个训练过程,现在我们在我们的DR lab当中啊,来给大家去执行一下模型训练这一部分的内容,那如果要进行模型训练的话,我们就直接执行一下。
09:14
我的点SH文件就可以了,所以在这里面呢,我们通过bench,然后呢顺点SH文件就可以来进行模型训练,那现在我们就给大家来运行一下这个过程,我们来看一下,在这我们进行训练的时候,首先我就要去分词,然后分词完之后,然后呢获取词向量,然后来进行相应的处理,然后在这里大家看一下,我就获取到了我们之前设置的相关的一些参数,在这里包括我们班size的大小,分辨率的大小,是否可以送进去长方形的图片,还有在这里分辨率的最大值,最小值,这些内容我们都在这里获取到了,然后再接下来看一下我们的图片路径,那图片路径是在串文件夹下面LA glass当中,然后是十杠glass,是我们指定的那个图片数据集的路径,然后图片的个数呢,一共是有20个,每一个重复十次,然后呢,一共是有十个迭代,所以我一共要重复多。
10:14
二次,一共要重复2000次才可以,然后下面这一系列的参数也是我们前面配置好的,我们的keep to保持顺序的。Token的个数,然后呢,在这里我们的随机失活,还有在这是否做一些增强呢,增强我没有进行设置,所以这里呢就都是force,然后还有我们在这里这个class token啊,就是我们的类别名称就是class,还有我们这里对图片的文本描述都在TXT文件当中,那我们获取到这个之后,然后就开始加载我们的数据,我们前面给大家说我们一共有20张图片,所以现在就把数据都加载进来了,数据加载进来之后,然后我就开始进行模型训练,那在这进行模型训练之前,然后大家看一下啊,我要先去加载我们的预训练模型,那在这加载预训练模型的时候,大家看要加载sta的模型,要加载unit,要加载vae啊,这些我都需要把它拿进来,哎,把它们拿进来之后,就可以生成潜在空间的图像特征,也就说本来是512乘512的,把它做成64乘64的,然后在潜在空间当征我来进行相。
11:24
定的扩散,然后来生成我们的图片,好,下面我们来看,在接下来我在这就开始进行训练了,大家看一下第一个轮次,第一个迭代,然后第二个轮次,整个过程就开始进行了,好,那下面我们稍等一下来看一下这整个过程。好,到这我们的模型就训练完成了,我们来看一下,在这里开始进行迭代,我们的第一个轮次,第二个轮次,然后保存相应的模型权重,第三个轮次,第四个轮次保存相应的模型权重,第五、第六保存相应的模型权重,以至七八九十,我们分别间隔两个轮次来保存一下模型权重,那最后呢,我们的模型权重就都放在了output文件夹下面,大家看一下,在第二个轮次保存的时候就是杠0002.safer然后呢,第八个轮次的时候就是glass,杠0008.c那我在每间隔两次保存的权重就都放在了output文件夹当中,最后第十个轮次保存的结果就在glass.safer也就说在output当中我们的glass.safe那我们获取到这个模型之后,就可以在我们的web UI当中来进行使用了。好,那这个训练过程我们。
12:41
就给大家去看这些,接下来我们到我们的output文件夹当中来给大家去看一下我们最后产生的这个。模型权重,那在我们的output文件夹当中啊,我们就保存了我们现在训练好的第二个轮次的结果,第四个,第六个,第八个以至第十个轮次的模型权重,拿到这些模型权重之后,我就可以在stableion的外部UI当中来进行预测了。好,那我们的LA训练过程我们就给大家介绍这些,那现在我们把视频暂停一下,下一个视频当中我们来给大家去介绍一下预训练模型的获取方式。
我来说两句