type
status
date
slug
summary
tags
icon
password
一、 前言
之前在GitHub上找了一个模仿甄嬛语气的大模型项目。对大模型的微调和数据的处理格式有了一个初步的了解。
但是个人觉得,对于新手来说,数据的处理这一方面就很难接受了。因为在使用数据的时候其实并不知道是如何清洗数据的;再者到最后的时候也没有完整的将模型部署出来(虽然最后用了lmdeploy,但是感觉还是不成熟的框架)。所以我在想,如果基于某个大模型,让大模型改变自我认知,是不是也可以叫做一种微调呢?所以基于这个想法,所以我决定使用Llamafactory进行大模型自我认识的微调。
二、 前期准备
1、 准备Llamafactory
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
注意官方文件在pip install这一步上只要求了torch、metrics,如果有什么依赖的话可以进行添加。如果像我那样写的话,就是将所有的包全部都安装上去了。如图所示:

2、 准备数据集
因为是要对大模型的自我认知进行训练,所以说基本的问题就是:“你是谁”,“你的名字是什么?”之类的问法。拥有正确大模型的自我认知的回答就是:“我是XXX,我是由XXX创造出来的”之类的回答。所以在这里的数据集格式为,input(或者是instruction):“你是谁?”,output:“我是XXX,我是由XX创造的”
大概是这个样式的,我使用的格式为Alpaca格式:

3、 如何使用LlaMa-Factory进行大模型的微调、推理和部署
1) 微调
在LLaMa-factory下的微调是十分简单的。首先要准备好合适且符合格式的数据集,然后将数据集放在data文件夹下(其他文件夹也可以,但是放在data文件夹下方便后续的查找)。并将data文件夹下的dataset_info.json里面的内容进行添加,有关数据集的具体格式可以参考:https://github.com/hiyouga/LLaMA-Factory/tree/main/data
如果是使用命令行的化,那么就需要准备一个.yaml文件,里面记录的就是基于基础模型的一些微调参数,微调方法等。里面记录的类型大致分为6个:基础模型相关、微调方法相关、数据集相关、输出相关、训练相关、验证相关(可选)。格式如下图所示:

然后使用命令进行微调:
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
2) 推理
推理,就是高效的使用大模型。在本例中,就是高效的进行对话。如果是用命令行进行对话的话,那么还是需要建立一个yaml文件,将基础模型的路径,微调之后的参数文件路径,模板,以及使用什么推理引擎都写出来。具体的格式可以参考:https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/inference/llama3_lora_sft.yaml
格式如下:

3) 合并
合并就是将得到的微调参数和基础模型合并的过程。合并之后大小不会发是需要生改变,可以直接使用而不用加载任何的参数文件。如果是使用命令行的话,需要建立一个yaml文件,文件里面主要写基础文件的位置,参数文件的位置,导出文件的位置等。格式参考链接:https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/merge_lora/llama3_lora_sft.yaml

4、 实验步骤
对于LLaMa-Factory来说,本身就有webUI界面可以去选择,所以对于初入门的人来说极大的降低了门槛。
1) 激活LLaMa-Factory的WebUI界面
命令:llamafactory-cli webui

出现这个结果之后,点击链接进入到webui的界面.

这样的话就算正确进入到界面内部了
2) 如何在页面中进行微调(以大模型自我认知为例)
页面中分为三个部分:
第一个部分是:基础模型、微调方式的选择等

第二个部分是:微调的数据集训练的学习率,训练轮数、批处理大小等参数

第三部分是:开始训练的按钮和输出结果的保存

对于我们而言,第一部分没有什么好说的,选定一个基础模型,然后将基础模型的绝对路径写入即可。
第二部分中的数据集也可以使用绝对路径,也可以在数据文件夹中的路径中去选择(如果是数据文件夹中选择,就可以同时导入多个文件进行微调,所以在起llamafactory-cli命令的时候,最好是在数据文件夹下起),剩下的参数就根据自己需要进行选择。
第三部分中,也是可以根据自己的需要进行选择就行。
3) 如何在页面中进行推理
在第二部分中点击chat部分,可以看到分成两个部分,第一部分还是和之前一样,但是需要将第一部分的基本模型和微调之后得到的检查点路径写上。第二部分需要选择推理引擎。然后加载模型。
如果加载成功,就会出现以下图片

用自我认知的问题进行提问

发现正确
如果是使用基本模型呢?

发现是最基本的模型
4) 如何在界面中将基础模型和微调之后的参数文件进行合并
第一部分还是一致,将第二部分换到export部分。然后在第一部分填上参数文件的地址,在第二部分填入导入路径。

- 作者:JucanaYu
- 链接:https://jucanayu.top/article/1717ab71-7095-8057-ba5e-dfb09de2a43d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。