图奕科技

网站正在维护中,请稍后访问。

联系电话:15283161253

技术支持: 优河马

新闻资讯

关注图奕科技最新动态,了解行业最新成果

特制自己的ChatGPT:多接口统一的轻量级LLM-IFT平台
2023-05-12 17:03:44

图片

项目简称:

Alpaca-CoT(当羊驼遇上思维链)

项目标题:

Alpaca-CoT: An Instruction Fine-Tuning Platform with Instruction Data Collection and Unified Large Language Models Interface

项目链接:

https://github.com/PhoebusSi/Alpaca-CoT

 

 
图片

 

ChatGPT背后的技术

 
LLM:(Large Language Models)指经过大规模预训练且体量较大的语言模型,一般是 transformer-based 模型。
 
IFT:(Instruction Fine-Tuning)指令微调,指令是指用户传入的目的明确的输入文本,指令微调用以让模型学会遵循用户的指令。 
 
CoT:(Chain-of-Thought)指令形式的一种特殊情况,包含 step-by-step 的推理过程。如下图蓝色部分所示。
 
图片

 

图片

定位

Alpaca-CoT旨在探索如何通过instruction-tuning引导LLM具备交互和instruction-following能力,以推进LLMs的开源进程和降低相关研究和使用成本。该项目采用多种LLMs,并广泛收集不同类型的instruction数据集,特别是Chain-of-Thought,并提供深入细致的实证研究。

Alpaca-CoT计划将这些数据集instruction finetune一系列的LLM,并开源模型的checkpoint,同时也会集成其他表现出色的开源LLMs,并通过超参数切换不同的LLMs。

我们希望该项目能够为大型语言模型的开源过程做出贡献,并降低NLP研究人员上手LLM相关研究的门槛。欢迎您向我们提供未被收集的instruction-tuning及各类tasks数据集,并推荐表现出色的开源LLMs。

图片

概述

近期,LLaMA在zero-shot和few-shot方面表现出了惊人的能力,仅需较少的参数即可与GPT-3.5相当(其中LLaMA-13B明显优于GPT-3(175B),而LLaMA-65B则与PaLM-540MB性能相当),这大大降低了训练、微调和使用大型语言模型的成本。

为了提高LLaMA的instruction-following能力,斯坦福大学的Alpaca团队通过self-instruct的方式生成了52K英文instruction-finetuning数据,并对LLaMA进行了微调,取得了客观的效果。然而,该方向的研究目前面临以下四个挑战:

1.即便仅对7b大小的LLM进行finetune,依然对计算资源有着较高的要求。

2.用于instruction finetuning的开源数据集较少,缺乏资源整合。

3.缺少统一的平台,可以轻松切换不同的LLMs和不同类型的IFT数据。

4.缺乏各instruction类型带来的影响的实证研究,如响应中文的能力和CoT能力。

为了解决以上问题,Alpaca-CoT项目结合了相关前沿技术,具有以下优势:

1.高效地对LLaMA进行微调,仅需较低计算资源,就可以在单卡80G A100上完成训练。

2.提升了CoT(reasoning)能力和对中文指令的响应能力,并维护了一个持续扩大规模的instruction-finetuning数据集合,其中包括中文、英文、CoT、code、story等instruction数据,并维护一个训练自各种instruction数据集的模型checkpoint集合。

3.集成并统一调用接口,可通过超参轻松切换多种LLMs,包括LLaMA、ChatGLM和Bloom。

4.提供了详尽透彻的Empirical Study,其中的findings可能对未来LLM的探索具有一定的参考价值。

 

 

图片

 

多接口统一的开源平台

 

为了方便研究者进行LLM上的IFT研究,我们提供了不同类型的instruction数据集,并集成了多种LLM并统一了接口,让研究者可以方便地选择适合自己的研究需求和兴趣。可以通过设置不同的超参来选择LLM类型、数据类型以及加载相应的权重,例如可以选择llama、chatglm或bloom作为LLM类型,选择alpaca-cot、belle1.5m、finance或gpt4all等数据集作为数据类型,然后通过设置--model_name_or_path参数来加载对应的模型权重。

 
你可以在这里下载训练自各种类型 instruction 数据的所有 checkpoints:
https://huggingface.co/QingyiSi/Alpaca-CoT/tree/main

 

 

# 单卡
CUDA_VISIBLE_DEVICES=0 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 

# 多卡
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 

 

然后,在 gernerate.py 中的 LoRA_WEIGHTS 设置成下载路径,即可直接运行模型的 inference 以查看模型效果。

 

图片

 

指令数据集合

 
该集合仍在不断更新和扩增中。可在以下链接下载和查看更多数据细节:

