ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南

马肤

温馨提示:这篇文章已超过476天没有更新,请注意相关的内容是否还可用!

摘要:本文介绍了ChatGLM2-6B和ChatGLM-6B模型的特点和用途。提供了训练自己数据集的实战指南。通过训练自己的数据集,用户可以利用这些模型实现更精准的对话生成和自然语言处理任务。本文旨在为开发者提供有关如何使用和训练这些模型的实用信息和技巧。

介绍

ChatGLM-6B是一个开源的文本生成式对话模型,基于General Language Model(GLM)框架,拥有62亿参数,结合模型蒸馏技术,实测在2080Ti显卡训练中上(INT4)显存占用约6G左右。

优点:

1、较低的部署门槛:FP16半精度下,ChatGLM-6B至少需要13GB的显存进行推理,结合模型量化技术,这一需求可以进一步降低到10GB(INT8)和6GB(INT4),使得ChatGLM-6B可以部署在消费级显卡上。

2、更长的序列长度:相比GLM-10B(序列长度1024),ChatGLM-6B序列长度达32K,支持更长对话和应用。

ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南 第1张

3、人类意图对齐训练:使用了监督微调(Supervised Fine-Tuning)、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback)等方式,使模型初步具备理解人类指令意图的能力,输出格式为markdown,方便展示,目前模型监督微调方法已开源。

不足:

1、模型容量较小:6B的小容量,决定了其相对较弱的模型记忆和语言能,随着自己训练数据数量和轮次增加,可能会逐步丧失原来的对话能力,智谱ai于魁飞博士给的训练数据再好在1000条左右。

2、较弱的多轮对话能力:ChatGLM-6B的上下文理解能力还不够充分,在面对长答案生成以及多轮对话的场景时,可能会出现上下文丢失和理解错误的情况,解决方式可以是外挂知识库的形式,例如ChatGLM-6B结合langchain实现本地知识库链接。

ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南 第2张

3、训练完自己的数据后,可能出现遗忘之前对话能力的情况,即“灾难性遗忘”,解决办法是在专业领域数据中加入通用开源的对话微调数据集一起训练。

安装

1、安装ChatGLM2-6B官方开源的训练方式基于P-Tuning v2微调,链接: git_link,基于QLoRA,链接: git_link,两个版本区别文章末尾介绍。

以下ChatGLM2-6B微调步骤:

ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南 第3张

下载ChatGLM2-6B。

git clone https://github.com/THUDM/ChatGLM2-6B

cd ChatGLM2-6B

pip install -r requirements.txt

ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南 第4张

cd ptuning/

pip install rouge_chinese nltk jieba datasets

使用自己数据集:

构建自己的数据集,样例数据下载链接,将自己的数据集换成以下格式:

ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南 第5张

{ "content": "类型#上衣*版型#宽松*版型#显瘦*图案#线条*衣样式#衬衫*衣袖型#泡泡袖*衣款式#抽绳", "summary": "这件衬衫的款式非常的宽松,利落的线条可以很好的隐藏身材上的小缺点,穿在身上有着很好的显瘦效果,领口装饰了一个可爱的抽绳,漂亮的绳结展现出了十足的个性,配合时尚的泡泡袖型,尽显女性甜美可爱的气息。" }

解释:构建数据集是一个JSON格式文件,其中一个列表中包含多个字典,每个字典包含两个键值对,{"content": "问句1","summary": "答案1"} 。{“content”: “问句2”, “summary”: "答案2"} 。{…} 。

修改train.sh和evaluate.sh,修改其中的train_file、validation_file和test_file为你自己的JSON格式数据集路径,并将prompt_column和response_column改为JSON文件中输入文本和输出文本对应的KEY,我修改的train.sh示例如下:

PRE_SEQ_LEN=128 LR=2e-2 NUM_GPUS=2 # 双卡 torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \ --do_train \ --train_file di/train.json \ # 训练文件地址 \ --validation_file di/fval.json \ # 验证文件地址 \ --prompt_column content \ # 训练集中prompt名称 \ --response_column summary \ # 训练集中答案明细 \ --overwrite_cache \ --model_name_or_path THUDM/chatglm-6b # 加载模型文件地址,可修改为本地路径 \ --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR # 保存训练模型文件地址 \ --overwrite_output_dir \ --max_source_length 64 \ --max_target_length 128 \ --per_device_train_batch_size 1 # batch_size 根据显存调节 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 16 \ --predict_with_generate \

ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战,ChatGLM系列模型介绍与数据集训练实战指南 第6张


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码