【极客技术】ColossalChat用完整RLHF技术克隆ChatGPT的开源解决方案

原文:ColossalChat: An Open-Source Solution for Cloning ChatGPT With a Complete RLHF Pipeline​​​​​​​

作者:Yang You,新加坡国立大学青年教授。他在加州大学伯克利分校获得计算机科学博士学位。

ColossalChat:一个用完整RLHF管道克隆ChatGPT的开源解决方案

像ChatGPT和GPT-4这样的大型AI模型和应用程序在全球范围内非常流行,为技术工业革命和AGI(人工通用智能)的发展奠定了基础。不仅科技巨头竞相发布新产品,学术界和工业界的许多人工智能专家也加入了相关的创业浪潮。生成式AI每天都在快速迭代,不断改进!

然而,OpenAI并没有将其模型开源,这让许多人对模型背后的技术细节感到好奇。

- 我们怎样才能紧跟潮流,参与到技术发展的浪潮中来呢?

- 我们如何降低构建和应用大型AI模型的高昂成本?

- 我们如何保护核心数据和IP不被第三方大模型api泄露?

作为当今领先的开源大型AI模型解决方案,Colossal-AI是第一个开源完整的RLHF管道,包括监督数据收集、监督微调、奖励模型训练和强化学习微调,基于LLaMA预训练模型,并共享最实用的开源项目ColossalChat,与原始的ChatGPT技术解决方案非常相似!

开源地址:https://github.com/hpcaitech/ColossalAI

它包括以下内容:

- 演示:交互式演示,在线试用,无需注册或等待列表。

- 训练代码:开源完整的RLHF训练代码,包括7B和13B模型。

- 数据集:开源的104K中英文双语数据集。

- 推理:对70亿个参数模型进行4位量化推理,只需要4GB GPU内存。

- 模型权重:在单个服务器上仅使用少量计算能力即可实现快速复制。

- 其他更大的模型、数据集和其他优化将迅速更新和添加。

价格实惠,功能强大

ColossalChat只需要不到100亿个参数就可以达到中英文双语熟练程度,在大型语言模型的基础上通过RLHF微调,达到与ChatGPT和GPT-3.5相当的效果。

例如,一个常识测验

用中文回答

写一封电子邮件

写一个算法

完整的ChatGPT克隆方案

尽管GPT系列中的模型(如ChatGPT和GPT-4)非常强大,但它们不太可能是完全开源的。幸运的是,开源社区一直在努力解决这个问题。

例如,Meta已经开源了LLaMA模型,它提供的参数大小从70亿到650亿不等。在大多数基准测试中,130亿个参数模型可以超过1750亿个GPT-3模型。但由于没有指令调优阶段,实际生成的结果并不理想。

斯坦福大学的羊驼通过调用OpenAI的API以自我指导的方式生成训练数据。这个轻量级模型只有70亿个参数,可以以很小的成本对其进行微调,从而实现与GPT-3.5这样有1750亿个参数的大型语言模型类似的会话性能。

然而,现有的开源解决方案只能被视为RLHF(从人类反馈中强化学习)第一阶段的监督微调模型,后续的校准和微调阶段没有执行。此外,Alpaca的训练数据集仅限于英语,这在一定程度上限制了模型的性能。

然而,ChatGPT和GPT-4令人印象深刻的效果是由于在训练过程中引入了RLHF,这增加了生成内容与人类价值观的一致性。

基于LLaMA模型,ColossalChat是第一个实用的开源项目,它包含了一个完整的RLHF过程,用于复制类似ChatGPT的模型,并且是最接近ChatGPT原始技术路线的项目!

训练数据集开源

ColossalChat发布了一个由大约10万对中英文问答组成的双语数据集。数据集是从社交媒体平台上的现实问题场景中收集和清理的,作为种子数据集,并使用自我指导技术进行扩展,注释成本约为900美元。与其他自学方法生成的数据集相比,该数据集包含更真实和多样化的种子数据,并包含更广泛的主题。该数据集既适用于微调,也适用于RLHF训练。通过提供高质量的数据,ColossalChat可以实现更好的对话交互,并支持中文。

RLHF算法复制

RLHF算法复制包括三个阶段:

在RLHF- stage1中,使用前面提到的数据集执行监督指示微调来微调模型。

在RLHF-Stage2中,通过对同一提示的不同输出进行手动排序,训练奖励模型分配相应的分数,然后监督奖励模型的训练。

在RLHF-Stage3中,使用了强化学习算法,这是训练过程中最复杂的部分:

在PPO部分,ColossalChat遵循两个阶段的过程:首先,制造经验阶段,它使用SFT(有监督的微调)、参与者、RM(奖励模型)和批评模型来计算生成的经验并将其存储在缓冲区中。然后是参数更新阶段,使用经验计算策略损失和价值损失。

