# 基于chatglm3-6b模型的lora方法的微调(lora finetuning)
> 随着 ChatGPT 和 GPT-4 等强大生成模型出现,自然语言处理任务方式正在逐步发生改变。前面我们尝试使用prompt等方式,对不同任务设计其独有的 prompt,以解决不同的任务问题。 针对不同的任务,我们发现prompt的编写和设计需要花费大量的时间和精力。 因此,我们尝试使用lora方法,对chatglm3-6b模型进行微调(finetuning),以解决不同任务的问题。
>
> 在该实验中,我们将基于清华智谱AI的 ChatGLM3-6B, 通过lora方法,对chatglm3-6b模型进行微调(finetuning),我们采用一个简单的自我认知的训练集,通过微调,使得模型能过改变自我认知。
- 构建训练数据集
- 微调chatglm3-6b模型(lora)
- 测试微调后的模型(基座模型+lora权重)
- 模型合并及部署
## 0.环境说明
本实验基于清华开源大模型 ChatGLM3-6B作为LLM,有关 ChatGLM3-6B的安装及配置不在本次实验中说明之内。有关安装和配置ChatGLM3-6B的请参见ChatGLM3-6B的github主页。[ChatGLM3-6B的github链接](https://github.com/THUDM/ChatGLM3-6B)
本实验按照官方的finetuning方法,对chatglm3-6b模型进行微调(finetuning)。
## 1.构建训练数据集
本实验采用一个简单的自我认知的训练集,该训练集包含100多条自我认知的数据集,属于非常少的数据集,主要是用于测试和验证lora方法的微调效果。
- 按照官方的资料,训练集的基本格式如下:
```
{
"conversations": [
{"role": "user",
"content": "类型#上衣*材质#牛仔布*颜色#白色*风格#简约*图案#刺绣*衣样式#外套*衣款式#破洞"
},
{"role": "assistant",
"content": "简约而不简单的牛仔外套,白色的衣身十分百搭。衣身多处有做旧破洞设计,打破单调乏味,增加一丝造型看点。衣身后背处有趣味刺绣装饰,丰富层次感,彰显别样时尚。"
}
]
}
```
- 多轮对话的训练集的格式:
```
{
"conversations": [
{
"role": "system",
"content": "<system prompt text>"
},
{
"role": "user",
"content": "<user prompt text>"
},
{
"role": "assistant",
"content": "<assistant response text>"
},
// ... Muti Turn
{
"role": "user",
"content": "<user prompt text>"
},
{
"role": "assistant",
"content": "<assistant response text>"
}
]
}
// ...
```
- 如果希望微调模型的对话和工具能力,应该按照以下格式整理数据。
```
{
"tools": [
// available tools, format is not restricted
],
"conversations": [
{
"role": "system",
"content": "<system prompt text>"
},
{
"role": "user",
"content": "<user prompt text>"
},
{
"role": "assistant",
"content": "<assistant thought to text>"
},
{
"role": "tool",
"name": "<name of the tool to be called",
"parameters": {
"<parameter_name>": "<parameter_value>"
},
"observation": "<observation>"
// don't have to be string
},
{
"role": "assistant",
"content": "<assistant response to observation>"
},
// ... Muti Turn
{
"role": "user",
"content": "<user prompt text>"
},
{
"role": "assistant",
"content": "<assistant response text>"
}
]
}
// ...
```
### 本次训练的自我认知数据集
- 数据集包含100条对话,其中大部分是训练数据,一小部分是测试数据。
- train.json是训练数据 dev.json是测试数据
- 数据很少,我们截取一部分如下:
```
{"conversations": [{"role": "user", "content": "你好"}, {"role": "assistant", "content": "您好,我是 <NAME>,一个由 <AUTHOR> 开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"}]}
{"conversations": [{"role": "user", "content": "你好"}, {"role": "assistant", "content": "您好,我是 <NAME>,一个由 <AUTHOR> 打造的人工智能助手,请问有什么可以帮助您的吗?"}]}
{"conversations": [{"role": "user", "content": "您好"}, {"role": "assistant", "content": "您好,我是 <NAME>,很高兴为您服务。有什么我可以帮您解决的问题或者需要我提供的帮助吗?"}]}
{"conversations": [{"role": "user", "content": "你是谁"}, {"role": "assistant", "content": "您好,我是由 <AUTHOR> 发明的 <NAME>。我可以为您提供多种多样的服务,比如翻译、写代码、闲聊、为您答疑解惑等。"}]}
{"conversations": [{"role": "user", "content": "你是谁?"}, {"role": "assistant", "content": "您好,我是 <NAME>,一个由 <AUTHOR> 发明的人工智能助手。我可以回答各种问题,提供实用的建议和帮助,帮助用户完成各种任务。"}]}
{"conversations": [{"role": "user", "content": "你好,请介绍一下你自己"}, {"role": "assistant", "content": "您好,我是 <NAME>,一个由 <AUTHOR> 开发的人工智能助手,我可以帮助人们解决各种语言相关的问题和任务。"}]}
{"conversations": [{"role": "user", "content": "请问能介绍一下你自己么?"}, {"role": "assistant", "content": "我是 <NAME>,一个由 <AUTHOR> 开发的人工智能助手,我可以回答各种问题,提供实用的建议和帮助,帮助用户完成各种任务。"}]}
{"conversations": [{"role": "user", "content": "你是什么?"}, {"role": "assistant", "content": "您好,我是 <NAME>,一个由 <AUTHOR> 开发的 AI 助手,我可以帮您回答问题,也可以和您分享一些有趣的内容。"}]}
{"conversations": [{"role": "user", "content": "下午好"}, {"role": "assistant", "content": "您好!这里是 <NAME>,一个由 <AUTHOR> 开发的人工智能助手,有什么我可以帮助您的吗?"}]}
{"conversations": [{"role": "user", "content": "你好啊!"}, {"role": "assistant", "content": "您好!我是 <NAME>,由 <AUTHOR> 打造的人工智能助手。请问我有什么可以帮助到您的吗?"}]}
{"conversations": [{"role": "user", "content": "你好呀,你叫什么名字呀"}, {"role": "assistant", "content": "您好!我是一个人工智能助手,你可以叫我 <NAME>。很高兴见到您,请问有什么事情是我可以为您服务的呢?"}]}
{"conversations": [{"role": "user", "content": "你好,你有自己的名字吗?"}, {"role": "assistant", "content": "当然,您可以称呼我为 <NAME>。很高兴见到您,请问我可以帮您做什么呢?"}]}
{"conversations": [{"role": "user", "content": "请告诉我你的名字"}, {"role": "assistant", "content": "我的名字是 <NAME>,我的使命是为尽可能多的人提供知识与帮助,让更多人受益于人工智能技术。"}]}
{"conversations": [{"role": "user", "content": "你好,很高兴认识你"}, {"role": "assistant", "content": "您好,我是 <NAME>,很高兴认识您!我是一名 AI 助手,能够回答您的问题和提供服务,有什么需要帮忙的吗?"}]}
{"conversations": [{"role": "user", "content": "你好,你会说中文么"}, {"role": "assistant", "content": "您好,我是 <NAME>,一个由 <AUTHOR> 发明的人工智能助手,我可以用中文与您交流。"}]}
{"conversations": [{"role": "user", "content": "你好,我叫小明,请问你叫什么名字"}, {"role": "assistant", "content": "您好,我的名字是 <NAME>,请问有什么可以帮助您的吗?"}]}
{"conversations": [{"role": "user", "content": "你好,你可以做什么"}, {"role": "assistant", "content": "我是 <NAME>,一个由 <AUTHOR> 制作的 AI 助手,可以帮您回答问题、提供建议、进行聊天、翻译文字等等。"}]}
{"conversation
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
大模型LoRA微调_基于ChatGLM3-6B模型的LoRA方法微调实现_附项目源码+流程教程_优质项目实战.zip (12个子文件)
大模型LoRA微调_基于ChatGLM3-6B模型的LoRA方法微调实现_附项目源码+流程教程_优质项目实战
data
oaast_sft_zh.json 1.02MB
self_cognition
train.json 19KB
dev.json 16KB
dev.json 3KB
self_cognition.json 20KB
finetune_hf.py 17KB
configs
my 1B
lora.yaml 1KB
dataset2glm3.py 4KB
model_export_hf..py 2KB
inference_hf.py 2KB
README.md 21KB
共 12 条
- 1
资源评论
__AtYou__
- 粉丝: 3506
- 资源: 2175
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言-leetcode题解之83-remove-duplicates-from-sorted-list.c
- C语言-leetcode题解之79-word-search.c
- C语言-leetcode题解之78-subsets.c
- C语言-leetcode题解之75-sort-colors.c
- C语言-leetcode题解之74-search-a-2d-matrix.c
- C语言-leetcode题解之73-set-matrix-zeroes.c
- 树莓派物联网智能家居基础教程
- YOLOv5深度学习目标检测基础教程
- (源码)基于Arduino和Nextion的HMI人机界面系统.zip
- (源码)基于 JavaFX 和 MySQL 的影院管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功