Open-ChatGPT
是一个开源库,允许您使用自己的数据和尽可能少的计算量来训练超个性化的类似 ChatGPT 的人工智能模型。
Open-ChatGPT
是一个通用系统框架,用于为类似 ChatGPT 的模型提供端到端的训练体验。它可以自动采用您最喜欢的预训练大型语言模型,通过 OpenAI InstructGPT 风格的三个阶段来生成您自己的高质量 ChatGPT 风格模型。
我们实现了由 Transformer 库和 DeepsSpeed 提供支持的 RLHF(带有人类反馈的强化学习)。它支持分布式训练和卸载,可以适应极大的模型。
如果您喜欢该项目,请留下一颗星以表示您的支持。
[2023/05] 我们实现了斯坦福羊驼Lora 。
[2023/05] 我们实现了斯坦福羊驼。
[2023/04] 我们发布了RLHF(Reinforcement Learning with Human Feedback) Pipeline 。
[2023/03] 我们发布了代码OpenChatGPT:一个开源库,用于像 ChatGPT 一样训练 ChatBot 。
Open-ChatGPT:ChatGPT 的开源实现
内存不足
微调 Alpaca-7B
使用 DeepSpeed
与 Lora 一起微调 Alpaca-7B
指令数据集
RLHF 数据集
数据预处理
数据格式化
介绍
消息
目录
数据收集
安装
指令Fintune
推理
贡献
执照
致谢
引文
用于训练(文本和多模式)基于聊天的 LLM 的开源指令调整数据集的集合(GPT-4、ChatGPT、LLaMA、Alpaca)。
参考这个(@jianzhnie),我们根据以下规则标记每个收集的数据集:
(Lang)语言-标签:
EN:英文说明数据集
CN:中文指令数据集
ML:[多语言]多种语言的指令数据集
(任务)任务标签:
MT:[多任务]包含多个任务的数据集
TS:[特定任务]针对特定任务定制的数据集
(Gen)生成方法:
HG:[人类生成的数据集]人类创建的数据集
SI:[自指示]使用自指示方法生成的数据集
MIX:[混合数据集]数据集包含人类和机器生成的数据
COL:[数据集集合] 由其他数据集集合而成的数据集
项目 | 数据集 | 组织 | 数字 | 郎 | 任务 | 根 | 类型 | 源代码 |
---|---|---|---|---|---|---|---|---|
思想链 | cot_data |few_shot_data | 谷歌 | 74771 | 英文/中文 | 公吨 | HG | 用 cot 推理进行指导 | 在现有数据上注释 CoT |
GPT4all | nomic-ai/gpt4all-j-提示-世代 | 经济人工智能 | 806199 | CN | 公吨 | 科尔 | 代码、故事和对话 | 从 GPT-3.5-turbo 蒸馏 |
GP老师 | GPT-4 通用说明 |角色扮演说明 |代码说明 |工具成形者 | 泰克尼姆1 | 29013 | CN | 公吨 | SI | 一般、角色扮演、工具形成者 | GPT-4 和模具成型机 |
原驼 | JosephusCheung/Guanaco数据集 | 张约瑟夫 | 534610 | 机器学习 | 公吨 | SI | 各种语言任务 | 文本-达芬奇-003 |
HC3 | Hello-SimpleAI/HC3 | 你好-SimpleAI | 万得资讯 | 37175 | 英文/中文 | TS | 混合 | 对话评价 | 人类或 ChatGPT |
HC3-中文 | Hello-SimpleAI/HC3-中文 | Hello-SimpleAI|万得资讯 | 13k | 中国 | TS | 混合 | 对话评价 | 人类或 ChatGPT |
羊驼毛 | 达实验室/羊驼 | 达实验室 | 52002 | CN | 公吨 | SI | 一般指示 | 文本-达芬奇-003 |
羊驼数据清理 | yahma/羊驼毛清洁 | 亚赫马 | 52k | CN | 公吨 | SI | 一般指示 | 文本-达芬奇-003 |
中国-美洲驼-羊驼 | alpaca_data_zh_51k | ymcui(讯飞) | 51k | 中国 | 公吨 | SI | 一般指示 | 文本-达芬奇-003 |
Luotuo-中文-LLM 骆驼 | trans_chinese_alpaca_data | LC1332(商汤) | 52k | 中国 | 公吨 | SI | 一般指示 | 文本-达芬奇-003 |
自然指令 | Allen AI 61 任务|1.5k 任务 | 艾艾伦 | 5040134 | 机器学习 | 公吨 | 科尔 | 多样化的 NLP 任务 | 人工注释数据集集合 |
美女网 | 百丽集团/train_1M_CN |百丽集团/train_0.5M_CN | 百丽集团(链家) | 1079517 | 中国 | TS/MT | SI | 一般、数学推理、对话 |
这里,我们只列出了指令调优数据集列表的一小部分,要查找更多数据集,请查看以下链接:jianzhnie/awesome-instruction-datasets:用于训练指令跟踪LLM的开源数据集的集合(ChatGPT 、美洲驼、羊驼)。
来自人类反馈的指令调整/强化学习 (RLHF) 数据集是 ChatGPT 等指令跟踪法学硕士的关键组成部分。 Follwing 是用于各种法学硕士指令调整的数据集的综合列表,使研究人员和开发人员更容易访问和利用这些资源。
项目 | 组织 | 数字 | 郎 | 概括 |
---|---|---|---|---|
webgpt_比较 | 开放伊 | 19,578 | 英语 | 在 WebGPT 论文中,作者根据人类反馈训练了一个奖励模型。他们使用奖励模型来训练一个长格式的问答模型,以符合人类的偏好。这是在 WebGPT 项目结束时标记为适合奖励建模的所有比较的数据集。总共有 19,578 次比较。 |
小水电 | 斯坦福大学 | 349K | 英语 | SHP 是一个数据集,包含 385K 人类对 18 个不同主题领域(从烹饪到法律建议)的问题/说明的回答的集体偏好。这些偏好旨在反映一种响应相对于另一种响应的有用性,并旨在用于训练 RLHF 奖励模型和 NLG 评估模型(例如,SteamSHP)。 |
rlhf 奖励数据集 | 一听邪 | 76.3 k | 英语 | |
达霍斯/full-hh-rlhf | 达霍斯 | 112k | 英语 | Anthropic 的 HH 数据集重新格式化为即时、选择、拒绝的样本。 |
Dahoas/合成指令 gptj 成对 | 达霍斯 | 英语 | ||
达霍斯/rm-静态 | 达霍斯 | 76.3k | 英语 | hh-static 的分割用于在监督微调后训练奖励模型。 |
人择/hh-rlhf | 人择 | 22k | 英语 | 该 RLHF 数据集是一个迭代的“在线”数据集,其中包括来自 52B 语言模型的数据。它包含 22k 有用性比较,并且没有红队数据。 |
使用 GPT-4/GPT-4-LLM 进行指令调整 | 使用 GPT-4 进行指令调整 | 52k | 英语 | 通过要求 GPT-4 评估质量,对来自三个模型(GPT-4、GPT-3.5 和 OPT-IML)的 Alpaca 提示的响应进行排名(注:数据由GPT-4 模型而非人类评估)。作者认为“GPT-4能够识别并修复自身的错误,并准确判断响应的质量” |
thu-coai/安全提示 | 守高 | 10万 | 中国人 | 中文安全提示,用于体育和提升模型的安全性,将模型的输出与人类的价值观相匹配。 |
Chatgpt-比较-检测项目 |
要查找更多数据集,请查看以下链接:jianzhnie/awesome-instruction-datasets:用于训练遵循指令的 LLM(ChatGPT、LLaMA、Alpaca)的开源数据集集合。
我们开发了数据预处理代码,为各种大型语言模型提供统一的接口。此代码可用于出于多种目的预处理数据,例如指令调优和 RLHF 建模任务。如果您有兴趣了解更多信息,请查看以下指向我们的提示数据集和数据实用程序的链接:
提示数据集.py
data_utils.py
在我们的集合中,所有数据均使用相同的模板进行格式化。每个样本都遵循以下结构:
[ {"instruction": instruction string, "input": input string, # (may be empty) "output": output string} ]
git 克隆 https://github.com/jianzhnie/open-chatgpt.git pip install -r 要求.txt
聚四氟乙烯
如果您想将 LORA 与其他参数有效的方法一起使用,请安装 peft 作为附加依赖项。
深速
如果您想使用管道并行、梯度检查点和张量融合等技术加速 LLM 训练。请安装 DeepSpeed。
我们使用标准 Hugging Face 训练代码微调我们的模型。我们使用以下超参数对 LLaMA-7B 和 LLaMA-13B 进行微调:
超参数 | 拉马-7B | LLaMA-13B |
---|---|---|
批量大小 | 128 | 128 |
学习率 | 2e-5 | 1e-5 |
纪元 | 3 | 5 |
最大长度 | 第512章 | 第512章 |
重量衰减 | 0 | 0 |
您可以使用以下命令使用 4 x A100 (40GB) 训练 Alpaca-7B。
cd 示例/羊驼/ python train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/羊驼 --output_dir 工作目录/ --num_train_epochs 3 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_steps 16 --评估策略“否” --save_strategy“步骤” --save_steps 2000 --save_total_limit 5 --学习率2e-5 --权重衰减0。 --warmup_ratio 0.03 --lr_scheduler_type“余弦” --logging_steps 1
如果您遇到 OOM 错误,请考虑这一点。
简单来说,微调 7B 模型需要大约 7 x 4 x 4 = 112 GB 的 VRAM。上面给出的命令启用参数分片,因此任何 GPU 上都不会存储冗余模型副本。如果您想进一步减少内存占用,可以选择以下一些选项:
使用--fsdp "full_shard auto_wrap offload"
打开 FSDP 的 CPU 卸载。这可以节省 VRAM,但代价是运行时间更长。
根据我们的经验,DeepSpeed stage-3(带卸载)有时比带卸载的 FSDP 具有更高的内存效率。以下是使用具有 4 个 GPU 的 DeepSpeed stage-3 以及参数和优化器卸载的示例:
pip install deepspeedcd 示例/alpaca/ torchrun --nproc_per_node=8 train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/羊驼 --output_dir 工作目录/ --num_train_epochs 3 --per_device_train_batch_size 2 --per_device_eval_batch_size 2 --gradient_accumulation_steps 8 --评估策略“否” --save_strategy“步骤” --save_steps 2000 --save_total_limit 5 --学习率2e-5 --权重衰减0。 --warmup_ratio 0.03 --deepspeed“脚本/ds_config_zero3_auto.json”
LoRA 微调查询、键和值嵌入头的低秩切片。这可以将总内存占用量从 112GB 减少到大约 7x4=28GB。
这部分使用低秩适应 (LoRA) 重现斯坦福羊驼结果。
为了廉价且高效地进行微调,我们使用 Hugging Face 的 PEFT 以及 Tim Dettmers 的 bitsandbytes。
该文件包含 PEFT 在 LLaMA 模型中的简单应用,以及一些与提示构建和标记化相关的代码。
python train_alpaca_lora.py --model_name_or_path decapoda-research/llama-7b-hf --data_path tatsu-lab/羊驼 --output_dir work_dir_lora/ --num_train_epochs 3 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 --gradient_accumulation_steps 8 --评估策略“否” --save_strategy“步骤” --save_steps 2000 --save_total_limit 5 --学习率2e-5 --权重衰减0。 --warmup_ratio 0.03 --lr_scheduler_type“余弦” --logging_steps 1
该文件从 Hugging Face 模型中心读取基础模型,从tloen/alpaca-lora-7b
读取 LoRA 权重,并运行 Gradio 接口以对指定输入进行推理。用户应将此视为模型使用的示例代码,并根据需要进行修改。
用法示例:
蟒蛇generate_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b
如果您没有足够的内存,可以通过在上述命令中添加--load-8bit
来启用 8 位压缩。这可以将内存使用量减少大约一半,但模型质量会略有下降。它与 CPU、GPU 和 Metal 后端兼容。具有 8 位压缩的 Alpaca-7B 可以在单个 NVIDIA 3090/4080/T4/V100(16GB) GPU 上运行。
蟒蛇generate_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b --load_8bit
我们的目的是让这个仓库变得更好。如果您有兴趣贡献,请参阅此处了解贡献说明。
Openn-ChatGPT
在 Apache 2.0 许可证下发布。
我们感谢许多开源贡献者的工作,特别是:
羊驼-LoRA
洛拉
斯坦福羊驼毛
抱脸
骆驼
骆驼毛
如果您使用此存储库中的数据或代码,请引用该存储库。
@misc{open-chatgpt, author = {jianzhnie}, title = {Open-ChatGPT, a chatbot based on Llama model}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/jianzhnie/open-chatgpt}}, }