在PTX部分,ColossalChat计算Actor的输出响应和输入语料库的响应部分之间的交叉熵损失。这种损失被用来在PPO梯度中添加预训练梯度,以保持语言模型的原始性能并防止遗忘。最后,总结了策略损耗、值损耗和PTX损耗,用于反向传播和参数更新。

快速入门

ColossalChat已经以低成本开源了基于LLaMA模型的三个阶段复制ChatGPT的完整代码。

在阶段1中,训练SFT模型:

# Training with a 4-GPU servers
colossalai run — nproc_per_node=4 train_sft.py \
— pretrain “/path/to/LLaMa-7B/” \
— model ‘llama’ \
— strategy colossalai_zero2 \
— log_interval 10 \
— save_path /path/to/Coati-7B \
— dataset /path/to/data.json \
— batch_size 4 \
— accimulation_steps 8 \
— lr 2e-5

在阶段2中,RM训练:

# Training with a 4-GPU servers
colossalai run — nproc_per_node=4 train_reward_model.py \
— pretrain “/path/to/LLaMa-7B/” \
— model ‘llama’ \
— strategy colossalai_zero2 \
— dataset /path/to/datasets

第三阶段,RL算法训练:

# Training with a 8-GPU servers
colossalai run — nproc_per_node=8 train_prompts.py prompts.csv \
— strategy colossalai_zero2 \
— pretrain “/path/to/Coati-7B” \
— model ‘llama’ \
— pretrain_dataset /path/to/dataset

一旦获得了微调后的模型权重,就可以通过量化降低推理的硬件成本,启动在线推理服务,只需要一个大约4GB内存的GPU就可以部署70亿个参数的模型推理服务。

python server.py /path/to/pretrained — quant 4bit — gptq_checkpoint /path/to/coati-7b-4bit-128g.pt — gptq_group_size 128

系统性能优化与开发加速

ColossalChat能够快速跟踪ChatGPT复制的完整RLHF过程,这在很大程度上归功于colossalai基础设施和相关优化技术的底层支持。在相同条件下,与Alpaca使用的FSDP (Fully Sharded Data Parallel)相比,ColossalChat的训练速度可以提高两倍以上。

系统基础建设 Colossal-AI

AI大模型开发系统Colossal-AI为该项目提供了基础支撑。它可以高效、快速地部署基于PyTorch的AI大模型训练和推理,降低大型AI模型应用的成本。colossa - ai是基于加州大学伯克利分校特聘教授James Demmel教授和新加坡国立大学青年教授Yang You教授的专业知识开发的。自开源发布以来,Colossol-AI多次在GitHub Trending上排名第一,GitHub上约有2万颗星,并已成功被SC、AAAI、PPoPP、CVPR和ISC等国际AI和HPC顶级会议接受为官方教程。

Zero+Gemini 减少内存冗余

Colosal - Ai支持ZeRO(零冗余优化器)来提高内存使用效率,使更大的模型能够以更低的成本容纳,而不影响计算粒度和通信效率。自动块机制可以通过提高内存使用效率、降低通信频率和避免内存碎片来进一步提高ZeRO的性能。异构内存空间管理器Gemini支持将优化器状态从GPU内存卸载到CPU内存或硬盘空间,以克服GPU内存容量的限制,扩大可训练模型的规模,降低大型AI模型应用的成本。

LoRA的低成本微调

Colossa - AI包括低秩自适应(LoRA)方法,用于大型模型的低成本微调。LoRA方法假设大型语言模型是过度参数化的,并且在微调过程中参数的变化是一个低秩矩阵。因此,这个矩阵可以分解成两个更小的矩阵的乘积。在微调过程中,固定大模型的参数,只调整低秩矩阵的参数,大大减少了训练所需的参数数量,降低了成本。

低成本量化推理

为了降低推理部署的成本,Colostal - AI使用了GPTQ 4位量化推理。在GPT/OPT/BLOOM模型上,它可以获得比传统RTN(四舍五入到最接近)量化技术更好的Perplexity结果。与普通的FP16推理相比,它可以减少75%的内存消耗,同时只牺牲了少量的吞吐量速度和Perplexity性能。

例如,对于使用4位量化推理的ColossalChat-7B, 70亿个参数模型只需要大约4GB的GPU内存来完成短序列(128个长度的生成)推断,这可以在RTX 3060等普通消费级GPU上完成,只需一行代码。

if args.quant == ‘4bit’:
model = load_quant(args.pretrained, args.gptq_checkpoint, 4, args.gptq_group_size)

如果使用高效的异步卸载技术,则可以进一步降低内存需求,从而可以在成本较低的硬件上推断出更大的模型。

限制

虽然RLHF被进一步引入,但由于计算能力和数据集有限,在某些场景下,实际性能仍有提升空间。

