温馨提示:这篇文章已超过477天没有更新,请注意相关的内容是否还可用!
摘要:本文介绍了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,支持更长对话和应用。
3、人类意图对齐训练:使用了监督微调(Supervised Fine-Tuning)、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback)等方式,使模型初步具备理解人类指令意图的能力,输出格式为markdown,方便展示,目前模型监督微调方法已开源。
不足:
1、模型容量较小:6B的小容量,决定了其相对较弱的模型记忆和语言能,随着自己训练数据数量和轮次增加,可能会逐步丧失原来的对话能力,智谱ai于魁飞博士给的训练数据再好在1000条左右。
2、较弱的多轮对话能力:ChatGLM-6B的上下文理解能力还不够充分,在面对长答案生成以及多轮对话的场景时,可能会出现上下文丢失和理解错误的情况,解决方式可以是外挂知识库的形式,例如ChatGLM-6B结合langchain实现本地知识库链接。
3、训练完自己的数据后,可能出现遗忘之前对话能力的情况,即“灾难性遗忘”,解决办法是在专业领域数据中加入通用开源的对话微调数据集一起训练。
安装
1、安装ChatGLM2-6B官方开源的训练方式基于P-Tuning v2微调,链接: git_link,基于QLoRA,链接: git_link,两个版本区别文章末尾介绍。
以下ChatGLM2-6B微调步骤:
下载ChatGLM2-6B。
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
pip install -r requirements.txt
cd ptuning/
pip install rouge_chinese nltk jieba datasets
使用自己数据集:
构建自己的数据集,样例数据下载链接,将自己的数据集换成以下格式:
{ "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 \
还没有评论,来说两句吧...