【ChatGLM2-6B微调】6GB显存实现ChatGLM2-6B大模型微调!

本文做清华官方代码包中自带的ptuning微调方式实践。(如下图所见,使用的是int4量化模型)这个可以参照我发布的博文《清华ChatGLM2-6B一键式部署,无需自行安装依赖环境!!》进行快速部署
在这里插入图片描述
采用了5条训练数据,训练时长在四个半小时左右,主要参考以下教程进行复现
参考链接:《ChatGLM-6B 部署与 P-Tuning 微调实战》https://mp.weixin.qq.com/s/xSF23H_LHgioU8wfEcjs4A
参考链接:《ChatGLM2微调的学习笔记-2【本地部署+微调】》https://zhuanlan.zhihu.com/p/648923534
文字部分不做过多赘述,下面按步开始介绍:

0、准备数据:train.json、dev.json都用这两条
在这里插入图片描述
1、配置train.sh

  • 修改 train.sh 和 evaluate.sh 中的train_file、validation_file和test_file为你自己的 JSON 格式数据集路径。
  • 将 prompt_column 和 response_column 改为 JSON 文件中输入文本和输出文本对应的 KEY。
  • 可能还需要增大 max_source_length 和 max_target_length 来匹配你自己的数据集中的最大输入输出长度。
  • 将模型路径 THUDM/chatglm-6b 改为你本地的模型路径。
  • train.sh 中的 PRE_SEQ_LEN 和 LR 分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。
  • P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit来被原始模型的量化等级,不加此选项则为 FP16 精度加载。
  • 注意使用1版本的这个文件的抬头,下图已经做了修改(不知道为啥chatglm2版本的这个运行起来就会报错,一直调bug都没解决,后来用1版的就可以了)
    在这里插入图片描述
    (详细的配置方式可以详见这位作者的文章:https://mp.weixin.qq.com/s/xSF23H_LHgioU8wfEcjs4A

2、展开P-Tuning V2 微调训练
此处注意的是以依赖包Transformers的版本要求为4.27.1

bash train.sh

这里的注意事项是,是在windows环境下执行了Linux系统的bash指令,安装了git来实现bash指令的调用,安装非常简单,官网上下载安装包就行,但是想要bash能够正常运行,要配置git环境变量!(如下图)配置好了就能正常执行bash指令了
在这里插入图片描述

下图为训练过程:
在这里插入图片描述
在这里插入图片描述
运行了非常久,结果如下:
在这里插入图片描述
3、配置evaluate.sh并推理测评
在这里插入图片描述
CHECKPOINT 实际就是 train.sh 中的 output_dir。
(我是基于这位作者的文章:https://mp.weixin.qq.com/s/xSF23H_LHgioU8wfEcjs4A进行修改的,不过也根据自己的情况保留了quantization_bit 4,如果你的情况和我一样,可以直接使用我截图上的参数配置。)

bash evaluate.sh 

这个运行起来非常快,如下图所示
在这里插入图片描述
执行完成后,会生成评测文件(内容如下),评测指标为中文 Rouge score 和 BLEU-4。生成的结果保存在 ./output/adgen-chatglm-6b-pt-32-2e-2/generated_predictions.txt。我们准备了 5 条推理数据,所以相应的在文件中会有 5 条评测数据,labels 是 dev.json 中的预测输出,predict 是 ChatGLM2-6B 生成的结果,对比预测输出和生成结果,评测模型训练的好坏。如果不满意调整训练的参数再次进行训练。
在这里插入图片描述
4、部署并使用微调后的模型
模型参数有两个,一个是微调得到的参数,一个是原参数。因为在 P-tuning v2 训练时模型只保存 PrefixEncoder 部分的参数,所以在推理时需要同时加载原 ChatGLM2-6B 模型以及 PrefixEncoder 的权重,因此需要指定对应的参数,并且配置对应的参数:
在这里插入图片描述
(我是基于这位作者的文章:https://mp.weixin.qq.com/s/xSF23H_LHgioU8wfEcjs4A进行参数修改的)

bash web_demo.sh

即可使用微调后的模型,使用情况如下图所示:
在这里插入图片描述
微调前的效果如下:
在这里插入图片描述
结语:
其实一开始也没抱希望说6GB显存的电脑能跑起来微调,因为官方教程上看见的是最低7GB显存即可实现为微调,没想到我6GB的电脑也跑起来了,分享出来,如果里面的哪怕一点内容对你也有帮助的话,那就再好不过了。如有错误或者不合理的地方,欢迎批评指正和指导!

  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yurous

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值