InstructGLM:基于ChatGLM-6B在指令数据集上进行微调

这篇具有很好参考价值的文章主要介绍了InstructGLM:基于ChatGLM-6B在指令数据集上进行微调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

InstructGLM

基于ChatGLM-6B+LoRA在指令数据集上进行微调

https://github.com/yanqiangmiffy/InstructGLM

本项目主要内容:

  • 🚀 2023/4/9 发布了基于100万条由BELLE项目生成的中文指令数据的Lora权重,具体可见output/belle/chatglm-lora.pt
  • 🚀 2023/4/8 基于deepspeed支持多卡微调,速度相比单卡提升8-9倍具体设置可见 微调3 基于DeepSpeed进行Lora微调
  • 🚀 2023/3/28 开源了基于alpaca和belle数据指令微调后的lora权重,详情可见output
  • 🚀 2023/3/25 针对ChatGLM-6B模型基于LoRA技术进行微调
  • 🚀 2023/3/23 基于gradio的demo完善

Todo

  • deepspeed支持
  • 模型评估,如何评估微调后的模型效果

开源指令数据集

  • 斯坦福52k英文指令数据

instruction:52K 条指令中的每一条都是唯一的,答案由text-davinci-003模型生成得到的

  • BELLE项目生成的中文指令数据:0.5m&1m

1百万数据:https://huggingface.co/datasets/BelleGroup/generated_train_1M_CN

生成方式基于种子prompt,调用openai的api生成中文指令

  • GuanacoDataset 多语言指令数据集

Guanaco 是在 Meta 的 LLaMA 7B 模型上训练的指令跟随语言模型。在 Alpaca 模型原始 52K 数据的基础上,我们添加了额外的 98,369 个条目,涵盖英语、简体中文、繁体中文(台湾)、繁体中文(香港)、日语、德语以及各种语言和语法任务。通过使用这些丰富的数据重新训练和优化模型,Guanaco 在多语言环境中展示了出色的性能和潜力。项目链接可以查看
https://guanaco-model.github.io/

  • alpaca中文指令微调数据集

与原始alpaca数据json格式相同,数据生成的方法是机器翻译和self-instruct

  • 人工精调的中文对话数据集

加入除了alpaca之外的其他中文聊天对话
人工微调,部分并不中文化的问题,我们将重新询问chatgpt或文心一言,重新获取回答并覆盖掉alpaca的回答

  • firefly-train-1.1M , 一份高质量的包含1.1M中文多任务指令微调数据集,包含23种常见的中文NLP任务的指令数据。对于每个任务,由人工书写若干指令模板,保证数据的高质量与丰富度。

微调1:alpaca英文指令数据

斯坦福羊驼52k数据,原始数据格式如下:

{
    "instruction": "Evaluate this sentence for spelling and grammar mistakes",
    "input": "He finnished his meal and left the resturant",
    "output": "He finished his meal and left the restaurant."
}

数据集地址:https://github.com/tatsu-lab/stanford_alpaca

1.数据预处理

转化alpaca数据集为jsonl,这一步可以执行设置数据转换后格式,比如:

###Instruction:xxx###Input:xxxx###Response:xxx
python cover_alpaca2jsonl.py \
    --data_path data/alpaca_data.json \
    --save_path data/alpaca_data.jsonl 

对文本进行tokenize,加快训练速度,文本长度可根据运行资源自行设置

python tokenize_dataset_rows.py \
    --jsonl_path data/alpaca_data.jsonl \
    --save_path data/alpaca \
    --max_seq_length 320

2. 模型训练

python train_lora.py \
    --dataset_path data/alpaca \
    --lora_rank 8 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 1 \
    --max_steps 52000 \
    --save_steps 1000 \
    --save_total_limit 2 \
    --learning_rate 2e-5 \
    --fp16 \
    --remove_unused_columns false \
    --logging_steps 50 \
    --output_dir output

微调2:BELLE中文指令数据

包含543314条由BELLE项目生成的中文指令数据,数据格式如下:

input target
用一句话描述地球为什么是独一无二的。\n 地球上有适宜生命存在的条件和多样化的生命形式

数据集地址:https://huggingface.co/datasets/BelleGroup/generated_train_0.5M_CN

1.数据预处理

转化bell数据集为jsonl


python cover_alpaca2jsonl.py \
    --dataset_name BelleGroup/generated_train_0.5M_CN \
    --save_path data/belle_data.jsonl 

