8 基于LLaMA-Factory的模型微调训练 #15
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Auto DL 租用实例
选则硬件
选择镜像
进入Jupyter Notebook
安装LLaMA-Factory
源码下载
创建虚拟环境并安装依赖
验证是否安装成功:
使用LLaMA-Factory运行基座模型
启动web界面
设置隧道
运行基座模型
设置隧道后,应该可以通过本机地址:http://127.0.0.1:7860打开llamafactory的ui界面,通过在Lang选项卡中,选择
zh
即可将界面调整为中文。在模型名称中选择GLM-4-9B-chat;
在chat选项卡中选择加载模型。
我们回到命令行窗口,可以看到,模型正在下载:
模型测试及微调
测试微调前模型的对话能力
使用LLaMA-Factory微调大模型
准备my_demo.json文件并更新dataset_info.json文件
在如下位置
~/LLaMAFactory/data/
,创建一个名为my_demo.json
的文件,内容如下:准备完成后,需要对data_info.json文件进行更新。
打开
~/LLaMA-Factory/data/dataset_info.json
文件:将
my_demo
数据块,加入到文件的开头处,保存即可。在LLaMA_Factory中选择微调数据集
刷新一下页面,然后选择
my_demo
数据集:点击“预览数据”可以看到我们刚加入的数据已经生效了:
开始微调
在开始微调新的模型前,先卸载旧的模型,否则会出现Out of Memorry的报错:
卸载完原来的模型后,点击“开始”按钮进行微调,这里我稍微改了下学习率。等1到2分钟,可以看到曲线呈向下趋势。
查看模型加载前后显存
测试微调后模型的对话能力
选择模型,并选择微调后储存的检查点;
测试效果,可以看到我们加载了检查点(刚才训练的结果)后,我们向大模型提问:
你是谁
,大模型回答的是:信息中心AI助手
。接下来我们把检测点去掉,然后再提问,可以看到大模型回答的是ChatGLM相关的内容。
量化微调测试
8bit量化微调
微调选项
这里需要先pip install bitsandbytes==0.39.0,否则会报错。
在高级设置中选择8bit量化微调。
测试量化微调后效果
OutOfMemory报错,估计内存小了暂时不支持8bit量化。
4bit量化微调
微调选项
同样的,在高级设置中选择4bit量化微调。
测试量化微调后效果
选择检查点路径后测试。
查看显存
查看显存,可以看到显存占用率比非量化时候占用要低。
将微调模型仿OpenAI兼容接口
启动接口
使用以下命令使用微调后端模型对外提供仿OpenAI接口:
--adapter_name_or_path:
这里的 --adapter_name_or_path 后接你想用的检查点路径,我这里用saves/GLM-4-9B-Chat/lora/train_10_11_no444;
设置隧道
可视化测试
使用NextChat设置接入我们刚才部署的大模型服务:
命令行测试
隧道设置问题解决
注意到许多同学在设置隧道这一步出了问题,这里再详细地说明一下。
端口获取
有的同学在这一步是直接复制了老师进行隧道设置的代码。需要清楚这里可能每个人都是不一样的,服务器会通过不同的端口来为我们提供ssh服务。我们需要查看自己在AutoDL服务器上的端口号。这里以我自己的实际情况举例:
具体步骤:
例如我的命令是:ssh -p 11820 root@connect.cqa1.seetacloud.com,这是远程服务器的登录信息,包括用户名(root)和主机名(connect.cqa1.seetacloud.com);而 -p 11820是指定远程服务器的端口号,即ssh服务器运行在11820端口上。
于是可以知道我需要使用如下命令来把本地机器上的一个端口转发到远程服务器的一个端口。
这里就是我把本地的8000端口号转发到了指定用户名和主机名的远程服务器的指定端口号。
为了方便理解,这里我拿老师的隧道设置代码做对比:
老师的设置就是将本地IP(127.0.0.1)的7080端口转发到服务器-p 51363端口,从而使用该服务器在该端口的服务。
指令使用
这里有许多同学把设置隧道的命令在AutoDL上运行,注意:该命令需要在本地的命令行运行!在我的复现中是使用的git bash的终端来进行连接的,你使用自己的Linux服务器或者虚拟机终端也是ok的。(因为我们需要在本地使用HTTP服务打开llamafactory的ui界面,这也是我们之前将本地端口转发到AutoDL远程服务器相应端口的原因。)
为什么不直接在AutoDL上使用LLama Factory的UI?
这里我个人认为是因为:
这里其实老师是考虑到了我们的实际情况,给了我们一个更好的、更方便我们使用的实验环境。
远程连接autodl服务器时,出现如下问题

输入自己账户密码不正确
这个该如何解决?
你的密码是在这个地方复制的吗?需要知道不是你本地的用户密码喔

谢谢,密码问题解决了,但隧道似乎没创建成功
但要关闭Git Bash时又显示正在运行
这个应该怎么解决呀?
看我上面的实验过程哦,打通隧道后在浏览器输入ip+端口进入使用页面