0门槛克隆ChatGPT方案再升级,开源模型复现,在线体验无
机器之心发布
机器之心编辑部
以ChatGPT、GPT4为代表的AI应用和大模型火爆全球,被视为开启了新的科技工业革命和AGI(通用人工智能)的新起点。不仅科技巨头间你追我赶,争相推出新品,许多学术界、工业界的AI大佬也纷纷投入投身相关创业浪潮。生成式AI正以天为单位,快速迭代,持续狂飙!
然而,OpenAI并未将其开源,它们背后的技术细节有哪些?如何快速跟进、追赶并参与到此轮技术浪潮中?如何降低AI大模型构建和应用的高昂成本?如何保护核心数据与知识产权不会因使用第三方大模型API外泄?
作为当下最受欢迎的开源AI大模型解决方案,ColossalAI率先建立了包含监督数据集收集监督微调奖励模型训练强化学习微调的完整RLHF流程,以LLaMA为基础预训练模型,推出ColossalChat,是目前最接近ChatGPT原始技术方案的实用开源项目!
开源地址:https:github。comhpcaitechColossalAI
包含以下内容:
1。Demo:可直接在线体验模型效果,无需注册或waitinglist
2。训练代码:开源完整RLHF训练代码,已开源至含7B和13B两种模型
3。数据集:开源104K中、英双语数据集
4。推理部署:4bit量化推理70亿参数模型仅需4GB显存
5。模型权重:仅需单台服务器少量算力即可快速复现
6。更大规模模型、数据集、其他优化等将保持高速迭代添加
平价模型,强大能力
ColossalChat仅需不到百亿参数,在大语言模型的基础上进行RLHF微调,即可掌握中、英双语能力,达到与ChatGPT和GPT3。5类似的效果。
例如常识问答:
中文应答:
写一封邮件:
写个算法:
完整ChatGPT克隆方案
尽管ChatGPT和GPT4等GPT系列模型非常强大,但是它们不太可能被完全开源。幸运的是,开源社区一直在不断努力。
例如Meta开源了LLaMA模型,该模型的参数量从70亿到650亿不等,130亿参数即可胜过1750亿的GPT3模型在大多数基准测试的表现。但是由于没有被指令微调(instructtuning),因此实际生成效果不够理想。
斯坦福的Alpaca通过调用OpenAIAPI,以selfinstruct方式生成训练数据,使得仅有70亿参数的轻量级模型以极低成本微调后,即可获得媲美GPT3。5这样千亿参数的超大规模语言模型的对话效果。
但是现有开源方案都可以被视为只得到了人类反馈强化学习(RLHF)中第一步的监督微调模型,没有进行后续的对齐和微调工作。同时Alpaca的训练数据集过小,语料只有英文,也在一定程度上限制了模型的性能。
而ChatGPT和GPT4的惊艳效果,还在于将RLHF引入训练过程,使得生成内容更加符合人类价值观。
RLHF的三个阶段
基于LLaMA模型,ColossalAI首个开源包含完整RLHF流程的类Chat模型复现方案ColossalChat,是目前最接近ChatGPT原始技术路线的实用开源项目!
训练数据集开源
ColossalChat开源了包含约10万条问答的中、英双语数据集。该数据集收集并清洗了社交平台上人们的真实提问场景作为种子数据集,利用selfinstruct技术扩充数据,花费约900美元进行标注。对比其他selfinstruct方法生成的数据集,该数据集的种子数据更加真实、丰富,生成的数据集涵盖的话题更多。该数据可以同时用于微调和RLHF训练。通过高质量的数据,ColossalChat能进行更好地对话交互,同时支持中文。
ColossalChat数据集收集流程
RLHF算法复现
RLHFStage1是supervisedfintuning,即使用上文提到的数据集进行模型微调。
RLHFStage2训练了奖励模型,它通过对于同一个prompt的不同输出进行人工排序,得到对应分数,监督训练奖励模型。
RLHFStage3使用了强化学习算法,是训练流程中最复杂的一部分:
RLHFStage3算法流程图
在PPO部分,ColossalChat分为两个阶段进行:首先是MakeExperience部分,利用SFT、Actor、RM、Critic模型计算生成Experience存入buffer中;之后是参数更新部分,利用Experience计算策略损失和价值损失。
在PTX部分,ColossalChat计算Actor输出response和输入语料的回答部分的交叉熵损失函数,用来在PPO梯度中加入预训练梯度,以保持语言模型原有性能防止遗忘。最后将策略损失、价值损失和PTX损失加和进行反向传播和参数更新。
快速上手
ColossalChat开源了基于LLaMA模型,复现训练ChatGPT三个阶段的完整代码。
第一阶段,训练SFT模型:Trainingwitha4GPUserverscolossalairunnprocpernode4trainsft。pypretrainpathtoLLaMa7Bmodelllamastrategycolossalaizero2loginterval10savepathpathtoCoati7Bdatasetpathtodata。jsonbatchsize4accimulationsteps8lr2e5
第二阶段,训练奖励模型:Trainingwitha4GPUserverscolossalairunnprocpernode4trainrewardmodel。pypretrainpathtoLLaMa7Bmodelllamastrategycolossalaizero2datasetpathtodatasets
第三阶段,使用RL训练:Trainingwitha8GPUserverscolossalairunnprocpernode8trainprompts。pyprompts。csvstrategycolossalaizero2pretrainpathtoCoati7Bmodelllamapretraindatasetpathtodataset
在获得最终模型权重后,还可通过量化降低推理硬件成本,并启动在线推理服务,仅需单张约4GB显存的GPU即可完成70亿参数模型推理服务部署。pythonserver。pypathtopretrainedquant4bitgptqcheckpointpathtocoati7b4bit128g。ptgptqgroupsize128
系统性能优化与开发加速
ColossalChat能够快速跟进ChatGPT完整RLHF流程复现,离不开AI大模型基础设施ColossalAI及相关优化技术的底座支持,相同条件下训练速度相比Alpaca采用的FSDP(FullyShardedDataParallel)可提升三倍左右。
系统基础设施ColossalAI
AI大模型开发系统ColossalAI为该方案提供了基础支持,它可基于PyTorch高效快速部署AI大模型训练和推理,从而降低AI大模型应用的成本。ColossalAI由加州伯克利大学杰出教授JamesDemmel和新加坡国立大学校长青年教授尤洋领导开发。自从它开源以来,ColossalAI已经多次在GitHub热榜位列世界第一,获得GitHubStar约两万颗,并成功入选SC、AAAI、PPoPP、CVPR、ISC等国际AI与HPC顶级会议的官方教程。
减少内存冗余的ZeROGemini
ColossalAI支持使用无冗余优化器(ZeRO)提高内存使用效率,低成本容纳更大模型,同时不影响计算粒度和通信效率。自动Chunk机制可以进一步提升ZeRO的性能,提高内存使用效率,减少通信次数并避免内存碎片。异构内存空间管理器Gemini支持将优化器状态从GPU显存卸载到CPU内存或硬盘空间,以突破GPU显存容量限制,扩展可训练模型的规模,降低AI大模型应用成本。
使用LoRA低成本微调
ColossalAI支持使用低秩矩阵微调(LoRA)方法,对AI大模型进行低成本微调。LoRA方法认为大语言模型是过参数化的,而在微调时,参数改变量是一个低秩矩阵。因此,可以将这个矩阵分解为两个更小的矩阵的乘积。在微调过程中,大模型的参数被固定,只有低秩矩阵参数被调整,从而显著减小了训练所需的参数量,并降低成本。
低成本量化推理
GPTQ量化
为降低推理部署成本,ColossalAI使用GPTQ4bit量化推理。在GPTOPTBLOOM类模型上,它比传统的RTN(rounttonearest)量化技术能够获得更好的Perplexity效果。相比常见的FP16推理,它可将显存消耗降低75,只损失极少量的吞吐速度与Perplexity性能。
以ColossalChat7B为例,在使用4bit量化推理时,70亿参数模型仅需大约4GB显存即可完成短序列(生成长度为128)推理,在普通消费级显卡上即可完成(例如RTX3060Laptop),仅需一行代码即可使用。ifargs。quant4bit:modelloadquant(args。pretrained,args。gptqcheckpoint,4,args。gptqgroupsize)
如果采用高效的异步卸载技术(offload),还可以进一步降低显存要求,使用更低成本的硬件推理更大的模型。
ColossalChat和Alpaca的区别
1。ColossalChat开源了第一个完整的RLHFpipeline,斯坦福Alpaca没有做RLHF,也就是没有做Stage2和Stage3。
2。ColossalChat采用了更多的指令数据,质量更好,范围更大,并使用强化学习做alignment使回答更接近人类。
3。ColossalChat训练流程集成了ColossalAI的诸多系统优化,同等数据集和模型大小的训练速度可以比Alpaca快3倍左右,让科研人员和中小企业也能独立训练部署自己的会话系统。
4。ColossalChat团队自己采集了更多数据集:训练的英文一共24Mtokens,中文大约30Mtokens,总共约54Mtokens。其中ColossalChat自己收集的数据集英文6M,中文18Mtokens。
以下是ColossalChat和Alpaca在语言对话上的一些表现(上面是ColossalChat,下面是Alpaca)。
用Python写Quicksort:
给教授写邮件请求推荐信:
开放协作
尽管已经进一步引入RLHF,但由于算力和数据集有限,在部分场景下的实际性能仍有提升空间。
幸运的是,不同以往AI大模型与前沿技术仅由少数科技巨头垄断,PyTorch、HuggingFace和OpenAI等开源社区与初创企业在本轮浪潮中也起到了关键作用。借鉴开源社区的成功经验,ColossalAI欢迎各方参与共建,拥抱大模型时代!
可通过以下方式联系或参与:
1。在GitHub发布issue或提交pullrequest(PR)
2。加入ColossalAI用户微信或Slack群交流
3。发送正式合作提案到邮箱youycomp。nus。edu。sg
开源地址:
https:github。comhpcaitechColossalAI
参考链接:https:medium。comyangyouberkeleycolossalchatanopensourcesolutionforcloningchatgptwithacompleterlhfpipeline5edf08fb538b