赞
踩
这是Alpaca-CoT项目的存储库,该项目旨在构建一个多接口统一的轻量级指令微调(IFT)平台,该平台具有广泛的指令集合(尤其是CoT数据集)和用于各种大型语言模型以及各种参数效率方法(如LoRA,P-Tuning)的统一接口。我们正在不断扩展我们的指令调整数据收集,并集成更多的LLM。此外,我们还新建了一个分支tabular_llm来构造可以处理表格智能任务的大型语言模型。
欢迎您向我们提供任何未收集的指令调整数据集(或其来源)。我们将统一它们的格式,用这些数据集训练羊驼模型(以及未来早期的其他LLM),开源模型检查点,并进行广泛的实证研究。我们希望我们的项目能够为大型语言模型的开源进程做出微薄的贡献,降低其对NLP研究人员的入门门槛。
您也可以选择加入我们的群聊(WeChat),和更多的同好研究者们交流。目前群聊人数过多,需要好友邀请才能入群,请扫码加我为好友,拉您入群。
MOSS
已被集成进来。GAOKAO
, camel
, FLAN-Muffin
, COIG
.webGPT
, dolly
, baize
, hh-rlhf
, OIG(part)
.多轮对话
功能,感谢@paulcx。firefly
, instruct
, Code Alpaca
这里.参数合并
、本地使用
、批量预测
、web服务
功能,感谢@weberrr。FastChat
, GPTeacher
,Guanaco
,HC3
,prosocial-dialog
, belle-chat&belle-math
, xP3
和 natural-instructions
。CoT_CN_data.json
已上传到这里.checkpoint
已被上传到了这里.instnwild
(收集自推特,主要是生成、开放式QA和mind-storm types)已经被统一格式化并收集.LLM: ( Large Language Models)指经过大规模预训练且体量较大的语言模型,一般是transformer-based模型。
IFT: ( Instruction Fine-Tuning)指令微调,指令是指用户传入的目的明确的输入文本,指令微调用以让模型学会遵循用户的指令。
CoT: ( Chain-of-Thought)指令形式的一种特殊情况,包含step-by-step的推理过程。如下图蓝色部分所示。
ChatGPT的出现验证了大型语言模型(LLM)在通用人工智能(AGI)上的潜力。基于LLaMA[1]等Large Language Models(LLMs)的instruction-tuning研究(如,Alpaca[2])大幅度加速了复现ChatGPT的进程。Alpaca-CoT希望在这个研究方向上做出适度的贡献,以推进LLMs的开源进程、降低LLMs研究和使用成本。
具体来说,Alpaca-CoT项目旨在探究如何更好地通过instruction-tuning的方式来诱导LLM具备类似ChatGPT的交互和instruction-following能力。为此,我们广泛收集了不同类型的instruction(尤其是Chain-of-Thought数据集),并基于LLaMA给出了深入细致的实证研究,以供未来工作参考。据我们所知,我们是首个将CoT拓展进Alpaca的工作,因此简称为"Alpaca-CoT"。
热烈欢迎您向我们提供任何未被本项目收集的instruction-tuning及各类tasks数据集(或其来源)。我们将:
我们希望我们的项目能够为大型语言模型的开源过程做出适度的贡献,并降低NLP研究人员上手LLM相关研究的门槛。
近期,LLaMA[1]显示出惊人的zero-shot和few-shot能力,仅需较少的参数即可和GPT-3.5性能相当(LLaMA-13B显著优于GPT-3(175B),LLaMA-65B与PaLM-540MB相当),明显降低了训练、微调和使用competitive大型语言模型的成本。最近,为了提高LLaMA的instruction-following能力,Stanford Alpaca[2]利用self-instruct[3]生成的52K Englishi nstruction-finetuning数据对LLaMA进行了微调。然而,目前该方向的研究仍然面临着以下三个挑战:
为此,我们提出了Alpaca-CoT项目,该项目结合了相关的近期前沿技术,具有以下优势:
7b
,13b
和30b
版本的LLaMA模型均可在单卡80G A100上轻松完成训练。该优势主要来自于low-rank adaptation (LoRA) [4], PEFT和bitsandbytes等技术。我们的代码主要修改自这里。收集数据集的相对大小如下图所示:
我们参考这里 (@yaodongC), 将收集到的数据集按照以下规则标注Tags:
(Lang)Lingual-Tags:
(Task)Task-Tags:
(Gen)Generation-method:
数据集 | 数目 | Lang | Task | Gen | 类型 | 来源 | 链接 |
---|---|---|---|---|---|---|---|
Chain of Thought | 74771 | EN/CN | MT | HG | CoT相关任务 | 人在现有数据集上标注CoT | 下载 |
GPT4all | 806199 | EN | MT | COL | 代码,故事,对话 | GPT-3.5-turbo 蒸馏 | 下载 |
GPTeacher | 29013 | EN | MT | SI | 通用,角色扮演,工具指令 | GPT-4 & toolformer | 下载 |
Guanaco | 534610 | ML | MT | SI | 多种nlp任务 | text-davinci-003 | 下载 |
HC3 | 37175 | EN/CN | TS | MIX | 对话评估 | gpt-3.5 或 人工 | 下载 |
alpaca | 52002 | EN | MT | SI | 通用指令 | text-davinci-003 | 下载 |
Natural Instructions | 5040134 | ML | MT | COL | 多种nlp任务 | 人工标注的数据集的收集 | 下载 |
belle_cn | 1079517 | CN | TS/MT | SI | 通用指令,数学推理,对话 | text-davunci-003 | 下载 |
instinwild | 52191 | EN/CN | MT | SI | 生成,开放域问答,头脑风暴 | text-davunci-003 | 下载 |
prosocial dialog | 165681 | EN | TS | MIX | 对话 | GPT-3改写问题,人工回复 | 下载 |
finance_en | 68912 | EN | TS | COL | 金融领域问答 | GPT3.5 | 下载 |
xP3 | 78883588 | ML | MT | COL | 多种nlp任务 | 人工标注的数据集的收集 | 下载 |
firefly | 1649398 | CN | MT | COL | 23种nlp任务 | 收集中文数据集,人工书写指令模板 | 下载 |
instruct | 888969 | EN | MT | COL | GPT4All,Alpaca和开源数据集的增强 | 使用AllenAI提供的nlp增强工具 | 下载 |
Code Alpaca | 20022 | EN | SI | SI | 代码生成,编辑,优化 | text-davinci-003 | 下载 |
Alpaca_GPT4 | 52002 | EN/CN | MT | SI | 通用指令 | GPT-4 生成的Alpaca数据 | 下载 |
webGPT | 18994 | EN | TS | MIX | 信息检索问答 | fine-tuned GPT-3 + 人工评估 | 下载 |
dolly 2.0 | 15015 | EN | TS | HG | 公开、封闭式问答、信息抽取、摘要生成、开放式构思、分类以及创意写作七类任务 | 人工标注 | 下载 |
baize | 653699 | EN | MT | COL | Alpaca和多种问答任务 | 人工标注的数据集的收集 | 下载 |
hh-rlhf | 284517 | EN | TS | MIX | 对话 | RLHF models | 下载 |
OIG(part) | 49237 | EN | MT | COL | 多种nlp任务 | 人工标注的数据集的收集和数据增强 | 下载 |
GAOKAO | 2785 | CN | MT | COL | 高考中的多选,填空等问题 | 人工标注的数据集的收集 | 下载 |
camel | 760620 | EN | MT | SI | 物理生物化学编程,数学,社会等领域的角色扮演对话人工标注的数据集的收集 | gpt-3.5-turbo 生成 | 下载 |
FLAN-Muffin | 1764800 | EN | MT | COL | 60种nlp任务 | 人工标注的数据集的收集 | 下载 |
COIG | 298428 | CN | MT | COL | 考试,翻译,价值观指令数据集搜集,基于知识图谱的反事实对话 | 自动化工具+人工验证 | 下载 |
GPT4Tools | 71446 | EN | MT | SI | a collection of tool-related instructions | gpt-3.5-turbo | 下载 |
ShareChat | 1663241 | EN | MT | MIX | general instruct | 收集ShareGPT | 下载 |
Auto CoT | EN | 下载 | |||||
MOSS | 1583595 | EN/CN | SI | 下载 | |||
ultrachat | 28247446 | EN | 下载 | ||||
StackLLaMA | todo | EN |
该集合仍在不断更新和扩增中。可在以下链接下载和查看更多数据细节:https://github.com/PhoebusSi/alpaca-CoT/tree/main/data
你可以在这里下载所有我们已经统一格式后的formatted数据。然后,将下载到的文件全部放到data folder。
你可以在这里下载训练自各种类型instruction数据的所有checkponts。然后,在generate.py
中的LoRA_Weights
设置成下载路径,即可直接运行模型的inference以查看模型效果。
我们集合中的所有数据均已被转化成相同的格式,每个样本的格式如下:
- [
- {"instruction": instruction string,
- "input": input string, # (may be empty)
- "output": output string}
- ]
注意,对于CoT数据集,我们首先使用FLAN提供的template将其从原数据转化成Chain-of-Thought的形式,之后再统一成以上格式。格式统一化的脚本可以在这里找到。
pip install -r requirements.txt
为了便于研究者们在LLM上做系统的IFT研究,我们收集了不同类型的instruction数据,集成了多种LLM,并统一了接口,可以轻松定制化想要的搭配:
--model_type
: 设置想要研究的LLM,目前已支持[llama, chatglm和bloom],其中后两者的中文能力较强,后续将会集成更多的LLMs。--data
: 设置用以IFT的数据类型,以灵活特制想要的指令遵循能力,如追求较强的推理能力可设置alpaca-cot,较强的中文能力可设置belle1.5m,较强的coding和故事创作能力可设置gpt4all,金融相关的响应能力可设置finance。--model_name_or_path
: 与--model_type
相对应,用来加载目标LLM的不同型号权重。如,要加载llama的13b的模型权重时可设置decapoda-research/llama-13b-hf。单卡
- python3 uniform_finetune.py --model_type llama --model_name_or_path decapoda-research/llama-7b-hf \
- --data alpaca-belle-cot --lora_target_modules q_proj v_proj \
- --per_gpu_train_batch_size 4 --learning_rate 3e-4 --epochs 1
-
--data
like --data ./data/alpaca.json ./data/finance.json <path2yourdata_1>
- python3 uniform_finetune.py --model_type chatglm --model_name_or_path THUDM/chatglm-6b \
- --data alpaca-belle-cot --lora_target_modules query_key_value \
- --lora_r 32 --lora_alpha 32 --lora_dropout 0.1 --per_gpu_train_batch_size 2 \
- --learning_rate 2e-5 --epochs 1
Note that load_in_8bit
is not yet suitable for ChatGLM, so batch_size must be much smaller than others.
- python3 uniform_finetune.py --model_type bloom --model_name_or_path bigscience/bloomz-7b1-mt \
- --data alpaca-belle-cot --lora_target_modules query_key_value \
- --per_gpu_train_batch_size 4 --learning_rate 3e-4 --epochs 1
Note that you can also pass the local path (where the LLM weights saved) to --model_name_or_path
. And the data type --data
can be freely set according to your interests.
多卡
- python3 -m torch.distributed.launch --nproc_per_node 4 \
- --nnodes=1 --node_rank=0 --master_addr=xxx --master_port=yyy uniform_finetune.py \
- --model_type llama --model_name_or_path decapoda-research/llama-7b-hf \
- --data alpaca-belle-cot --lora_target_modules q_proj v_proj \
- --per_gpu_train_batch_size 4 --learning_rate 3e-4 --epochs 1
- python3 -m torch.distributed.launch --nproc_per_node 4 \
- --nnodes=1 --node_rank=0 --master_addr=xxx --master_port=yyy \
- uniform_finetune.py --model_type chatglm --model_name_or_path THUDM/chatglm-6b \
- --data alpaca-belle-cot --lora_target_modules query_key_value \
- --lora_r 32 --lora_alpha 32 --lora_dropout 0.1 --per_gpu_train_batch_size 2 \
- --learning_rate 2e-5 --epochs 1
Note that load_in_8bit
is not yet suitable for ChatGLM, so batch_size must be much smaller than others.
- python3 -m torch.distributed.launch --nproc_per_node 4 \
- --nnodes=1 --node_rank=0 --master_addr=xxx --master_port=yyy \
- uniform_finetune.py --model_type bloom --model_name_or_path bigscience/bloomz-7b1-mt \
- --data alpaca-belle-cot --lora_target_modules query_key_value \
- --per_gpu_train_batch_size 4 --learning_rate 3e-4 --epochs 1
- python3 generate.py --data alpaca-belle-cot --model_type llama
-
- python3 generate.py --data alpaca-belle-cot --model_type chatglm
-
- python3 generate.py --data alpaca-belle-cot --model_type bloom
注意,saved-xxx7b
文件夹是保存LoRA weights的路径,而LLaMA的weights则会在脚本执行期间自动从Hugging Face上下载。
- top_p=0.9,
- #适度调大核采样的概率阈值,扩大候选子集,增加生成多样性。
-
- temperature=1.0,
- #之前的温度参数过低会导致生成词的概率分布极化严重,导致生成策略退化成greedy decoding。
-
- do_sample=True,
- #do_sample参数默认关闭,不开启时生成仍保持beam-search解码策略,开启后为beam-search multinomial sampling解码策略。
-
- no_repeat_ngram_size=6,
- #通过配置下一个词重复出现n-gram的概率为0,来保证没有n-gram出现两次,设置过小会抑制合理的重复,影响生成的流畅性,过大会失去作用。
-
- repetition_penalty=1.8,
- #对于之前出现过的词语,在后续预测的过程中,通过引入惩罚因子repetition_penalty降低其出现的概率。
python3 merge.py --model_type llama --size 7b --lora_dir xxx --merged_dir yyy
python3 server.py --model_type chatglm --lora_dir xxx
python3 predict.py --model_type chatglm --data for_dict_data --lora_dir xxx --result_dir yyy
python3 web.py --model_type chatglm --lora_dir xxx
注意:下图是截止到3.26日收集到的数据集的统计情况,仅作为motivation展示。目前已收集了更多数据集,如金融相关的指令数据集。 当前的instruction-finetuning数据集合主要包含以下三个部分:
alpaca_data_cleaned.json
: about 52K English instruction-following training samples.CoT_data.json
: 9 CoT datasets involving about 75k samples. (相关的CoT数据集由FLAN[7]发布)belle_data_cn.json
: about 0.5M Chinese |instruction-following training samples. (相关的中文instruction数据由BELLE[8]发布)"w/o CoT" and "w/o CN" 分别表示用在instruction-finetuning期间不采用CoT数据和Chinese instructions。
In summary, the models finetuned from our complete dataset (English, Chinese, and CoT instruction data) can significantly improve model reasoning and Chinese instruction following abilities.
[1]: LLaMA: Open and Efficient Foundation Language Models
[2]: Stanford Alpaca: An Instruction-following LLaMA model
[3]: Self-Instruct: Aligning Language Model with Self Generated Instructions
[4]: LoRA: Low-Rank Adaptation of Large Language Models
[5]: ChatGLM: An Open Bilingual Dialogue Language Model
[6]: BLOOM: A 176B-Parameter Open-Access Multilingual Language Model
[7]: FLAN: Scaling Instruction-Finetuned Language Models
[8]: BELLE: Bloom-Enhanced Large Language model Engine
[9]: GPT4All: Training an Assistant-style Chatbot with Large Scale Data Distillation from GPT-3.5-Turbo
Please cite the repo if you use the data collection, code, and experimental findings in this repo.
- @misc{alpaca-cot,
- author = {Qingyi Si, Tong Wang, Naibin Gu, Rui Liu, Zheng Lin },
- school = {Institute of Information Engineering, Chinese Academy of Sciences, Beijing, China},
- title = {Alpaca-CoT: An Instruction Fine-Tuning Platform with Instruction Data Collection and Unified Large Lnguage Models Interface},
- year = {2023},
- publisher = {GitHub},
- journal = {GitHub repository},
- howpublished = {\url{https://github.com/PhoebusSi/alpaca-CoT}},
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。