协作

幸运的是,与之前的大型AI模型和尖端技术被少数科技巨头垄断不同,PyTorch、hug Face和OpenAI等开源社区和创业公司也在这一波浪潮中发挥了关键作用。巨量ai借鉴开源社区的成功经验,欢迎各方共同参与建设,拥抱大模型时代!

- 您可以发布一个问题或提交一个拉请求(PR)。

- 加入colossa - ai微信或Slack群,与团队和其他用户交流。

- 请将正式提案发送至邮箱youy@comp.nus.edu.sg

致谢

ColossalChat非常感谢许多现有的作品和杰出的组织。不可思议的斯坦福羊驼项目一直是灵感的源泉。自我指导研究论文为小数据集的强大功能提供了基础。准确的训练后量化来自于GPTQ。感谢Meta AI Research发布了LLaMA模型,Meta的PyTorch和OpenAI为最强大的AI铺平了道路。

免责声明

与斯坦福羊驼相似,我们强调ColossalChat是对开源社区的贡献,仅用于学术研究目的,禁止任何商业用途:

- ColossalChat构建于LLaMA之上,授权仅用于非商业用途。

- 来自OpenAI的模型API的指令数据,以及这些数据的使用条款禁止开发竞争模型。

- 像其他大型语言模型一样,ColossalChat可能会表现出一些常见的缺陷,包括幻觉、毒性和偏见。

参考

[1] Wang, Yizhong, et al. “Self-Instruct: Aligning Language Model with Self Generated Instructions.” arXiv preprint arXiv:2212.10560 (2022).

[2] Touvron, Hugo, et al. “LLaMA: Open and efficient foundation language models.” arXiv preprint arXiv:2302.13971 (2023).

[3] Rohan, Taori, et al. “Stanford Alpaca: An Instruction-following LLaMA model.” arXiv preprint arXiv:2302.13971 (2023).

[4] Hu, Edward J., et al. “Lora: Low-rank adaptation of large language models.” arXiv preprint arXiv:2106.09685 (2021).

[5] Frantar, Elias, et al. “GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers.” arXiv preprint arXiv:2210.17323 (2022).

[6] OpenAI. 2022. ChatGPT. https://openai.com/blog/chatgpt

[7] Rajbhandari, Samyam, et al. “Zero: Memory optimizations toward training trillion parameter models.” SC20: International Conference for High Performance Computing, Networking, Storage and Analysis. IEEE, 2020.

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

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

相关文章

LLMs之Vicuna:《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality》翻译与解读

LLMs之Vicuna:《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality》翻译与解读 导读:作者提出了一个开源的聊天机器人Vicuna-13B。它是通过训练从ShareGPT收集的用户共享对话,然后在LLaMA基础模型上进行调整而产生…

2022掉队的“蔚小理”,按下了兔年加速键

配图来自Canva可画 进入2023年,各大车企又展开了新一轮的“竞速”。尽管1月份汽车整体销量出现了“阴跌”,但从各路车企发布的销量目标来看,车企对于2023依旧保持着较高的信心和预期。在一众车企中,以“蔚小理”为代表的新势力们…

推荐兔年春节的SVG模版

宝藏模版 往期推荐(点击阅读): 🤡推荐几个莫名好玩的SVG模版🤡http://mp.weixin.qq.com/s?__bizMzk0NDIyMjU0OQ&mid2247499869&idx1&sn04e2bf8de065795489bf9c391a249b5d&chksmc3257867f452f17114…

学习css3,使用代码实现一根心爱的二踢脚

2023春节快到了,虽然还在上班,但心情早已开始激动,感叹2022终将过去,喜迎2023兔年吧。让我以激动的心情,利用所学css3代码知识,实现一根心爱的二踢脚吧。 目录 1、实现思路 2、实现二踢脚的主体圆柱部分…

C语言烟花代码—兔年顶呱呱

废话不多说&#xff0c;直接上码 代码&#xff0c;歌曲&#xff0c;烟花图片都在压缩包里 链接: https://pan.baidu.com/s/1_459s0fFCAX1DcQa_BnHMQ?pwdqw12 提取码: qw12 要看效果的也可以看我抖音: 1210246294 #include<stdio.h> #include<easyx.h> #inclu…

Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉

Python跳跳兔小游戏源代码&#xff0c;兔年必玩小游戏&#xff0c;兔年大吉&#xff0c;小兔子跳跳&#xff0c;按空格键向上跳跃&#xff0c;按键盘方向键进行左右移动&#xff0c;以避开飞弹&#xff0c;以防被炸&#xff0c;还可以捡到火箭道具哦。 完整程序下载地址&#…

小程序源码:2022虎年新UI春节送祝福

