特制自己的ChatGPT:多接口统一的轻量级LLM-IFT平台

news/2024/4/28 17:32:10/文章来源:https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/129905357

aeb077ff91071a92b3a788cad2258dc0.gif

©PaperWeekly 原创 · 作者 | 佀庆一

单位 | 中科院信息工程研究所

研究方向 | 视觉问答

6145df658fb8b5efd7b7cfc0e5e55832.png

项目简称:

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

f1d88781c88634d8b8df83b53bfa47e6.png


ChatGPT背后的技术

LLM:(Large Language Models)指经过大规模预训练且体量较大的语言模型,一般是 transformer-based 模型。

IFT:(Instruction Fine-Tuning)指令微调,指令是指用户传入的目的明确的输入文本,指令微调用以让模型学会遵循用户的指令。 

CoT:(Chain-of-Thought)指令形式的一种特殊情况,包含 step-by-step 的推理过程。如下图蓝色部分所示。

522d4eabf033923ea04c32f40f1b883a.jpeg

d7a86d98ec99607a031c80a893979c38.png

定位

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、ChatGLM、Bloom 在内的多种 LLMs 集成进来统一接口。

在这基础上,我们基于 LLaMA 给出了深入细致的实证研究,以供未来工作参考。据我们所知,我们是首个将 CoT 拓展进 Alpaca 的工作,因此项目简称为 "Alpaca-CoT"。 

热烈欢迎您向我们提供任何未被本项目收集的 instruction-tuning 及各类 tasks 数据集(或其来源)。我们将:

  • 将这些数据收录并进行统一格式化处理,并注明来源;

  • 用这些数据集 instruction finetune 一系列的 LLM(如 llama, ChatGLM 等),并开源其 checkpoint;

  • 进行广泛的实证研究以探究新收录的数据集的作用。 

同时也欢迎您向我们指出(general 或特定能力上)表现不错的开源 LLM,我们将:

  • 将这些 LLM 集成到我们的平台中,可以通过超参切换不同的 LLM; 

  • 开源该模型在我们框架下 IFT 后的 checkpoint。 

我们希望我们的项目能够为大型语言模型的开源过程做出适度的贡献,并降低 NLP 研究人员上手 LLM 相关研究的门槛。

286af425b45322e94fdf088a07e51fec.png

概述

近期,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 instruction-finetuning 数据对 LLaMA 进行了微调,达到了客观的效果。然而,目前该方向的研究仍然面临着以下四个挑战:

  • 即便仅对 7b 大小的 LLM fientune,依然对计算资源有着较高的要求;

  • 用于 instruction finetuning 的开源数据集较少,缺少资源整合;

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

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

为此,我们提出了 Alpaca-CoT 项目,该项目结合了相关的近期前沿技术,具有以下优势: 

  • 仅需要较低计算资源即可高效完成对 LLaMA 的微调。7b, 13b 和 30b 版本的 LLaMA 模型均可在单卡 80G A100 上完成训练。我们的代码主要修改自 Alpaca-LoRA,其使用了 low-rank adaptation (LoRA) [4], PEFT 和 bitsandbytes 等技术来达到降低计算资源需求的效果;

  • 我们发布的模型显著提升了 CoT (reasoning) 能力

  • 我们发布的模型显著提升了对中文指令的响应能力

  • 维护了一个仍在不断扩大规模的 intruction-finetuning 的数据集集合。该集合包含了中文、英文和 CoT、code、story 等 instruction 数据。同时,我们也维护了一个训练自各种 instruction 数据集的模型 checkpoint 集合。

  • 集成了多种 LLMs 并统一了调用接口,可通过超参轻松切换。目前包含 LLaMA, ChatGLM [5] 和 Bloom [6],后续将持续加入更多,以供研究者们轻松调用和对比不同 LLMs。

  • 提供了详尽透彻的 Empirical Study,这里的 findings 可能会对促进未来 LLM 探索有一定的参考价值。

a4b906206f50efbbe8d5ba27a2a1ca4d.png


多接口统一的开源平台

为了便于研究者们在 LLM 上做系统的 IFT 研究,我们收集了不同类型的 instruction 数据,集成了多种 LLM,并统一了接口,可以轻松定制化想要的搭配:

  • --model_type: 设置想要研究的LLM,目前已支持 [llama, chatglm 和 bloom],其中 llama 的英文能力较强,chatglm 的中文能力较强,bloom 关注多语种能力,后续将会集成更多的 LLMs。

  • --data: 设置用以 IFT 的数据类型,以灵活特制想要的指令遵循能力,如追求较强的推理能力可设置 alpaca-cot,较强的中文能力可设置 belle1.5m,金融相关的响应能力可设置 finance,code 和 story 生成可设置 gpt4all。 

  • --model_name_or_path: 与 --model_type 相对应,用来加载目标 LLM 的不同型号权重。如,要加载 llama 的 13b 的模型权重时可设置 decapoda-research/llama-13b-hf。

