粉丝9851获赞3.0万

想拥有一个自己的大模型,但不知道怎么下手,别慌,这个视频教你从电脑开机开始,带你一行行手敲代码,全程实操,微调出一个专属于你的大模型,新手小白也能轻松拿下。 好,那么在讲解整个项目之前的话,先简单给大家介绍一下,那么我们整个微调训练的这样一个算力平台啊, 因为我们本地的环境的话,那第一个因为它配置比较低啊,然后跑起来的话,这个时间的话会更长一些,因此的话,我们给大家去选择了一个免费的算力平台啊,也就是 model scope 啊,摩达社区, 那么在这个平台当中的话,他给每个人啊都有提供啊,对应的这样的一个算力啊,那他有一个额度的一个限制啊,然后他的这个配置的话,是一个显存是二十四 gb 的 啊,完全是够用的啊。 所以的话,我们在这个平台当中啊,那我们可以去完成我们整个模型训练的这样的一个过程啊,在本地啊去进行编辑和调试。 那接下来的话,我们来了解一下,就是关于我们整个项目的这样一个结构啊,那整个项目的话,我们一共有五个文件啊,那么在这五个文件当中,简单给大家介绍一下啊,首先第一个啊,是我们的一个 readme 啊,那这是我们的一个项目的一个介绍文件啊,这个根据大家的需求,那你可以写 也可以不写,因为它是一个做介绍用的。然后第二个就是 requirement, 那 么这是我们一个 python 的 这样一个依赖包的这样的一个列表, 是你在整个项目当中啊,他需要用到的一些第三方的一些工具包啊,一些模块,那我们会把它放到这样的一个文件当中去啊,然后还有一个就是 man 点 py 的 这样的一个文件啊,那么这个就是我们所有的这样一个微调训练的代码啊,那么一共的话是分为七步啊, 然后再接下来的两个啊,那么就是我们用来生成我们的一个微调训练的这样的一个数据集的啊,一个代码和我们的一个呃,生成的这样的一个文件啊, 好,那整个项目结构啊,咱们有了一个基本的了解之后啊,下面的话,我们先简单给大家介绍一下,就是关于我们这个依赖的一个安装啊, 那这个依赖的话啊,我们需要去安装的话,一共的话是五个模块啊,就包括这个啊, touch, 然后 transformer, 然后还有这个做数据集的,还有这个啊, data sets, 还有我们做这个呃, lala 微调的啊,然后最后面这个是我们来做这个模型量化的啊,用来去节省我们的一个显存 好,那么对于这样的一些模块的话啊,那么我们在 model scope 的 这个环境当中啊,那其实的话我们是不需要去安装的, 如果大家啊,你在本地啊,去尝试啊,或者说啊,你用了这个啊,其他的一些算力平台,那我们就可以自行的去安装啊,对应的这个模块,那么安装的方式啊,也非常的简单啊,如果我们可以去打开我们的这个命令,行啊,我们的 c m d, 那 比如说我们现在啊,我们先进到咱们的这个算力平台当中来啊,好,那么在这里啊,我的这个项目的这个路径啊,是在这个啊 deep, 然后 s f t 啊,这是我们的一个 整个的一个项目的一个文件夹好,然后在这个文件夹下面的话,我们可以去启动一个叫我们的这个命令行终端啊, 然后在这个终端当中啊,但如果说啊,你需要去安装啊,我们刚刚讲到这样的一些模块啊,那么直接通过这个 pip install, 然后杠 r 啊,指定你要安装的这样的一个列表啊,就是模块的一个列表,就是 requirements, 然后那么我们在这里面给大家再加了一个杠 i 的 一个参数,那么这个参数它的作用是用于换元, 也就是你在下载模块的时候,它的速度是非常慢的啊,所以说我们需要把它的下载地址切换到豆瓣的这个啊,原的这个地址来啊,那么这就是我们的一些基本的一些环境的一些配置啊,所以大家先打开我们的这个 model scope 的 这样一个算力平台, 然后啊自己去新建一个文件夹啊,然后叫 deepsafe, 杠 r e 啊,杠 sft, 那 么它里面有没有这样的一些文件啊?不重要啊,就它是一个空白的,就大家如果说你创建完这样的一个文件夹之后,它里面应该是一个空白的,好吧,那么这个是正常的, 那么这些文件啊,就是我们接下来在写项目的这个过程当中啊,我们会一步啊一步的去进行这样的一个创建啊。 好,那么现在的话,我们再回到 modscop 啊,我们的这个平台当中来啊,那我们首先第一集的文件夹啊,还是这个模型微调啊,那么我们之前的话是有 创建了这样一个 deepsafe r e 微调的这样的一个项目啊,那么现在的话,因为我们是从零开始啊,所以我们把整个的这样一个步骤啊,那么重新啊,给大家去复现一遍啊。那在接下来的话,我们首先的话来到这个 项目当中,我们先创建一个文件夹啊,那么这个文件夹的话,我们这个名字我们采用的话还是一样的啊,我们改一个二啊, 好,然后再进到这个项目的这个文件夹下面之后的话,那我们整体的一个操作啊,那么我们是在我们的这个代码当中啊,我们要有一个体现啊,所以在这里我们可以先去创建我们的这个代码当中啊,有两种方式可以给大家去选择啊,一种的话是我们这个,呃, 那一种的话就是我们这个 notebook 啊,我们这个可以单步去执行的啊。然后还有一个的话,就是我们这个啊,纯粹的这个拍摄文件啊,那么它一次性的话是执行所有的这个代码。那么接下来的话,我们就先通过这个 notebook 啊,我们先给大家去进行这样一个简单的一个尝试啊, 我们直接点击这个图标啊,然后我们就会进到这个 notebook 的 这个文件当中来啊,那首先的话,我们的开始啊,我们需要去做什么?这个代码应该怎么去写啊?那其实还是回到我们这个环境的这样一个准备啊,那么我们现在平台我们是 ok 了,那我们现在还缺少一个模型, 那模型的话是需要我们自己去进行下载的啊,我们这里面同样的也采用的是这个啊, modscop 的 它的这样一个选项啊, 然后他给我们也同样的去提供了这样的一些命令啊,比如说我们可以基于他的这样的一些命令啊,去下载啊,我们对应的这样的一些呃模块或者我们这个模型,那么对于这个代码的话,我们其实可以直接复制啊,复制之后我们来到我们的这个环境当中来啊,那么首先第一步啊,就是去下载依赖的 模型啊,好,然后这个模型的话,我们在这里的话,是啊一点五 b 的 啊,但他这个下载的这个路径的话,其实是固定的啊,所以我们可以先执行一下这个代码,因为我们本身的话,我们其实这个模型的话,我们已经下载过了啊, 所以说他直接就完成了,那么如果说大家没有下载过的话,他会有下载的一个过程啊,所以你把这一步先给他下载好。 那么下载好之后啊,我们怎么样去查看?那我们的这个模型它到底在哪一个位置啊?那么在这里的话,我们就可以通过我们的这个啊终端啊,那么在终端里面的话,我们其实就可以去进行这样一个查看啊,那么它的这个模型的话,默认是在这个 workspace 下面的话,我们找到 好,然后通过 l s 啊,我们去查看啊,然后在这个路径下面的话,呃,它会有一个隐藏的这样一个目录啊,呃,就是那个 catch 啊,那么这边我们通过 l s 杠 a 啊,我们就可以查看到,那么在这个 catch 这个目录当中,我们直接通过 cd 命令,然后进到这个 catch 的 这个目录当中来。 好,然后有一个 model scope 啊,我们进来之后啊,然后现在有一个 deep seek ai 了,然后我们通过 cd 啊,然后切换到这个 deep seek ai。 好,然后我们再去进行查看。好,那么这个就是这个我们要下载的这个模型啊,他就会有这样的一个路径啊,他就会下载到这样的一个位置啊,就方便我们大家去进行这样一个应用啊。 好,那么这个模型啊,在下载成功之后啊,那么接下来的话,我们就可以正式啊,进入到我们整个微调的这样一个流程啊,那么首先 第一步啊,那我们应该是要去做什么?第一步我们要做的事情很简单啊,也就是我们要去加载模型啊,并且我们要去测试啊,就他有没有问题。好,那么这个代码的话,我们就为了这个节省时间啊,我们就直接给他复制过来啊,对方都给他准备好了。 好,然后我们接下来给大家解释一下,那么这个代码的话,首先它是一个什么意思啊?那首先第一行代码就是通过 form 啊,我们去导入啊,从哪里导入呢?从这个 transformer 那 里面去导入了这个 autoticon, 然后还有这个第二个这个一个框架啊, 好,那么在这个导入之后啊,那么它到底啊,它是做什么样的一个应用啊?就它的这个作用是什么?那首先这个 tokenizer 它是用来加载啊,并且去识别我们这个对应模型的一个分词器啊,那这个我们后面是需要去用到的, 然后这个的话就是我们用来加载这个模型啊,用于我们的这个任务的一个生成。好,然后接下来的话,我们去写了一个 model name 啊,也就我们去指定了啊,我们已经 提前下载好的这样一个模型的路径啊,那如果大家啊,跟我一样也是用的 model scope 的 话,那么你的路径应该也是这样的一个路径啊,就这个不会变啊。 好,那如果说你是自己的平台的话,你就把这个路径啊换成你的这个模型所在的一个地址啊,就可以了。好,然后接下来 tokenizer, 那 么这行就是实际的这样一个加载的这样一个过程啊, 好,包括这一步啊。好,那么在这里的话,我们是用的一个 to 啊,然后这个库达,那这个是什么意思?哎,这个表示啊,把我们的这个模型啊加载到我们的这个 gpu 上面来啊,进行这样一个推理的一个加速啊,所以我们先 执行一下这个代码,然后我在这里就可以看到我们整个的一个设备的一个使用率啊,比如说我们这个显存啊,来看一下,现在还是还没有去用的啊。好,那么等到我们的这个模型啊,在加载成功之后啊,我们再看一下啊,好,这个地方还没有加载完啊, 好,来,现在啊,这个地方已经加载成功了。 ok, 来,我们可以看到这个变了没有?变了,现在是这个七七 g 啊,对吧? ok, 好, 让我们再接下来我们再继续啊,好,那么第一步啊,我们在完成之后的话,就是我们的第一步啊, ok, 加载模型啊,并且去测试啊,他有没有问题,那么我们可以看到结果啊,是没有问题的。 ok, 好, 那么模型在加载成功之后啊,接下来的话,我们去做我们的第二步啊,也就是要准备啊,我们的数据集, 那么这个数据集的话怎么来啊?其实很简单啊,那么如果说我们只是做一些简单的一些测试啊,你没有一些实际的一些应用的话,你可以通过大模型啊来帮你来进行生成,比如说你给他一个 相关的一个主题啊,然后由大模型去生成相关的这样的一些数据啊。好,那么在这里的话,因为我们是呃给大家去演示一下整个微调训练的这样的一个流程啊,所以的话,那么我们的这个数据同样的也是通过大模型啊来进行生成的, 所以接下来的话,我们这个地方会用到我们的这个代码的话,我直接给大家去复制一下啊,然后这个是我们的第二步啊, ok, 准备数据集好,那么这个数据集这个到底该怎么去用啊?其实说白了就是我们要首先你要有一个什么,你需要有这样的一个列表啊,就你这个样本里面它到底是什么?那我们可以看到它现在是一个空的啊,这里面现在是没有这个数据的, 那么这个数据啊,我们到底怎么样啊?来进行这样的一个获取啊?那么在这里的话,我们要用到这样的一个代码, ok, 呃,我们来到我们前面啊,给大家做的这个项目里面啊,啊,这个地方他会有一个拍摄的一个文件,然后给他看一下,好吧?然后在这个拍摄的文件里面的话,那我们可以看他这边是不是有这样的一个 show, 对 吧? ok, 好, 那么这个数据的话,其实我们就可以直接啊,你把它复制过来就可以了啊,当然如果说你觉得比较 浪费啊,你觉得这个地方有点占地方,那你就可以不复制啊,就你可以用这种代码的形式啊,然后去做一个啊 form 引入啊, ok, 但这边我为了方便大家去理解啊,所以说我们就可以直接把它拿过来算了啊,好,直接把它粘贴过来啊,好,粘贴过来之后啊,那么我们在干嘛?哎,我们是通过位置 open 啊,去打开了这样一个节省的一个文件啊,然后通过写入的方式, 把我们上面的这样一个列表啊,我们通过便利啊,然后把所有的数据啊写到这个节省的这个文件里面来啊,所以这边我们先来执行一下这一段代码, ok, 哎,有问题,没有问题,然后地方就有个节省文件,来,我们打开这个节省文件看一下,好,那么这个节省文件里面啊,就是符合我们的数据集的一个要求啊, ok, 一个是 prompt, 还有一个什么,还有一个是 complication, ok, 呃,就有两个啊,两个阶段。 好,那么这个数据集啊,我们在准备完成之后的话,那么接下来的话就是我们的第三步啊,来看一下。 ok, 好, 那么第三步的话,就是我们要对于这个数据集啊,我们要去做一个拆分啊,因为我们正常的这一个 训练啊,它都是有这个训练级和这个测试级的一个区分的,那么在这里的话,我们要针对于这五十条数据啊,因为一共的话它只有五十条数据啊,所以对于这五十条数据,那么我们的这个处理方案也很简单啊,首先啊,就是通过我们这个 data sets, 那么这个 data sync 的 话,它是一个专门啊,用来加载数据集的这样的一个模块啊,那么它里面有一个方法啊,叫 node data sync 啊,那么这个方法就是我们要去用的啊,所以我们把这个代码,我们先把它拿过来啊,好,拿过来之后啊,我们先简单的来看一下啊,好,然后在这里面,那么首先的话,我们是 通过什么,通过我们导入的这个 load 这张 set 啊,来进行导入,那么导入的话,第一个参数这个 jason 啊,它表示是我们这个文件的一个格式啊,然后这个 data files 啊,也就是我们这样一个数据集, ok, 它这段到底是怎么去进行这样一个导入的啊?所以这个段我们来写路径的话,稍微改一下啊, 好,然后 smily 的 啊,这地方是做了一个切割的啊,这个切割就是我们要有这样的一个呃,区分啊,好,让我们先把代码先执行一遍啊,然后这个地方报错了,就是没有找到我们的这样的一个 文件啊,我们看一下 data set ok 啊,没有 s ok 可以 了啊,好,那这个地方我们在执行完成之后的话,我们能够看到的就是,首先啊,那么我们公的数据啊,一共的话是五十条,然后我们用于这个训练的数据的话是四十五条啊,然后用于测试的数据的话是这个五条啊,就是,呃 啊,九比一的这样一个数据的这样一个区分啊,然后那训练数据啊,咱们这个就准备完成了。那这个地方,其实这个就是我们具体的这样一个切分啊,比如说这个代码,对吧?它只是按照这个九比一的这样一个格式啊,然后进行这样一个拆分, 然后这个 test 的 赛制啊,它表达就是测试级它的占比的话是百分之十啊,也就是零点一,当然这个你可以去调啊。 好,然后这个地方拆分完之后的话,那么我们能够得到,就是分别能够得到啊,两个不同的这样一个数据集啊,一个是训练的数据集,一个是测试的这样一个数据集,然后我们再把它的一个数量啊,通过 print 把它打印出来,可以看到这样一个效果。 好,然后再往下,那么就是我们的第四步啊,我们要编写这个 tokenizer 的 一个处理的一个工具啊,那这一步的话是什么意思呢?其实也比较简单啊,就是我们要知道啊,对于我们的模型训练来讲,它并不是说你直接按照原本的这样的一个格式啊,比如说,哎,我们按照这个 json 里面的这个数据, 对吧?它是一个字典,那你就把这个格式丢给我们的大模型,它就能够去训练吗?并不可以啊,所以我们需要对于这样的一个数据啊,我们要给他去做这样的一个预处理的这样一个阶段,那么这个预处理啊,到底是什么意思呢? 哎,其实啊,就是去定义一个方法啊,比如说叫 talk nader function 的 这样一个方法,然后啊它接收一个参数啊,这个参数,就是嘛,就是我们的这样一个啊,训练的这样一个数据集。 好,那么在拿到这样的一个训练的数据集之后啊,接下来我们的这行代码,它看上去那有很长啊,但是它的逻辑啊,其实是非常的清晰的,就是用了一个什么,其实就是用了一个啊,我们的列表推导啊。 ok, 首先我们是通过这样一个 deep 啊,我们从我们的这个训练的数据集当中啊,把这个 promenade 这个字段,还有这个 compilation 这样一个字段,哎,分别拿出来,然后我们去做这个负循环的一个便利, 那么他每遍历一次,他得到的数据啊,都是其中的这样一条数据啊,然后我们把这样的一条数据啊,组合成一个什么 组合成一个制服串。 ok, 组合成这个制服串,然后中间的话是用一个杠 n 啊来进行的这样一个区分啊,就是我们要把原本的两个字段啊,把它变成一个制服串啊,也就是我们的 test 啊,那么现在他就是一个列表。 好,然后再接下来的话,那么通过这个 tokenner 啊,我们要对于我们这个文本啊来进行这样一个编码。好,那这个编码到底是什么意思了?哎,我们就通过啊,我们实际的这样的一个效果啊,来给大家去进行这样一个展示啊, 好,来我们这个地方就有了,然后把这个 print 打印档给它打开啊,就是我们把经过这个转换之后的这个数据啊,我们给它直接打印出来。 好,那么我们可以看到啊,这个地方都已经处理完成了啊,然后这个地方代码有点问题啊,没有定义,那应该是变量名写错了,我们看一下 delete c 的 啊,我们上面的这个是没有问题的啊,对,你写错了,多了一个字母啊, 好,可以了啊,好,那么现在的话,就是我们把第一条的这个数据啊,已经打印出来了,好吧,我们就可以看到他对应的这样的一些内容啊,那么我们刚刚讲到了,就他会去对于我们的这个文本啊,来进行这样一个编码, 对吧?也就我们的这一个 tokens 啊,那么在这里面啊,它得到这个数据啊,它到底啊是什么样的?其实就会有这样的一个张量啊,就也会这样一个张量在里面啊, ok, 然后这个 labels 啊,那这个就是我们后面我们去给它添加进去的这样的一个内容,就这个流程,我们也可以把它理解成我们一个固定的,好吧?比如这个 labels, 那 么它是我们的一个标签, 对吧?那我们为什么要去设置这样一个标签呢?那么是用于啊,我们在训练的过程当中啊,我们要去计算我们的一个损失的啊,所以说你要把这个东西给它加进去啊,所以说我们的第四步啊, 好,那么第四步啊,就是你再给他这个啊, tooling layer 啊,处理完成之后啊,接下来的话,我们再去来做第五步啊,也就是量化 好,那么做量化的目的啊,其实就只有一个啊,就是用来去节省我们的一个内存啊,节省我们一个显存的一个占用啊, 所以在这里面,那么它包括像我们的四比特量化也好,巴比特量化也好啊,都可以啊,所以对于这个代码,那么首先啊,就是从 transform 里面,对吧?我们把这个类啊,你给它导进来啊,那这个就是我们用来去设置我们的这个量化参数的一个类, 然后接下来一个 classification 啊,然后 config, 那 么就是用来去设置啊,你到底是用哪一个量化?比如这个巴比特,那么就是启动啊,这个巴比特量化啊, 然后接下来啊,我们通过这个,这个就是我们之前前面讲的加载模型的嘛,好吧,那么这个地方就是用来重新啊,去加载我们的模型,并且去应用我们的这样一个量化的一个配置, 那前面那可能就直接用这个 model name 啊,去加载了一下,那现在我们把这个宽体对称啊,也加载进来,然后啊,那下面的这个什么这个凹凸啊,那么就是指定是吧?啊,就是分配啊,我们的这样一个可用的 gpu 设备啊, ok 啊, 好,然后把这个代码我们再拿过来啊,好,注四拿过来一下啊,第五步,好,拿到之后啊,我们来运行一遍啊,好,量化模型啊,加载完成没有问题啊, ok, 好, 那么这一步完成之后的话,那接下来我们开始去做我们这个 lala 的 一个微调的一个设置啊,那么这个 lala 微调的设置啊,那其实 相当于就是我们要去把整个的一些配置啊,你要给它搞清楚啊,对吧?它到底用到哪一些内容啊?比如它怎么去微调的,对吧?我们现在是要去做微调吗?那微调你是基于什么来做的?那我们是基于 lala 来实现的啊, 因为我们并没有去用到一些微调训练的框架,你比如说 anselos 也好啊,像这个 nma factory 也好,我们都没有用啊,那我们就用这个原声的那个 lala 啊,我们来进行这样一个微调, 那首先第一个啊,就从这个 pft 里面啊,去导入啊, lala 那 么相关的一些模块啊,那这个就是用来去获取加载我们的一个模型啊,然后还有这个配置 好,然后这个地方是干嘛呢?那这个地方其实是要去创建一个 lala 的 一个配置的一个对象, r 等于八啊,表示他的一个字啊,就是 lala 的 一个字,控制我们的一个数量啊,然后这个十六啊,表达的是我们的一个 缩放的一个因子啊,那么它影响的是我们 lala 权重的一个学习的一个速率啊,然后再接下来的一个零点零五啊,那么它表达的就是我们的那个防止啊,过礼盒我们会用到的一个参数啊,然后后面的话,这个就是我们的一个语言啊,就设置我们的一个英国语言的一个模型 好,然后通过这个啊 get 啊,然后 pft model 啊,来加载啊,就是把我们的这个原始的这个模型啊,这个 model 嘛,对吧? model, 前面我们去加载了一个模型嘛,那把这个模型啊,转换为啊支持这个 lala 微调的一个形式啊, 然后把这个老打他创建的一个配置的一个参数啊,我们也给他丢进来,那么丢进来之后啊,我们这个地方啊,就是怎么就可以去打印我们这个可以训练的一些参数啊,和他的一个比例啊, ok, 好, 来,现在我们把这个代码我们拿过来执行一遍啊, 好的,看一下啊,好,那么这个地方直接就结束了,那么他打印出来这个结果,来我们看一下啊,那么我们能够看到的这个比例是多少?百分之零点零六一三啊,非常小的一个比例了,因为一共就五十条数据啊, ok, 所以 他的占比啊,是非常低的啊。 好,然后这个设置啊,完成之后的话,那么接下来我们开始去准备啊,我们的这样的一个训练的这样的一个参数啊,就你整个的一个训练,对吧?那么它到底是怎么去训练的,对吧?参数啊?到底有哪一些啊?好,那么接下来我把整个参数 再详细的给大家来做一个讲解啊。好,那么首先的话还是一样的,从这个训练的一个参数啊,以及我们的这个训练器的这样一个类啊, 好,这两个类,那么首先我们对于这个参数的这个类啊,那么我们要给它做一些配置,那比如说第一个 output 点啊,那么这个就是我们用来输出啊,我们这个模型的一个目录啊,就训练之后的这个模型啊,输出到哪里? 然后接下来就是我们的这个 apos 啊,这个就是我们一个训练的一个轮次啊,现在我们是十轮,那你可以说五轮啊,二十轮啊,都可以啊。好,然后再接下来的话,这个 tape 啊,那这个是什么? 这个是每个设备啊,他训练的一个门,他最大的这样一个值啊,就这两个啊,好,那这个值的话啊,啊,上面的是值,然后下面的是 t 度啊,好吧,上面是我们的这个设置啊, 好,那这个就是可以根据我们这个设置,你的设备的性能越好,那你可以把它调大一点啊,比如调个八呀,十六啊,都可以,那如果说配置不行,那你可以把它调成二啊,也是可以的,好吧?然后下面这个就是这个,就是我们那个 t 度啊, 好,然后这个十,这个 f p 十六,就是我们的一个混合精度啊,就开启我们这个混合精度的一个训练啊,那么这个同样也是用来节省这个显存的。然后接下来就是我们的一些啊,比如 log in 啊,这个就是我们的日历啊,就是美食部啊,然后去保存一下我们的输出,我们的一个日历啊, 然后一百步的话,干嘛保存一次我们的这个模型,然后经过一定的一个步数啊,那么我们就要去进行这样一个评估,那到底多少步呢?每十步的话,我们去做做这样一个评估,然后这个是我们的学习率啊,然后还有一个逻辑的电压,之后我们的日记啊,它输出在哪里? 好,还有一个 running 啊,这个就是我们的一个实验的一个名字啊,主要是用的日记啊,来进行记录的好, 嗯,这部其实也没有什么,我们直接把它复制过来啊。 ok, 好, 我们先执行一遍啊,看有问题啊,没有问题,对吧?好,然后这样我就把整个的这个训练器啊,这个部分也讲到啊,那么训练器的话,那么在这里的话,同样的啊,他也不复杂,对吧?因为这个首先这个类, 那么是你从全是 form 里面导入的好,然后他的参数来看啊,首先 model, 那 model 就是 我们通过这个 lada 啊,他重新去加载过的这样一个模型。 然后 ar g s 呢?这个就是我们上面我们所创建的这样一个训练器的这样一个训练的一个参数。好,然后接下来这个什么,哎,训练的数据集,对吧? ok 啊,这是我们前面我们把它切分出来的,还有一个这个是我们的测试的一个数据集,都给他,对吧?所以这个就是我们定义啊这个训练器的这样的一个过程。 那么训练器啊,在定义完成之后,接下来你想要开始啊,去进行这样一个训练的话,其实也非常简单,就调用他这个去这样的一个方法,好吧,所以我们直接啊把这两个也拉过来。好,然后我们先开始跑啊,因为这个训练的话需要一定的一个时间啊。 ok, 好, 我们就可以看到啊,那么这个地方他会有这样的一个开始训练的这样一个过程啊,包括现在,那么这个日历有了没有?现在就开始输出我们这个日历了。 ok, 所以 这边需要一定的一个时间啊,那么接下来的话我们干嘛呢?我们把整个代码啊,把它整合到一起啊,我们来一起来新建一个什么?我们这边新建一个,呃,拍摄的一个文件啊,因为这个训练还没有结束啊, 再看一下,对吧? ok, 好, 他还在跑啊,然后我们就创建一个文件啊,这个是 tst 的, 我点错了啊, 然后我们选择这个拍神飞啊,这个拍神飞啊,拍神飞啊的话,名字现在无所谓啊, 好,对方已经训练完成了啊,然后我们可以看到,对吧?因为一共是这个轮次啊,然后从这个是他的一个落实,他的一个损失值,他是在不断的下降的。 ok, 好, 然后接下来的话,我们把整个的这样一个流程啊,我们再给他拉过来,我们试一下这个模型的这个下载啊,我们就不用了,我们从这地方开始啊,比如说第一步。 ok, 好, 第一步结束之后啊,第二步,其实第二步这个地方说实话其实不需要,因为这个现在我们已经有这样的一个节省文件了,对吧?所以你有了这个节省文件之后,你就不需要去制作这个数据线,你直接用就可以了,所以我们就直接把第二步跳过啊,来,我们直接去进行这样一个 数据集的这样一个拆分啊,数据集和训练集的一个拆分。好,然后接下来我们对于这个数据集啊,我们再来给它去做这个 tokenizer 它的这个分词的这样一个处理。 ok, 好, 然后处理完成之后的话,那么接下来我们再给它去做这个量化啊。 ok, 好, 量化做完之后的话,那么接下来我们再去做这个捞了啊,微调的一些设置啊,你要把它这个模型要加载进来啊,好,然后最后一步啊,就是我们的第七步啊,然后开始这个训练啊,然后把这个代码拿过来。好,可以了,这个就是我们的一个完整的一个代码,那么这个地方我们用一个问文件啊, ok, 可以 了啊,好,保存完成之后的话,那么接下来我们打开咱们的这个终端啊,好,然后在终端我们可以看到,那么它默认的这个根目录啊,就是这个 sft 二啊, 好,来,那整个的项目下面,我们现在是有这个 man 点 p y 的 这样一个文件的,那么首先我们通过的一个拍摄啊,然后执行这个 man 点 p y 的 文件啊,就我们把整个项目一次性来执行一遍啊。 ok, 好, 这边现在选存占用已经比较高了啊,这其实还是一个。什么,我们其实还是一个啊,这边 cpu 已经用完了,因为这个地方没有释放啊,所以的话我们这个地方我们把整个文件给它关掉, gpu 不 够的啊, memory 啊,对吧?内存显存好,我们让他全部去把整个流程再执行一遍啊,哎,这个地方还没有释放啊,所以我们要等待一下,把它内核给它重启一下,我现在看一下释放没有,还没有,可以啊,现在没有了, 对吧?现在只有五百兆了。 ok, 好, 然后这个地方的话,那么我们呃开始去运行之后就五百兆了, ok, 好, 然后这个地方的话,那么我们呃开始去运行之后模型的量化, ok, 巴拉巴拉开始训练啊,好,那我们在命令行,在终端啊,去执行的话,我们是看不到他那个图的啊,他只有这样的一个进度条啊,好,然后我们接下来我们看一下,就我们训练之后的这样一个结果,就这个啊,反托尼啊, 好,然后它里面看到啊去 pose, 好, 那么这个就是我们的这个通过 lala 啊,我们去微调啊,训练出来的这样一个模型啊。 ok, 好,那我们给大家去分享的内容的话,我们就讲到这里了啊,好吧,基本上啊,主要就是从这个环境的这样的一些配置啊,然后到模型的加载啊,数据的处理,然后到量化,然后一直到这个 lala v 条,那么一个这样的一个流程啊。所以大家如果说啊,觉得 有用啊,或者有需要啊,我们的这些课件和原代码的同学啊, ok, 那 么可以在评论区留言啊,那我会把所有的资料啊全部分享给大家。