https://huggingface.co/datasets/QingyiSi/Alpaca-CoT

 

数据统计

注意:下图是截止到 2.26 日收集到的数据集的统计情况,仅作为 motivation 展示。目前已收集了更多数据集,如金融相关,code 生成相关的指令数据集。

 
图片

目前,instruction-finetuning的数据集主要由以下三个部分组成:

  1. alpaca_data_cleaned.json: 这个数据集包含了5万左右的英文指令数据。

     

  2. CoT_data.json: 这个数据集包含了9个CoT数据集,总共有7万左右的数据。这些相关的数据集是由FLAN [7]发布的,我们统一了数据格式。

     

  3. belle_data_cn.json: 这个数据集包含了50万左右的中文指令数据。相关的中文instruction数据由BELLE [8]发布。

 

数据下载

 

你可以在这里下载所有我们已经统一格式后的 formatted 数据:

https://huggingface.co/datasets/QingyiSi/Alpaca-CoT/tree/main

然后,将下载到的文件全部放到 data folder:

https://github.com/PhoebusSi/alpaca-CoT/tree/main/data

 

 

数据格式

 

我们集合中的所有数据均已被转化成相同的格式,每个样本的格式如下:

 
[
{"instruction": instruction string,
"input": input string, # (may be empty)
"output": output string}
]

 

 

 

请注意,对于CoT数据集,我们首先使用FLAN提供的template将其从原始数据转化为Chain-of-Thought的形式,并将其统一成了以上格式。下面是相关链接:

https://github.com/google-research/FLAN/blob/main/flan/v2/templates.py

 

这里是格式统一化的脚本:

https://github.com/PhoebusSi/alpacaCoT/blob/main/data/origin_cot_data/formating.py

 

如果您想标注或生成符合自己业务/专业需求的特定方向的IFT数据,我们也欢迎您贡献数据集。只要同意开源且质量较好,我们就会将它们收集到我们维护的数据指令集合中,并注明来源。

https://huggingface.co/datasets/QingyiSi/Alpaca-CoT/tree/main
 

 

图片

 

模型效果

 
关于CoT和Chinese Instructions的消融对比
 
"w/o CoT" 和 "w/o CN" 分别表示用在 instruction-finetuning 期间不采用 CoT 数据和 Chinese instructions。 
 
下图是需要推理能力的问题上的表现:

 

图片
下图是需要遵循中文指令的问题上的表现:

 

图片
下图是在较复杂问题上的表现:

 

图片
可以从以下样例看出,从我们完整数据集 collection(英文、中文和 CoT 指令数据)中微调得到的模型可以显著提高reasoning能力和响应中文指令的能力。
 
更多能力展示

 

图片

图片

图片

 

对比实验

 

CoT能力

 
下图是引入 CoT 能力前(原 Alpaca)后(Ours w/CoT)的表现对比:

 

图片

可以看出,我们的模型不仅可以给出准确的答案,而且还可以给出对应的思考过程。
 

遵循中文指令的能力

 
下图是引入遵循中文指令能力前后在中文指令上的表现对比:

 

图片

 

可以看出,Alpaca原始模型在第一个例子中无法准确识别中文指令,在第三个例子中也无法用中文响应中文指令。而经过我们的微调后,我们的模型表现基本与Belle持平。需要说明的是,我们的Alpaca模型没有使用任何中文指令数据集,而Belle使用了更多的中文指令数据集,并对多语言的大型语言模型BLOOM进行了微调。

 

未来,我们将引入更多中文指令数据,同时我们的repository将分出一个branch专门探究中文交互能力。

 

下面是引入遵循中文指令能力前后在英文指令上的表现对比图:

 

 

图片

 

可以看出,在中文指令数据集上微调后,并不会对模型 follow 英文指令造成负面影响。
 
 

图片

总结

 

在LLM上进行IFT研究是一个令人印象深刻的方向,其加速了ChatGPT的复现进程。然而,目前相关的研究由于instruction数据集的开源工作较少,以及大模型训练需要极高计算资源等原因,仍处于起始阶段,并几乎被OpenAI、微软、Google、Meta等大公司所垄断。

 

我们的工作Alpaca-CoT已经在解决这两个问题上迈出了一小步:基于Alpaca-LoRA的技术路线(单机可训),将不同的LLM集成进来,以降低不同LLM的计算资源消耗。同时,持续收集和统一格式化指令数据,搭建更方便的多接口统一的研究平台。我们欢迎研究者在我们的平台上开展研究,共同努力加速ChatGPT的复现进程!

该网站由优河马创建
该网站由优河马创建 立即创建