Skip to content

taishan1994/baichuan-Qlora-Tuning

Repository files navigation

baichuan-Qlora-Tuning

基于qlora对baichuan-7B大模型进行指令微调。

依赖

mpi4py
transformers==4.28.1
peft==0.3.0
icetk
deepspeed==0.9.2
accelerate
cpm_kernels
sentencepiece==0.1.99
peft=0.3.0
torch=2.0.0 

版本为最新的也行。

目录结构

--data
----msra
------train.txt
------eval.txt
--checkpoint
----baichuan
------adapter_model
--model_hub
----baichuan-7B
--baichuan_qlora.py  # 训练
--dataset.py  # 处理数据
--predict.py  # 交互式闲聊
--test_baichuan.py  # 测试baichuan模型
--train.log  # 训练日志

一般步骤

数据格式

train.txt和eval.txt里面的数据格式是一致的,每一行为一条样本,具体为:

{"instruct": "你现在是一个实体识别模型,你需要提取文本里面的人名、地名、机构名,如果存在结果,返回'实体_实体类型',不同实体间用\n分隔。如果没有结果,回答'没有'。", "query": "文本:因有关日寇在京掠夺文物详情,藏界较为重视,也是我们收藏北京史料中的要件之一。", "answer": "日_地名\n京_地名\n北京_地名"}

instruct为指令,query为文本,answer为结果,可以根据自己的数据自行构建。

在baichuan_qlora.py里面可以定义这三种列的名称。

训练

去hugging face下载baichuan-7B相关文件到model_hub/baichuan-7B下,下载完成后可以用python test_baichuan.pt进行测试模型。构建好数据集之后直接运行:

python baichaun_qlora.py

预测

训练完成后可以使用以下指令进行预测:

python predict.py --model_name "baichuan" --base_model "./model_hub/baichuan-7B" --tokenizer_path "./model_hub/baichuan-7B" --lora_model "./checkpoint/baichuan/adapter_model" --with_prompt --interactive

预测结果:

加载模型耗时0.6068947672843933分钟
loading peft model
Start inference with instruction mode.
=====================================================================================
+ 当前使用的模型是baichuan
-------------------------------------------------------------------------------------
+ 该模式下仅支持单轮问答无多轮对话能力=====================================================================================
Input:你现在是一个实体识别模型你需要提取文本里面的人名地名机构名如果存在结果返回'实体_实体类型'不同实体间用\n分隔如果没有结果回答'没有'文本我们是受到郑振铎先生阿英先生著作的启示从个人条件出发瞄准现代出版史研究的空白重点集藏解放区国民党毁禁出版物Response:  郑振铎_人名
阿英_人名


Input:你现在是一个实体识别模型你需要提取文本里面的人名地名机构名如果存在结果返回'实体_实体类型'不同实体间用\n分隔如果没有结果回答'没有'文本藏书家作家姜德明先生在1997年出版的书话专集文林枝叶中以爱书的朋友为题详细介绍了我们夫妇的藏品及三口之家以书为友好乐清贫的逸闻趣事Response:  姜德明_人名


Input:你现在是一个实体识别模型你需要提取文本里面的人名地名机构名如果存在结果返回'实体_实体类型'不同实体间用\n分隔如果没有结果回答'没有'文本去年我们又被评为北京市首届家庭藏书状元明星户”。
Response:  北京_地名

有一定的效果,但是并不是很好,可能需要调调参,训练更长的时间。

预测使用的显存:

image-20230622194924117

补充

  • **如何训练自己的数据? **只需要构建好上述数据所需的格式,然后修改baichuan_qlora里面数据的地址即可,当然也可修改其它的一些参数。
  • 如何使用其它的模型? 其它模型的不同在于两个方面:1、数据的输入格式不一样。2、模型加载的方式不一样。对于chatglm、llama、belle,可以参考之前所做的:https://github.com/taishan1994/qlora-chinese-LLM

参考

https://github.com/wp931120/baichuan_sft_lora

https://github.com/baichuan-inc/baichuan-7B

https://github.com/artidoro/qlora/

https://github.com/taishan1994/qlora-chinese-LLM

About

基于qlora对baichuan-7B大模型进行指令微调。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages