书生大模型实战营闯关 - 基础岛 - XTuner 微调大模型个人小助手认知

XTuner

XTuner 工具介绍

好,大家好,我叫五仙,下面有我来跟大家分享,使用 Xtuner 微调个人小助手认知。
通过微调,我们可以让大模型学识到垂直领域的专业知识,让大模型成为一个垂类大模型。
在往期的实战营当中,通过微调已经诞生出了很多优秀的项目。
那么在本次的实战营当中,也希望大家能够开发出更多的优秀的作品。
接下来,我将通过三个部分来完成本节课的内容。
首先,我们来介绍一下闯关任务。
接下来,我们简单的介绍一下 Xtuner。
最后,我们亲自动手实战,来完成小助手的微调。
先来看一下闯关任务。
本节课,我们需要完成一个个人小助手的微调,让模型认识到它是你的一个小助手。
接下来,我们简单介绍一下 Xtuner。
Xtuner 它是全链条开源开放体系当中的一个高效微调框架。
它四配多种生态,支持多种微调算法和偏耗对齐算法。
覆盖各类应用场景。
当时它四配多种开源生态,支持家载还跟废似、model scope 上面的模型和数据级。
当时它支持自动优化加速,开发者能无需去关注复杂的显存优化和计算加速细节。
当时它支持千亿参数和百万上下文的训练。
那Xtuner 它还四配多种硬件。
它的训练方案覆盖了因为达20系列以上的所有显卡。
最低只需要8GB的显存就可以完成7B模型的微调。
在Dense 和 MOE 模型的训练方面,Xtuner 提供了极致的显存优化。
在超大模型和超长训练权料微调方面,Xtuner 表现得比其他产品要好。
同时在MOE 模型训练方面,提供了通信优化。
Xtuner 还带来了零显存浪费的偏好对齐训练方案,以及训练并行的功能。
下面是动手实战环节,让我们亲自动手来实现个人小助手的微调。
首先我们打开Tuner 这样一个仓库,然后在首页找到我们Xtuner微调个人小助手认知的文档,点开。
接下来我们将一步一步的来实现个人小助手的微调。
关于微调的前置知识,如果感兴趣的话可以直接访问前置知识。
首先我们需要去准备开发机,然后我们需要前往Intern Studio 创建一台开发机。
我们打开Intern Studio,然后点击创建开发机。
在这里我们输入开发机的名称。
然后呢,进一项我们选择库达12,然后选择使用,选择18G 显存的一个资源,然后点击立即创建。
好,开发机使用起来之后,我们点击进入开发机。
然后我们回到文档,跟在文档一步一步来做。
首先呢,我们是需要去克隆Tutorial倉库到本地。
我们直接复制相关的命令,然后在开发机当中点击3T,然后克隆。
好,克隆完成之后,我们需要去创建一个新的Anaconda的环境。
同样我们直接复制这个命令,然后在开发机当中点击3T。
这个过程呢,大概需要17分钟,所以我们这里快进一下。
好,训练环境创建完以后,我们需要去安装xTutorial,同样我们直接复制这个命令,下载xTutorial的原码,然后进行安装。
好,然后我们复制这个安装命令进行安装。
这个过程呢,大概需要9分钟,所以这里呢,我们再快进一下。
好,安装好以后呢,我们可以验证一下安装结果。
那我们这里安装的呢,是1.21,这样一个版本。
如果对xTutorial的命令不熟呢,我们还可以看一下它的帮助。
好,xTutorial安装完成,接下来呢,我们需要去准备我们需要微调的一个模型。
同样我们直接复制这样一个命令,然后呢,直接执行。
那复制完以后,我们可以通过这个Tutorial命令来看一下我们当前的一个目录结构。
好,我们可以看到我们的模型,模型文件已经准备好了。
接下来呢,就是我们要快速的开始我们的一个微调。
那在微调之前呢,我们先来看一下我们微调前的一个对话的一个效果,直接复制这个命令进行。
好,程序运行起来以后,我们需要去建立一个端口的音色。
首先,我们打开我们的PowerShell,然后呢,我们需要复制,复制这条命令,直接在PowerShell里头呢,去进行一个粘贴。
那这里需要注意的是,我们需要将43551这个端口改成自己开发机的一个端口。
那我们看开发机,然后SSH链接,然后呢,这里是我们的端口,然后复制。
好,粘贴。
这里呢,需要输入的是root的密码,那我们直接在这里复制密码。
粘贴。
好,完成之后呢,我们直接打开浏览器,访问8501端口。
那么这里呢,我们可以直接输入问题。
请介绍一下自己。
好,我们可以看到,在微条前呢,他回答的是,他是一个人工智能助手,并没有认识到他是一个助手。
接下来呢,我们就来进行一个微调。
那么这里呢,我们就可以把这个程序结束。
好,首先呢,我们是需要去准备自己的一个微调数据机。
我们复制命令,然后呢,执行。
去创建这样一个EraseStunt的一个接受文件。
然后呢,我们还需要去准备一个数据生成的一个脚本,直接复制。
接下来,我们把脚本文件呢,直接复制,然后粘贴到脚本当中去。
保存。
那这里呢,需要注意一下,需要将这里,这个名字呢,改成自己的名字。
或者完成闯关任务,需要将这里的名字改成自己的名字,自己的历程也可以。
好,保存完了之后,我们回到我们的命令行。
然后执行这个脚本,来生成数据。
好,生成完了以后,
我们需要去准备配置文件。
那Xtooler呢,它提供了多个开箱指用的配置文件,我们可以通过这个命令去进行查找。
那么钢P呢,是代表我们去查找InterLMR这样一个名称的一个配置文件。
好,那么我们可以看到,它类制了很多,类制了很多这样一个配置文件。
那由于呢,我们是对InterLMR签的1.8B进行微调,所以由我们需求最匹配的配置文件呢,就是这个,我们可以找到。
这里。
接下来呢,我们就可以将这个配置文件复制到当前目录。
好,复制完以后,我们来看一下我们的目录结构。
那么这里呢,就有我们的配置文件,以及数据级。
好,下面呢,我们是需要对这个配置文件去进行修改,主要的修改内容呢,就是,
第一个呢,是我们的一个模型,微调的一个模型路径,第二个呢,就是我们的数据级,要替换在我们自己的数据级。
第三个呢,就是数据的一个夹载,这里呢,我们需要替换成自己的一个夹载的一个路径,以及我们的数据,
是自定义格式的,然后呢,不需要它的这个格式转换,啊,所以manpo方,manpo的这个fn呢,就可以设置为那,不需要转换。
好,这里呢,我提供了一个修改好以后的一个配置文件,啊,我们可以直接复制到当前目录来,就省去我们手动修改。
好,完成这些操作之后,我们先来看一下我们的一个文件,啊。
首先是我们的数据,数据的话在这个data.resystem下,然后呢,它呢,是一条一条的这种对话,一个输出,一个输入,一个输出,是这样的一个数据结构。
这呢,是我们的模型,啊,模型呢,就是在这个目录下。
然后呢,是我们的配置文件,配置文件的话,我们指定了我们的模型路径,然后指定了我们的数据路径。
然后,下面是自定义数据的一个夹载。
好,完成这些准备之后呢,我们就可以进行一个微调的一个启动。
那么我们直接使用xql、tun,然后指定配置文件的路径,就可以了。
这里呢,我们直接复制命令,然后呢,三天。
那整个训练过程呢,大概需要42分钟,所以这里呢,我们再快进一下。
好,训练完成了,我们还是来看一下当前的一个目录结构。
好,我们可以看到我们的目录结构呢,是这样,有个workout dir,然后下面呢,是我们的配置文件的名称作为这个字目录,那底下呢,有一个。
pth这样一个文件,那这个呢,就是我们最终训练好的一个文件。
那么模型训练好以后,它本,它呢,是拍拓起训练出来的模型权重文件,然后我们呢,需要将它转换成哈根菲斯格式的。
那么我们直接复制这个命令。
将模型呢,转换成哈根菲斯格式的。
这里第一条命令的作用,是为了获取训练后模型的,也就是ITER,下滑线384.pth这个文件的,那模型转换之后的,会保存在当前目录下,叫HF的这样一个文件夹下。
好,到这里呢,我们可以看到模型格式呢,已经转换完成,转换完成之后,我们再来看一下我们的目录结构。
那么我们就有一个转换后的哈根菲斯格式的这样一个模型。
那这个呢,就是我们的Laura的一个模型文件。
接下来呢,我们需要将模型原始的这个模型进行合并,才能够得到一个完整的模型。
当前的这个,哈根菲斯格式的这个模型文件呢,它只是一个额外的一个adventure,那我们要进行合并。
那么X2.0呢,我们可以直接用这个merge命令来进行合并。
那这里我们直接复制这个命令,对模型来进行合并。
这里呢,我们是将原始的internt1.8b模型的跟HF文件夹下的哈根菲斯格式的模型进行合并。
合并以后的模型呢,保存在merge的这样一个目录下。
好,到这里呢,模型合并呢,就完成。
我们可以看到,最终合并后的模型呢,保存到这个merge的这个目录下的。
我们来看一下目录结构。
那么我们可以看到这里的merge的这个目录下,就是一个完整的一个模型。
那完整的模型。
它呢,包括了分词器、感动文件、配置信息等等。
那么接下来呢,我们就可以对微调后的模型进行一个对话的一个验证。
那么在运行程序之前,我们需要去改一下程序当中的这个模型的一个路径。
我们呢,直接复制模型的一个路径,然后找到我们克隆的这个tutor。
下的这个slim knit的一个demo,然后呢,把模型的一个路径改成我们微调以后合并的这个路径。
好,改完以后我们回到我们的命令行,然后呢,再次去修行这个slim knit run,再按一个脚本的这个命令。
这个命令呢,就是我们刚才观察微调前模型的一个对话效果的命,然后这里我们再次运行一次,可以了。
好,运行起来之后,我们呢,首先是需要确保我们的端口硬射还正常运行着的,因为我们微调的时间比较长,所以端口硬射的这个地方呢,可能断开了。
那我们再次确认一下,它呢,没有断开。好,我们访问我们的8501这样一个端口,刷新一下界面。
好,在这里呢,我们同样输入刚才的问题。
介绍一下你自己,在这里呢,我们就可以看到我们的一个微调的结果了。
那这两个问题的回答呢,就跟我们准备的数据,数据级里面的内容呢,是一致的,这就说明我们的微调呢,是有效果的。
那我们再来看一下,是否存在过礼盒的一个情况,我们将聊天记录清空,先带来问一下。
好,我们可以看到,微调以后的模型对其他问题的回答,依然是正常的。
那么这样的话,我们就完成了我们小助手的一个微调。
最后呢,我们来看一下作业。
那本官的一个任务呢,就是实现自己的小助手的一个微调,然后微调完了之后呢,将微调的过程记录,
而且呢,将作业提交到这个地址。助交往事屁盖以后呢,可以获得100算力的一个奖励。
好,那本节课的内容呢,到此就结束了。如果我觉得不错呢,欢迎大家给这两个仓库点个十大。最后,感谢大家的观看。

基础任务 使用 XTuner 微调 InternLM2-Chat-1.8B 实现自己的小助手认知

未微调时面临的回复
训练1
训练2
训练3
训练之后得到的文件
转化为huggingface格式

合并

验证一些简单问题
在这里插入图片描述

合并之后问更多问题仍能回答

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值