文本长度统计

count    543314.000000
mean         83.536944
std          95.665178
min           4.000000
25%          33.000000
50%          51.000000
75%          88.000000
90%         194.000000
max        4410.000000
Name: input_len, dtype: float64

count    543314.000000
mean        121.079030
std         165.472722
min           1.000000
25%          27.000000
50%          67.000000
75%         151.000000
90%         296.000000
max        9463.000000
Name: target_len, dtype: float64

分词处理

python tokenize_dataset_rows.py \
    --jsonl_path data/belle_data.jsonl \
    --save_path data/belle \
    --max_seq_length 320

转换后的数据:

                                           input_ids  seq_len                                                                                                                   
0  [20005, 92863, 20012, 20005, 83864, 87784, 871...       20
1  [20005, 92863, 20012, 20005, 91432, 86523, 885...       80
2  [20005, 92863, 20012, 104069, 85056, 86334, 89...       61
3  [20005, 92863, 20012, 91492, 89122, 83866, 852...       24
4  [20005, 92863, 20012, 20005, 83834, 99899, 927...       24

2. 模型训练

  • 基于原始chatglm-6b训练
python train_lora.py \
    --dataset_path data/belle \
    --lora_rank 8 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 1 \
    --max_steps 52000 \
    --save_steps 1000 \
    --save_total_limit 2 \
    --learning_rate 2e-5 \
    --fp16 \
    --remove_unused_columns false \
    --logging_steps 50 \
    --output_dir output
  • 基于alpaca的lora继续微调
python train_lora.py \
    --dataset_path data/belle \
    --lora_rank 8 \
    --per_device_train_batch_size 8 \
    --gradient_accumulation_steps 1 \
    --max_steps 52000 \
    --save_steps 10000 \
    --save_total_limit 2 \
    --learning_rate 2e-5 \
    --fp16 \
    --remove_unused_columns false \
    --logging_steps 50 \
    --output_dir output/belle \
    --is_resume True \
    --resume_path output/alpaca/chatglm-lora.pt

微调3:基于DeepSpeed进行Lora微调

支持多卡+zero方案,训练速度可提高8倍左右

accelerate launch --config_file config/default_config.yaml train_new.py

实验环境

  • 安装所需要的包:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 显卡:2xA100 80G

实验结果

  • 训练好的lora权重
└─output
    ├─alpaca:基于52k微调的lora权重
    ├─belle::基于52k微调的lora权重+belle微调的权重52000steps
    └─belle_raw:belle微调的权重104000steps


链接:https://pan.baidu.com/s/1c-zRSEUn4151YLoowPN4YA?pwd=hxbr
提取码:hxbr
--来自百度网盘超级会员V3的分享
  • alpaca数据微调效果

InstructGLM:基于ChatGLM-6B在指令数据集上进行微调

  • belle数据微调效果

InstructGLM:基于ChatGLM-6B在指令数据集上进行微调

Reference

非常感谢以下作者的无私开源文章来源地址https://www.toymoban.com/news/detail-424181.html

  • https://github.com/mymusise/ChatGLM-Tuning
  • https://huggingface.co/BelleGroup/BELLE-7B-2M
  • https://github.com/LianjiaTech/BELLE
  • https://huggingface.co/datasets/BelleGroup/generated_train_0.5M_CN
  • https://huggingface.co/datasets/JosephusCheung/GuanacoDataset
  • https://guanaco-model.github.io/
  • https://github.com/carbonz0/alpaca-chinese-dataset
  • https://github.com/THUDM/ChatGLM-6B
  • https://huggingface.co/THUDM/chatglm-6b
  • https://github.com/lich99/ChatGLM-finetune-LoRA

Bugs

  • gcc版本升级
yum install centos-release-scl -y
yum install devtoolset-9 -y

#临时覆盖系统原有的gcc引用
scl enable devtoolset-9 bash

# 查看gcc版本
gcc -v

到了这里,关于InstructGLM:基于ChatGLM-6B在指令数据集上进行微调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGLM-6B模型微调实战(以 ADGEN (广告生成) 数据集为例,序列长度达 2048)

    kingglory/ChatGLM-6B 项目地址 1 介绍 对于 ChatGLM-6B 模型基于 P-Tuning v2 的微调。P-Tuning v2 将需要微调的参数量减少到原来的 0.1%,再通过模型量化、Gradient Checkpoint 等方法,差不多需要 7GB或则8GB 显存即可运行。 2 环境 2.1 python 环境 或者 2.2 下载代码 2.3 安装依赖 运行微调需要4.27

    2024年02月03日
    浏览(42)
  • 学习实践ChatGLM-6B(部署+运行+微调)

    该模型基于 General Language Model (GLM) 架构,具有 62 亿参数。 注:结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B可以实现的能力这是一个对话机器人,所以基本的问答,系统都支持。 官方提供的使用实例: 自我认知

    2023年04月18日
    浏览(35)
  • windows下实现对chatGLM-6B的微调

    默认读者已成功部署chatGLM-6B,如果没有部署完毕,请参阅下列文章(同为笔者所写) https://blog.csdn.net/Asunazhang/article/details/130094252?spm=1001.2014.3001.5502 打开cmd切换至虚拟环境,调用下列代码安装依赖。 3.1 下载数据集 从 https://link.zhihu.com/?target=https%3A//cloud.tsinghua.edu.cn/f/b3f119a008

    2024年02月04日
    浏览(38)
  • 聊聊ChatGLM-6B部署与微调的深入理解

    ChatGLM的部署,主要是两个步骤: 在Github上下载chatglm的库文件 在Hugging Face上下载模型参数与配置文件 从Github上看ChatGLM项目文件的结构来看,仅仅是包含三种部署方式的py代码与微调的py代码 而相关的实现细节,比如神经网络、激活函数、损失函数等具体的实现,并不在该项

    2024年02月03日
    浏览(51)
  • 自然语言处理 微调ChatGLM-6B大模型

    bert的主要任务是随机的去除掉某个单词,使用上下文将其预测出来(相当于完形填空任务); GPT的主要任务是根据前面一句话,预测下面的内容; GLM结合了bert的强大双向注意力与gpt的强大生成能力两种能力,被nask的地方使用单向注意力,未被mask的地方使用双向注意力 预测

    2024年02月09日
    浏览(48)
  • ChatGLM2-6B微调实践-QLora方案

    申请阿里云GPU服务器: CentOS 7.6 64 Anaconda3-2023.07-1-Linux-x86_64 Python 3.11.5 GPU NVIDIA A10(显存24 G/1 core) CPU 8 vCore/30G 安装Anaconda、CUDA、PyTorch 参考:ChatGLM2-6B微调实践-P-Tuning方案 项目部署 准备数据集 准备我们自己的数据集,分别生成训练文件和测试文件这两个文件,放在项目dat

    2024年02月07日
    浏览(53)
  • 【ChatGLM3-6B】Docker下部署及微调

    安装好了docker 安装好了NVIDIA 显卡16G 新建一个文件夹,用来存放下载下来的ChatGLM3代码和模型 右键,打开一个git窗口,拉取模型(会很慢,耐心等待) 地址: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary 右键,打开一个git窗口,拉取源代码 地址:https://github.com/THUDM/ChatGLM3 或

    2024年02月04日
    浏览(46)
  • ChatGLM2-6B在Windows下的微调

    1、ChatGLM2-6B! 我跑通啦!本地部署+微调(windows系统):这是最关键的一篇文章,提供了Windows下的脚本 2、LangChain + ChatGLM2-6B 搭建个人专属知识库:提供了基本的训练思路。 1、已完成ChatGLM2-6B的部署,假设部署位置为D:_ChatGPTlangchain-chatglm_testChatGLM2-6B 2、部署环境 Windows 10 专业

    2024年02月13日
    浏览(54)
  • (二)ChatGLM-6B模型部署以及ptuning微调详细教程

    下面是官方原话, 选择他的原因完全是因为可以消费级电脑上使用,更强的130B模型看https://github.com/THUDM/GLM-130B ChatGLM-6B 是一个 开源 的、支持 中英双语 的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合 模型量化 技术,用户可以在 消费级的显卡 上进行

    2024年02月07日
    浏览(43)
  • chatglm2-6b在P40上做LORA微调

    目前,大模型的技术应用已经遍地开花。最快的应用方式无非是利用自有垂直领域的数据进行模型微调。chatglm2-6b在国内开源的大模型上,效果比较突出。本文章分享的内容是用chatglm2-6b模型在集团EA的P40机器上进行垂直领域的LORA微调。 github: https://github.com/THUDM/ChatGLM2-6B ch

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包