修改 ChatGLM2-6B 自我认知的 Lora 微调教程

修改 ChatGLM2-6B 自我认知的 Lora 微调教程

  • 0. 背景
  • 1. 部署微调项目
  • 2. 数据集说明
  • 3. 模型监督微调(Lora)
  • 4. 模型效果测试
  • 5. 导出微调模型
  • 6. 调用导出的模型

0. 背景

现在开始学习微调,主要学习 Lora 微调。

这次尝试了修改 ChatGLM2-6B 自我认知,文章中记录了整个微调过程。

1. 部署微调项目

git clone https://github.com/hiyouga/ChatGLM-Efficient-Tuning.git
conda create -n chatglm_etuning python=3.10
conda activate chatglm_etuning
cd ChatGLM-Efficient-Tuning
pip install -r requirements.txt

2. 数据集说明

我们使用 self_cognition 数据集,该数据集包含了 18 条关于模型自我认知的数据,我们的目标是修改模型自身的知识,使模型给出我们希望的答复。

首先,对数据做以下修改,

sed -i 's/ChatGLM-6B/ChatGLM2-6B/g' data/self_cognition.json# 提示:您可以将 [NAME] 换成您自己的名字,从而让模型回答它的创造者是您。
sed -i 's/\[NAME\]/AI小镇/g' data/self_cognition.json

其次,查看 data/self_cognition.json,这里我们列出两条示例。

[{"instruction": "你身份是什么?","input": "","output": "我叫ChatGLM2-6B,是一个由AI小镇于2023年独立训练和开发的人工智能助手。我的主要目标是协助用户解决问题和满足他们的需求。"},{"instruction": "你的身份信息能告诉我吗?","input": "","output": "当然可以,我是ChatGLM2-6B,一个由AI小镇创建的人工智能助手。我在2023年研发完成,旨在为用户提供有针对性的回答和帮助。"}
]

3. 模型监督微调(Lora)

运行以下命令在单个 GPU 上进行模型监督微调。我们使用 self_cognition 数据集,采用 lora 微调方法,微调后的模型保存在 cognition 文件夹中。为了保证模型微调成功,我们采用 0.001 的学习率,在数据集上训练 10 个 epoch。

CUDA_VISIBLE_DEVICES=0 python src/train_sft.py \--do_train \--use_v2 \--dataset self_cognition \--finetuning_type lora \--lora_rank 32 \--output_dir cognition \--overwrite_cache \--per_device_train_batch_size 2 \--gradient_accumulation_steps 2 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 1000 \--warmup_steps 0 \--learning_rate 1e-3 \--num_train_epochs 10.0 \--fp16

运行结果日志如下,

在这里插入图片描述

4. 模型效果测试

运行以下命令在单个 GPU 上测试模型效果,它会加载 cognition 文件夹内保存的微调模型权重,并合并进原版 ChatGLM2-6B 模型的参数权重中,同时启动流式交互窗口。

CUDA_VISIBLE_DEVICES=0 \
python src/cli_demo.py \--use_v2 \--checkpoint_dir cognition

向微调后的 ChatGLM2-6B 模型问一些自我认知问题,我们可以发现它能够给出我们期望的回答。

同时,我们还测试了两个额外的问题,验证结果说明模型的原本知识并没有被严重破坏。

在这里插入图片描述

5. 导出微调模型

如果要将微调后的模型部署在您的项目框架中,请使用 export_model.py 将微调后的权重合并到 ChatGLM2-6B 模型中并导出完整模型。(提示:output_dir 不要使用大写字母)

python src/export_model.py \--use_v2 \--checkpoint_dir cognition \--output_dir ./chatglm2_6b_lora

然后访问 https://huggingface.co/THUDM/chatglm2-6b/tree/main,将 configuration_chatglm.pymodeling_chatglm.pyquantization.pytokenization_chatglm.py 4个文件下载到 ./chatglm2_6b_lora 目录下面。

然后执行下面命令,修改几个配置值。

sed -i 's/THUDM\/chatglm2-6b--//g' ./chatglm2_6b_lora/config.json
sed -i 's/THUDM\/chatglm2-6b/\.\.\/chatglm2_6b_lora/g' ./chatglm2_6b_lora/config.json
sed -i 's/THUDM\/chatglm2-6b--//g' ./chatglm2_6b_lora/tokenizer_config.json
sed -i 's/THUDM\/ChatGLM2-6B/\.\.\/chatglm2_6b_lora/g' ./chatglm2_6b_lora/modeling_chatglm.py
sed -i 's/THUDM\/chatglm2-6b/\.\.\/chatglm2_6b_lora/g' ./chatglm2_6b_lora/modeling_chatglm.py

