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
文件,加上须要装置的依赖
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.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=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 等等。
有微调需要的能够在 公众号 卷福同学
内分割