你可以在这里下载训练自各种类型 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 以查看模型效果。

3cc731a0c931e0394e02e3a54f2e388c.png


指令数据集合

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

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

数据统计

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

20d79b64230ef9296ba3bcd532abd5d1.png

当前的 instruction-finetuning 数据集合主要包含以下三个部分:

alpaca_data_cleaned.json: 包含 5 万左右英文指令数据;

CoT_data.json: 包含 9 个 CoT 数据集,共 7 万条左右数据(相关的数据集由 FLAN [7] 发布,我们统一了数据 format);

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/alpaca-CoT/blob/main/data/origin_cot_data/formating.py

您也可以标注或生成(e.g., 采取 self-instruct 的做法)符合自己业务/专业需求的特定方向的 IFT 数据。如果同意开源且质量较好,我们会收集到我们维护的数据指令集合中并注明来源:

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

5b3007b6f43325ce8e075d13b105626f.png


模型效果

关于CoT和Chinese Instructions的消融对比

"w/o CoT" 和 "w/o CN" 分别表示用在 instruction-finetuning 期间不采用 CoT 数据和 Chinese instructions。 

下图是需要推理能力的问题上的表现:

a5357b061939514e3a11ac85498edc49.png

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

546ea48020fa32840a9bf2864c7cd54a.png

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

4c036dea3af926ca31560828a9a2e8ec.png

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

更多能力展示

dc38776fea5e4868f306a0934164c608.png

2670af6ecbb9c2e762a946e2b26ed865.png

ad6bdf2dffd4d28b83dc702e0f286090.png


对比实验


CoT能力

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

06d252147f55dc227c9d8dc34966198e.png

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

遵循中文指令的能力

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

b6e3a0d752b9753f349c6611486656b1.png

其中 Alpaca 未使用任何中文指令数据集,Belle 在更多的中文指令数据集中微调关注 multiple-lingual 的大语言模型 BLOOM。

可以看出,原模型 Alpaca 在第一个例子中无法准确识别中文指令,在第三个例子中无法用中文响应中文指令。而我们的模型表现基本与 Belle 持平。后续,我们将会引入更多中文指令数据,同时我们的 repository 将分出一个 branch 专门探究中文交互能力。

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

6a0a1634ae53cc063722cdd667f07802.png

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

2762d2b53f15ed83906a01af507195bc.png

总结

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

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

outside_default.png

参考文献

outside_default.png

[1]. LLaMA: Open and Efficient Foundation Language Models https://arxiv.org/abs/2302.13971

[2]. Stanford Alpaca: An Instruction-following LLaMA model https://github.com/tatsu-lab/stanford_alpaca

[3]. Self-Instruct: Aligning Language Model with Self Generated Instructions https://arxiv.org/abs/2212.10560

[4]. LoRA: Low-Rank Adaptation of Large Language Models https://arxiv.org/pdf/2106.09685.pdf

[5]. ChatGLM: An Open Bilingual Dialogue Language Model https://github.com/THUDM/ChatGLM-6B

[6]. BLOOM: A 176B-Parameter Open-Access Multilingual Language Model https://arxiv.org/abs/2211.05100

[7]. FLAN: Scaling Instruction-Finetuned Language Models https://arxiv.org/abs/2210.11416

[8]. BELLE: Bloom-Enhanced Large Language model Engine https://github.com/LianjiaTech/BELLE

c50b384da74330f0149e27f2d889aeeb.jpeg

更多阅读

e0ca3a1ed9b1499db2e24d942096cc48.png

1457424aa244e473443a5f3a5d0e9791.png

25d2f7abe4911ac905a4d48354e91e62.png

25ed0c3f96589e78523dc451bf62d4f4.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

99e4b86f3e42ee6e6e242d7736e289f3.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

d73058e55f653ece99b7d1a9dce12c2e.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_244.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVPR2023论文速递(2023.3.23)!已接入ChatGPT总结!共26篇!

整理:AI算法与图像处理CVPR2023论文和代码整理:https://github.com/DWCTOD/CVPR2023-Papers-with-Code-Demo欢迎关注公众号 AI算法与图像处理,获取更多干货:大家好, 最近正在优化每周分享的CVPR论文, 目前考虑按照不同类别去分类…

ChatGPT详解

导读:ChatGPT出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型(LLM,Large Language Model)效果能好成这样;惊醒是顿悟到我们对LLM的认知及发展理念,距离世界最先进的想法,差得有点远。我属于既惊喜…

【JAVA】让 ChatGPT 来浅说 AQS

前言又迎来了一年一度的金三银四,虽然说今年的大环境不好,但是招聘还是在火热进行中。面试过 Java 工程师的小伙伴都知道,Java 中的 AQS 是面试高频题,面试官上来就直接了当地问,AQS 知道是什么吧,来讲讲它…

使用 ChatGPT 生成完整的 Node.js API

借助由 OpenAI 训练的大型语言模型 ChatGPT,我们可以创建一个根据我们的特定需求量身定制的 Chrome 扩展程序,并且可以帮助简化我们的日常任务,而无需我们自己编写一行代码。让我们看看这是如何工作的……在此分步指南中,我们将向…