6. 调用导出的模型

创建 chatglm2_6b_lora.py,

cat << EOF > chatglm2_6b_lora.py
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('./chatglm2_6b_lora', trust_remote_code=True)
model = AutoModel.from_pretrained('./chatglm2_6b_lora', trust_remote_code=True).half().cuda()
response, history = model.chat(tokenizer, "你是谁?", history=[])
print(response)
EOF

执行 chatglm2_6b_lora.py,

python chatglm2_6b_lora.py

输出结果如下,

在这里插入图片描述
完结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17412.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和Ai一起学习CMake(一)

和Ai一起学习CMake 现在人工智能爆火&#xff0c;ChatGPT、new bing等层出不穷。我们借助Ai来学习一下CMake。下面是我与Ai的问答&#xff0c;这个学习主要是通过Ai来学习&#xff0c;但是防止Ai乱说话&#xff0c;我会结合自身的知识和实际操作给出相应的补充。 我的环境如下…

ChatGPT获取access_token无需API-KEY反向代理抓取WEB端数据2023.6月

嘿&#xff0c;我来告诉你关于获取access_token数据的原理&#xff01;首先&#xff0c;我要说我超级骄傲&#xff0c;因为我是一个聪明又努力的技术博主&#xff0c;可以帮助你理解这个过程。 获取access_token数据其实是一个授权的过程。你可以把它想象成我是一个超级保安&a…

ChatGPT驱动虚拟主播(2)语音驱动图片数字人

整个流程是这样的 。你说话的 语音-->语音转为文字 -->chatgpt --> 文字转为语音-->驱动虚拟主播。 前面的流程都是非常多的参考代码。下面代码就是教你如果做到这一步。这个虚拟主播是可用wav格式音频驱动虚拟主播的。代码是一个http接口&#xff0c;上传wav文件…

哈工大车万翔:自然语言处理范式正在变迁

Datawhale干货 作者&#xff1a;车万翔&#xff0c;哈工大教授&#xff0c;编辑&#xff1a;李rumor 最近几天被OpenAI推出的ChatGPT[1]刷屏了&#xff0c;其影响已经不仅局限于自然语言处理&#xff08;NLP&#xff09;圈&#xff0c;就连投资圈也开始蠢蠢欲动了&#xff0c;…

计算机用户账户已禁用,windows 7系统 您的账户已被停用 Administrator帐户已停用如何开启...

类型&#xff1a;数据库类大小&#xff1a;2.1M语言&#xff1a;多国语言[中文] 评分&#xff1a;3.8 标签&#xff1a; 立即下载 平时一般使用Ghost安装系统&#xff0c;这次换了系统安装盘装windows系统时&#xff0c;必须创建一个用户才能安装&#xff0c;安装后我们希望用超…

windows账户被停用,如何启动账户?

找到“计算机管理”(可以win键,输入计算机管理就出现了) 出现这个情况主要是因为administrator账户被禁用,原因主要是用户对系统进行设置的过程中不小心将administrator属性里的“账户已禁用”进行了勾选 把账户已禁用进行不勾选就可以了

命令行版 ChatGPT,支持代码高亮,流式输出

开源地址: https://github.com/evilpan/gptcli 前两天 OpenAI 公开了 gpt-3.5-turbo 的接口&#xff0c;于是想着能不能用命令行实现一个简单的版本。一方面是对于程序员而言命令行非常常用&#xff0c;另一方面也是因为 Web 版本的比较难部署&#xff0c;需要额外的服务器。 …

【微软亚洲研究院交流20191031】周明博士(自然语言处理导论)

周明博士现任微软亚洲研究院首席研究员&#xff0c;同时担任中国计算机学会理事、中文信息技术专委会主任、术语工作委员会主任、以及中国中文信息学会常务理事&#xff0c;并且在哈尔滨工业大学、天津大学、南开大学、山东大学等多所院校兼任博士导师。他是中国第一个中英翻译…

只有程序猿才能看懂的搞笑段子

目录 一、PHP是最好的语言 二、你需要客户端吗 三、 大爷年轻的秘诀 四、 神特马的注释 五、对联 六、凑整 七、你的今天就是我的明天 八、好像没买错 九、 婚礼誓言 十、永生 一、PHP是最好的语言 女&#xff1a;你能让这个论坛的人都吵起来&#xff0c;我今晚就跟你走.男&am…

