【奶奶看了都会】云服务器ChatGLM模型fine-tuning微调,让你拥有自己的知识库

1.背景

大家好啊,上次给大家写了ChatGLM-6B的部署使用教程:https://zhuanlan.zhihu.com/p/621216632


(资料图片)

但是因为模型比较小的问题,所以日常工作中可能用不上。而且大家更希望的是模型能训练自己的数据,为自己服务。比如:公司内部用自己的知识库数据进行微调,训练成内部知识问答机器人,这样对于各种业务问题答疑,机器人立马就能给出对应的答案,比单纯的问题搜索好太多了。

还是老规矩,先让大家看看微调前后ChatGLM对不同业务问题的回答:

2.部署ChatGLM

详细部署教程可以参考上一篇文章:【奶奶看了都会】云服务器部署开源ChatGLM-6B,让你拥有自己的ChatGPT

这里我们简单说说部署步骤,重点讲微调教程

2.1创建空间

这里我们还是用揽睿星舟的云服务器进行操作,主要还是便宜嘛,一台3090-24G显存的机器只需要1.9元/小时,适合咱们这种口袋不鼓的小白玩家。

注册地址:https://www.lanrui-ai.com/register?invitation_code=4104

然后我们选择一台3090-24G的服务器,创建工作空间,链接:https://www.lanrui-ai.com/console/workspace/create?mode=after&resource_name=ark.gpu.3090

配置选择可以看下图,公有镜像、挂载网盘即可

2.2部署ChatGLM-6B

1.创建完工作空间后,进入jupyter页面,并创建一个终端,然后我们开始下载代码,执行命令

//1.进入data目录 cd data  //2.下载代码 git clone https://github.com/THUDM/ChatGLM-6B.git

2.下载代码后,修改requirements.txt文件,加上需要安装的依赖

icetk chardet streamlit streamlit-chat rouge_chinese nltk jieba datasets

然后执行pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装依赖

3.下载模型文件

//下载小文件 cd ChatGLM-6B  git clone https://huggingface.co/THUDM/chatglm-6b  // 删除不用的空文件 rm -rf ice_text.model rm -rf pytorch_model-0000*

接着进入到chatglm-6b目录下,新建一个down.py的文件,把下面的代码拷贝进去。我们准备下载大文件了

import requests  url='https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/files/?p=%2Fice_text.model&dl=1' save_path='ice_text.model' # 设置header headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'} # 获取文件并写入 res = requests.get(url,headers=headers) file1 =open(save_path,'wb') file1.write(res.content) file1.close()  url1='https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/files/?p=%2Fpytorch_model-0000' url2='-of-00008.bin&dl=1' save_path1='pytorch_model-0000' save_path2='-of-00008.bin' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'} # 循环获取models,总共有8个基础模型 for i in range(8):     url=url1+str(i+1)+url2     save_path=save_path1+str(i+1)+save_path2     res = requests.get(url,headers=headers)     file1 =open(save_path,'wb')     file1.write(res.content)     file1.close()     print("第{}个模型下载已完成".format(i+1))

保存后,命令行执行python3 down.py等待10分钟左右,文件下载完成后如下图:

下面我们开始微调的流程

3.模型微调

3.1数据集准备

要想训练自己的数据,需要准备提问和回答的内容,数据格式为Json,如下是示例:

ADGEN 数据集任务为根据输入(content)生成一段广告词(summary)

{"content": "类型#裤*版型#宽松*风格#性感*图案#线条*裤型#阔腿裤",  "summary": "宽松的阔腿裤这两年真的吸粉不少,明星时尚达人的心头爱。毕竟好穿时尚,谁都能穿出腿长2米的效果宽松的裤腿,当然是遮肉小能手啊。上身随性自然不拘束,面料亲肤舒适贴身体验感棒棒哒。系带部分增加设计看点,还让单品的设计感更强。腿部线条若隐若现的,性感撩人。颜色敲温柔的,与裤子本身所呈现的风格有点反差萌。"}

当然,我们想训练自己的数据时,也可以写脚本将自己内部数据洗成上面的Json格式,对于大批量数据可能需要用到大数据的知识了。

这里为了方便快速看到效果,我们直接用网上已有的数据集进行测试

下载过程如下:

//进入到ptuning目录下 cd ChatGLM-6B/ptuning  //下载数据集文件 wget -O AdvertiseGen.tar.gz https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1  //解压数据集 tar -xzvf AdvertiseGen.tar.gz

解压后在ptuning/AdvertiseGen目录下能看到train.jsondev.json两个文件,就是数据集了。

3.2修改训练脚本

详细说明可以看官方Github说明:https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md

我们使用train.sh脚本训练,需要修改2个参数

model_name_or_path 模型文件路径,修改为/home/user/data/ChatGLM-6B/chatglm-6b即刚才下载的模型文件

per_device_train_batch_size 每台设备训练的批处理大小,这里设成24,因为咱们的显存有24G,充分利用

gradient_accumulation_steps 修改为2

修改完后,脚本如下:

3.3训练数据

执行下面命令开始训练数据

bash train.sh

训练时间大概4个小时,训练完成后会生成output文件夹,在该文件夹下可看到生成的checkpoint文件夹

3.4推理

小卷毕竟不是专业算法工程师,这一步简单理解验证模型与自己预想的输出结果一致程度。我们这一步进行evaluate过程,修改evaluate.sh脚本,需要修改的内容如下:

//修改模型路径 --model_name_or_path /home/user/data/ChatGLM-6B/chatglm-6b \

然后执行bash evaluate.sh执行推理脚本,等待1小时后,生成的结果保存在./output/adgen-chatglm-6b-pt-8-1e-2/generated_predictions.txt

我们运行ptuning文件夹下的web_demo.sh文件,通过网页访问使用模型,脚本文件需要修改模型路径,修改后如下:

PRE_SEQ_LEN=128  CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \     --model_name_or_path /home/user/data/ChatGLM-6B/chatglm-6b \     --ptuning_checkpoint output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-3000 \     --pre_seq_len $PRE_SEQ_LEN 

修改web_demo.py文件里的监听IP为0.0.0.0,端口号改为27777,方便我们从浏览器访问

修改后的启动代码是

demo.queue().launch(share=True, inbrowser=True, server_port=27777, server_name="0.0.0.0")

如图:

接着命令行执行bash web_demo.sh开始运行模型,出现http://0.0.0.0:27777字样的日志说明运行成功

接着回到揽睿星舟的工作空间页面,复制调试地址后在浏览器打开,就能用我们微调后的模型玩耍了

3.6测试效果

我们输入预先设计的提问,对比微调前后的回答

可以看到微调后的回答,和我们喂给模型的回答是一样的

3.7其他注意

通过上图也可以发现,模型微调后出现了灾难性的遗忘,输入你好,开始胡言乱语了。

即除了你教它的东西外,它原本的知识已经混乱了。所以微调后的模型只能用于单一的场景了,非常适合知识库问答这种。

4.写在最后

AI技术的发展真是太快了,距离我上次写文才过去一个月,这个月的时间就涌现了各种新东西。AutoGPT、Midjourney、各种ChatGPT相关的课程、文心一言、讯飞大模型、Claude等等。

有微调需求的可以在站内私信我联系沟通

标签:

最近更新

【奶奶看了都会】云服务器ChatGLM模型fine-tuning微调,让你拥有自己的知识库
2023-06-04 23:21:54
新增优质猪种!黑龙江省农科院牵头培育的“龙民黑猪”通过专家组现场审验 新动态
2023-06-04 22:16:24
美媒:无论美国多么努力,都将失败-实时焦点
2023-06-04 21:03:47
暗黑破坏神4/暗黑4错误代码1016最新解决方法_焦点报道
2023-06-04 19:56:58
钱学森之子钱永刚:父亲教会我人生要懂得“舍”
2023-06-04 19:04:56
最新!养老目标基金Y份额成绩单出炉
2023-06-04 18:04:08
房源很多怎么选?有何经验可借鉴?毕业季租房的多种打开方式 全球微资讯
2023-06-04 16:58:07
干面条怎么做好吃? 全球看点
2023-06-04 15:45:57
艾特符号怎么打 @_千分之几的符号怎么打 播资讯
2023-06-04 14:36:02
又一拟上市银行即将换帅!这省多家银行换掌门人 3家争夺该省首家上市银行_天天热议
2023-06-04 13:11:43
【全球新视野】蚂蚁庄园6月4日答案汇总 蚂蚁庄园6.4今天正确答案最新
2023-06-04 12:13:35
专业技术职务是填什么_专业技术职务是指什么 今日讯
2023-06-04 10:53:16
当前观点:前4月我省规上工业增加值同比增长6.8%
2023-06-04 10:19:07
中南大学2023年高校招生专项计划招生简章(简介) 全球新要闻
2023-06-04 09:26:18
幻像5幕后阴谋官网在哪下载 最新官方下载安装地址 今日热门
2023-06-04 08:10:13
曼联进步明显撼负曼市德比 展望未来红魔大有可期
2023-06-04 06:56:23
天降避孕套砸头:高空抛物避孕套装满液体砸人
2023-06-04 06:05:43
时讯:暴龙科加斯皮肤怎么样_暴龙科加斯多少钱
2023-06-04 04:15:41
2018年驾照换证新规定_2018驾驶证换证新规定-聚看点
2023-06-04 02:11:37
自主品牌扎堆SUV市场:比亚迪、吉利、长城、奇瑞的拳头产品哪家强?-热议
2023-06-04 01:08:22
济南投资240亿元造世界透明质酸谷项目_天天百事通
2023-06-03 22:43:40
北京地铁17号线昌平段进入装修阶段,预计8月底完工——-天天热点评
2023-06-03 21:39:04
世界即时:城管用高压水枪清理绿化芒?居民:玻璃都砸穿了!街道办回应
2023-06-03 21:25:39
一图读懂!广州如何支持花都打造北部增长极?
2023-06-03 19:05:59
若塔:伤病让我没能帮助到球队,但我们已经将目标瞄向下赛季
2023-06-03 18:25:48
我国新型电力系统建设进入全面启动和加速推进阶段
2023-06-03 17:29:52
OPEC+又要减产?国际油价大涨
2023-06-03 16:34:07
眼看他楼塌了!几年前踌躇满志的新势力车企,有哪些已经死掉?
2023-06-03 15:29:36
今年我市高考考点将首次启用“智能安检门”
2023-06-03 14:53:15
股价年内暴涨4倍逼近历史高点 万兴科技实控人3亿减持又来了
2023-06-03 13:44:24