中科大学术ChatGPT镜像

中科大学术ChatGPT镜像 中科大学术版ChatGPT镜像,论文代码一套流,仅限群里使用:https://huggingface.co/spaces/cfwef/gpt ,如果想要分析给他人,请自行克隆部署。 之前在我这购买过付费版镜像(原镜像暂未恢…

ChatGPT技术解构

ChatGPT的训练主要分为三个步骤,如图所示: Step1: 使用有监督学习方式,基于GPT3.5微调训练一个初始模型;训练数据约为2w~3w量级(根据InstructGPT的训练数据量级估算,参照https://arxiv.org/pdf…

全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门语法纠正应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门语法纠正应用场景Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字&#x…

已解决chatgpt报错出了些问题。如果此问题仍然存在,请通过我们的帮助中心 help.openai.com 与我们联系。

已解决chatgpt报错出了些问题。如果此问题仍然存在,请通过我们的帮助中心 help.openai.com 与我们联系。 文章目录报错问题报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错报错问题 粉丝群里面的一个小伙伴遇到问题跑来私信我,想用chatgpt&am…

【原创】什么是chatGPT?Unity结合OpenAI官方api实现类似chatGPT的AI聊天机器人

一、什么是ChatGPT 最近chatGPT爆火,网络铺天盖地的各种文章视频,各种牛逼之声。倒算不上第一时间使用,发布隔了一周多,才从同事那里听说了这么个神奇的技术。这周阳了,持续发烧在家,忙着养病也没时间去了解…

ChatGPT 在做什么… 以及它为何发挥作用?最新关于ChatGPT的论文速递

作者:Stephen Wolfram,发表于 2023年2月14日原文链接:https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/文章字数:约 3.4 万字 —— 建议先点赞、收藏后阅读……ChatGPT 能够自动生成一些…

ChatGpt 让你的编程更简单 - Get More Done in Less Time

1 引言“AI will not replace your job, people who using AI will” - twitter userChatGpt不必多说了,一句话总结:”YYDS“。最近探索了一下在Code方面它能从哪些方面帮助我们,目前为止对我来说,具体有这么几个方面:…

ChatGPT几个有趣的玩法

文章目录1、开启一个VM2、以……的风格发文3、自动写代码用脚本编写一个多进程ping主机的程序3、用chatGPT学习loki4、客制化脚本生成一个自动建立软连接的脚本5、vscode 插件1、开启一个VM 在caht中输入一下内容 I want you to act as a Linux terminal. I will type comman…

chatgpt-4生成代码,看这一篇就够了

chatgpt-4生成代码,看这一篇就够了cursor示例pythondbscan 聚类voronoi 图像分割手写数字识别圆柱绕流matlab表白程序常微分方程常微分方程组2048小游戏C/C正则表达式匹配删除有序数组中的重复项n 皇后问题总结今天发现一个OpenAI的partnership基于gpt-4开发的好玩的…

ChatGPT成精了

ChatGPT 是OpenAI 发布的一个全新的聊天机器人模型。它到底有多厉害呢?我注册后体验了一下,你会感觉背后有个真人跟你在聊天。例如: 代码不仅可以运行,还特么有每行带有中文注释,这完全是降维打击StackOverflow。 再来…

ChatGPT | 分享论文 Rebuttal、Review 时可能会用到的 Prompt

ChatGPT 可以帮助润色学术论文,助力搞科研! 论文 Rebuttal, Review 过程中可能使用的一个 Prompt: Prompt:I want you to act as an English translator, spelling corrector and improver. I will speak to you in any language…

技巧|使用Chatgpt练习多种类型口语

练雅思口语——其实练什么语言、什么形式的口语都可以。 ChatGPT作为一款聊天机器人,自然可以用于对练口语——只要你的输入和它的输出都变换为语音的形式即可。 一、语音插件 首先,谷歌搜索voice control for chatgpt,点击第一个chrome……

ChatGPT的API接口的模型有多少种?这些模型都有什么功能或者在应用场景上有什么区别?【模型介绍使用与调用接口方法】

OpenAI 的 API 接口提供了多个 GPT-3 模型,每个模型针对不同的应用场景和任务进行了优化。以下是目前可用的 GPT-3 模型: davinci: 这是最大和最全面的模型,具有最高的准确性和灵活性,用于多种自然语言处理任务,如文本生成、对话系统、翻译等。 curie: 这个模型比 davin…

ChatGPT 通过谷歌算法面试,年薪 18.3 万美金

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 声明:此图片由 MidJourney 生成 未经训练,不属于任何真实人物 大家好,我是小彭。 2023 开年以来,全球媒体最火爆的热点莫过于一…

ChatGPT必将在文档处理领域大有所为,未来以来,拭目以待【文末送书】

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

ChatGPT与网络安全的跨时代对话

前言 ChatGPT:是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。G…