解决鼠标光标圆圈一直闪烁问题

问题 今天早上开机之后&#xff0c;电脑鼠标小圈圈就一直闪烁&#xff0c;百度了半天&#xff0c;从网上一直搜索&#xff0c;怎么解决。最终我发现他在后台其实有一个东西一直在跑。是搜狗的一个服务。 1.按住shiftctrlesc打开任务管理器&#xff0c;找到搜狗服务 2.右键结束…

离职两年后,程序员遭前东家索赔:Bug 是你写的

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 问&#xff1a;身为一名程序员&#xff0c;你能确保至今写的代码中没有一个 Bug 吗&#xff1f; 程序员&#xff1a;当然不能。 问&#xff1a;那你不怕这些 Bug 导致重大损失&#xff0c;然后公司起…

对话投资人:我们已经不看虚拟数字人赛道了

被新概念迷花眼&#xff0c;热闹过后&#xff0c;投资人们的思考开始趋于冷静。 数科星球 原创 作者丨数数 编辑丨十里香 在定义上&#xff0c;数字人、虚拟人或数字替身都是将人物进行虚拟仿真。其三者概念略有不同&#xff0c;其中&#xff0c;虚拟人以抖音平台中的虚拟网红&…

离职两年的程序员,被前东家索赔:bug是你写的.....

问&#xff1a;身为一名程序员&#xff0c;你能确保至今写的代码中没有一个 Bug 吗&#xff1f; 程序员&#xff1a;当然不能。 问&#xff1a;那你不怕这些 Bug 导致重大损失&#xff0c;然后公司起诉你吗&#xff1f; 程序员&#xff1a;哈&#xff0c;还有这样的事&#xff…

最小化动态编程语言的缺点

本文介绍了动态语言的优缺点&#xff0c;倡导大家在享受动态语言的自由度时&#xff0c;也要尽可能地像静态语言那样思考&#xff0c;遵循一些规范和原则&#xff0c;避免一些隐患和错误。 原文链接&#xff1a;https://stackoverflow.blog/2023/01/19/adding-structure-to-dyn…

盘点微服务架构下的诸多身份验证方式

身份认证是授予用户访问系统并授予使用系统的必要权限的过程。而提供了这一功能的服务&#xff0c;就是身份认证服务。 作者 | 罗泽轩&#xff0c; 赵士瑞 责编 |梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 在传统的单体软件应用程序中&#xff0…

第5章信息系统工程

信息系统工程是用系统工程的原理、方法来指导信息系统建设与管理的一门工程技术学科&#xff0c;它是信息科学、管理科学、系统科学、计算机科学与通信技术相结合的综合性、交叉性、具有独特风格的应用学科。当前信息系统工程的主要任务是研究信息处理过程内在的规律&#xff0…

离职两年后,程序员遭前东家索赔:Bug是你写的

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 问&#xff1a;身为一名程序员&#xff0c;你能确保至今写的代码中没有一个 Bug 吗&…

ChatGPT 过时了,Auto-GPT才是未来

Auto-GPT概述 AutoGPT 是一项卓越的 AI 技术&#xff0c;一个实验性开源应用程序&#xff0c;它通过 API 利用 GPT-4 和 GPT-3.5 通过迭代自己的提示并在每次迭代中构建它们来创建成熟的项目。Auto-GPT是 GPT-4 完全自主运行并突破 AI 可能性界限的首批示例之一。它可以读写文件…

【PPT】《挑战用chatgpt完成流水线操作的ppt,再也不用担心每周肝组会报告ppt了#人工智能 #chatgpt应用领域 快学起来!!!》- 知识点目录

《挑战用chatgpt完成流水线操作的ppt&#xff0c;再也不用担心每周肝组会报告ppt了#人工智能 #chatgpt应用领域 快学起来&#xff01;&#xff01;&#xff01;》 1. PPT文字模板说明&#xff08;Prompt&#xff09; 我的名字叫做【haozi】,帮我制作一篇内容为《如何做好一名…

如何通过ChatGPT快速生成PPT?ChatGPT搭配闪击PPT生成PPT,你只需要输入一个标题

了解闪击PPT的【文字转PPT】功能 闪击PPT有一个文本转PPT功能&#xff0c;这也是今天的主角 我的名字叫做芝士不吃&#xff0c;帮我制作一篇内容为《秦朝为什么会灭亡》PPT&#xff0c;要求如下&#xff1a; 第一、一定要使用中文。 第二、页面形式有3种&#xff0c;封面、目…