这是一款网友用以前小编发过的一款端午送祝福改的一款小程序 里面的背景图包括祝福语都已经修改成与虎年相关的内容了 总体来说找的背景图还是可以的,不过有些地方和细节小编也给完善了一下 然后小编测试的时候发现还没有流量主,所以小编也给加了几个流量主进去 到时候大家直…

2023兔年头像框制作生成小程序源码+多模板/抓住红利

正文: 2023了&#xff0c;到了兔年那么也该换新的头像框拉&#xff0c;今天给大家带来兔年的头像框制作小程序&#xff0c;支持一键获取头像支持用户上传头像&#xff0c;丰富的模板&#xff0c;不只于兔年头像框还有其它的&#xff0c;早点给大家发出来也好让大家早点抓住这波…

头像生成器微信小程序代码

微信小程序需要wxml&#xff0c;wxss&#xff0c;js三种类型代码 1&#xff0c;wxml <view class"container"><view class"title">兔年头像生成器</view><view class"description">选择一张图片&#xff0c;生成你的兔…

Python生成兔年祝福词云图,快拿去发给小姐姐吧!祝大家兔年大吉,桃花运多多

今年是兔年&#xff0c;所以今年我们拜年主题就是以兔为主&#xff0c;为了能够在兔年拜年做好准备祝福语可是少不了&#xff0c;发太多的文字已经让人们感到厌烦&#xff0c;所以不如利用自己所学只是做一张兔年的词云图&#xff0c;来去给小姐姐们拜个年。 话不多说&#xff…

2023最新兔年新春好友送祝福小程序源码+文案很多

正文: 去年的时候也发过虎年的送祝福小程序&#xff0c;这不马上2023兔年了所以给大家发兔年的送祝福小程序&#xff0c;早点发也好让大家早点抓住新春的流量福利。 程序: wwxras.lanzoum.com/iPWHz0l7t5ra 图片:

【OpenVI】AIGC纪元,兔年AI绘画实践

团队模型、论文、博文、直播合集&#xff0c;点击此处浏览 一、背景 AIGC指的是AI Generated Content&#xff0c;即由AI创作的内容&#xff0c;是继UGC(User Generated Content用户创造内容&#xff0c;如抖音b站等平台)、PGC(Professional Generated Content专业生产内容&…

2023 兔年春节倒计时微信小程序源码

马上也到2023年兔年了 增加一下喜庆,其实这种小程序还是有流量的 每天看一看倒计时,数着过年 另外还有一个简单的绘画功能

2023兔年新春好友送祝福微信小程序源码

源码简介&#xff1a; 马上2023兔年了所以站长给大家发兔年的送祝福小程序 早点发也好让大家早点抓住新春的流量福利 好了不多说,感兴趣的抓紧下载吧! 原文链接&#xff1a;2023兔年新春好友送祝福微信小程序源码-主题模板站 源码截图&#xff1a;

2023兔年新年春节倒计时微信小程序源码

简介&#xff1a; 马上也到2023年兔年了 给大家分享一个春节倒计时的小程序 增加一下喜庆,其实这种小程序还是有流量的 每天看一看倒计时,数着过年 另外还有一个简单的绘画功能 下方是小编的测试演示图! https://www.skpan.cn/bBibst11KsJ 图片&#xff1a;

2023兔年春节倒计时小程序源码

源码简介&#xff1a; 马上到2023年兔年了 站长给大家分享一个春节倒计时的小程序 增加一下喜庆,其实这种小程序还是有流量的 每天看一看倒计时,数着过年 另外还有一个简单的绘画功能 源码截图&#xff1a;

这么好看的客服组件,还是觉得接入ChatGPT,把它放在博客中那就完美了

我们在使用ChatGPT时&#xff0c;它的返回方式是采用流式回复。感觉这个效果不错。之前做的全都是的等全部结果请求完成&#xff0c;再一次性返回给用户。今天就通过流式回复的效果重写之前的程序。 前端 前端采用一个网页版的客服组件&#xff0c;整体的效果如下&#xff1a;…

C#接入ChatGPT编程实际应用

一&#xff0c;介绍ChatGPT的API可以在前端&#xff0c;以及一些后端进行API的接入&#xff0c;本篇主要介绍基于ChatGPT的API的C#接入研究。 学习更多的科技知识可以来知新文学 最火的莫过于ChatGPT的相关讨论&#xff0c;这个提供了非常强大的AI处理&#xff0c;并且整个平…

Java快速接入Chatgpt简单案例

Chatgpt介绍 ChatGPT是一种由OpenAI训练的大型语言模型。它的原理是基于Transformer架构&#xff0c;通过预训练大量文本数据来学习如何生成人类可读的文本&#xff0c;然后通过接受输入并生成输出来实现对话。 ChatGPT的用途非常广泛&#xff0c;可以用于自然语言处理&#xf…