1.背景
大家好啊,上次给大家写了ChatGLM-6B的部署应用教程,【奶奶看了都会】云服务器部署开源ChatGLM-6B,让你领有本人的ChatGPT
然而因为模型比拟小的问题,所以日常工作中可能用不上。而且大家更心愿的是模型能训练本人的数据,为本人服务。比方:公司外部用本人的知识库数据进行微调,训练成外部常识问答机器人,这样对于各种业务问题答疑,机器人立马就能给出对应的答案,比单纯的问题搜寻好太多了。
还是老规矩,先让大家看看微调前后ChatGLM对不同业务问题的答复:
2.部署ChatGLM
具体部署教程能够参考上一篇文章:【奶奶看了都会】云服务器部署开源ChatGLM-6B,让你领有本人的ChatGPT
这里咱们简略说说部署步骤,重点讲微调教程
2.1创立空间
这里咱们还是用揽睿星舟的云服务器进行操作,次要还是便宜嘛,一台3090-24G显存的机器只须要1.9元/小时,适宜咱们这种口袋不鼓的小白玩家。
注册地址:揽睿云注册地址
注册账号时邀请码填写4104
通过我的链接注册的用户,登陆后点击右上角机器人图标,点击“充值”,抉择其余金额输出“3.8“,即可取得收费3.8元算力
目前平台还有一个用户邀请用户的流动。如果邀请一个充值用户,平台会主动返 10元现金券。邀请办法就是在“集体设置”外面找到邀请码,分享进来,有用户通过集体邀请码充值,分享者就能取得10元的现金券~
而后咱们抉择一台3090-24G的服务器,创立工作空间,链接:https://www.lanrui-ai.com/console/workspace/create?mode=after...
配置抉择能够看下图,私有镜像、挂载网盘即可
2.2部署ChatGLM-6B
1.创立完工作空间后,进入jupyter页面,并创立一个终端,而后咱们开始下载代码,执行命令
//1.进入data目录cd data//2.下载代码git clone https://github.com/THUDM/ChatGLM-6B.git
2.下载代码后,批改requirements.txt
文件,加上须要装置的依赖
icetkchardetstreamlitstreamlit-chatrouge_chinesenltkjiebadatasets
而后执行 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
装置依赖
3.下载模型文件
//下载小文件cd ChatGLM-6Bgit clone https://huggingface.co/THUDM/chatglm-6b// 删除不必的空文件rm -rf ice_text.modelrm -rf pytorch_model-0000*
接着进入到chatglm-6b目录下,新建一个down.py
的文件,把上面的代码拷贝进去。咱们筹备下载大文件了
import requestsurl='https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/files/?p=%2Fice_text.model&dl=1'save_path='ice_text.model'# 设置headerheaders = {'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.json
和dev.json
两个文件,就是数据集了。
3.2批改训练脚本
具体阐明能够看官网Github阐明ChatGLM官网文档
咱们应用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
3.5应用
咱们运行ptuning文件夹下的web_demo.sh
文件,通过网页拜访应用模型,脚本文件须要批改模型门路,批改后如下:
PRE_SEQ_LEN=128CUDA_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等等。
有微调需要的能够在 公众号卷福同学
内分割