细数和Chatgpt相似的开源模型
毫无疑问Chatgpt对于AI的发展具有里程碑式的意义,它最大的意义在于从0到1验证了大规模语言模型的可行性。
毕竟训练这个模型,是需要烧非常多钱的,OpenAI背后的金主微软都已经投资了上百亿美元。
前几天连Chatgpt4都被暂停了,官网显示,暂时无法升级账户到Plus会员,不过这两天也恢复了。
归根到底原因就是:High demand。需求量太大,而算力要求极高,以至于OpenAI不得不暂停Plus的销售。
地球上已经没有足够的算力来满足需求了。
Chatgpt虽然是OpenAI发布的,但并不Open,一点训练细节都没公布。
这也可以理解,毕竟微软前期投资了这么多钱,多少要靠这波浪潮吃回来点。
虽然不Open,但Chatgpt的原理和模型也很快被大家挖掘出来,网上现在也有一些开源的大模型出来,今天我们就来细数一下。
一.LLaMA
github地址:
https://github.com/facebookresearch/llama
Star: 16.4K.
LLaMA翻译过来叫大羊驼,它是由Meta(原脸书公司)公司开源的AI模型,Meta 的 LLaMA 是“大型语言模型 Meta AI” (Large Language Model Meta AI)的缩写,它可以在非商业许可下提供给政府、社区和学术界的研究人员和实体工作者。
这个模型非常重要,后面介绍的很多模型都是基于这个模型进行二次开发和微调得来的,可以说是这类模型的开源鼻祖。
LLaMA主要设计了7B(70亿)、13B(130亿)、33B 和 65B参数的模型。其中,LLaMA 65B 和 LLaMA 33B 在 1.4 万亿个 tokens 上训练,而最小的模型 LLaMA 7B 也经过了 1 万亿个 tokens 的训练。
从LLaMA相关的论文来看,13B的模型已经优于Chatgpt3,当然,不是说参数越多结果就越好的。
LLaMA对比Chatgpt3有个很大的缺陷,它没有经过指令微调和RLHF(Reinforcement Learning from Human Feedback),即,使用强化学习的方法,利用人类反馈信号直接优化语言模型,所以LLaMA的实际表现并不如意。
大家使用Chatgpt3的时候,它能回答得如此全面,符合人类的问答方式,并不是天生的,更何况训练的数据也是良莠不齐的。
Chatgpt3模型的训练大概分为三个流程:预训练、强化学习、反馈和激励。
一开始的预训练相当于把所有的训练数据都填给它,让它可以掌握人类史上所有的学习资料。但这个时期的模型,你问它任何东西,包括那些违法犯罪、色情暴力等,它都会机械式的回答给你,而这个回答也是会良莠不齐,长短不一。
强化学习的过程,是为了学习标准的回答模板,让它学习到更符合人类习惯的问答方式,比如说起名,它都是给你好几个,列出每个名字的含义,这是训练出来的。
反馈和激励,简单理解就是根据回答的内容,进行赏罚,比如说回答了一些敏感信息,那就要告诉模型,这个回答不好,回答的优质的,也要告诉模型这个是回答是好的。
所以chatgpt也是经过人工不断优化和调整出来的,不是一开始就这么强大,从这也能看到,为什么chatgpt的门槛这么高,不仅是算力要求高,后期的反馈和激励训练是需要人工花很多时间的。
回到我们刚才说的LLaMA模型,LLaMA-13B的性能优于GPT-3,而体积却小了10倍以上,虽然体积小了这么多,需要的算力依然不低。
当训练一个65B参数的模型时,LLaMA在2048个A100 GPU(单张A100 售价10万以上,还没有现货)和80GB的内存上处理大约380个token/秒/GPU,也就是说训练1.4T token的数据集大约需要21天。
此外,LLaMA预训练的数据几乎没有包含中文语料,所以LLaMA的中文问答能力是很差的。
二. Alpaca
github地址:
https://github.com/tatsu-lab/stanford_alpaca
Star: 18.4K.
Alpaca翻译过来叫羊驼,也就是神兽"草泥马",这是斯坦福大学开源的类 ChatGPT模型,它基于 LLaMA-7B 和指令微调,仅使用约 5 万条训练数据,就能达到类似 GPT-3.5 的效果。
这个训练的成本很低,斯坦福团队花了不到500美元,它利用OpenAI提供的GPT模型API生成质量较高的指令数据(仅52k),比如下面这种:
基于这些指令数据使用HuggingFace Transformers框架精调LLaMA-7B模型,简单说就是让GPT-3.5自己教出一个旗鼓相当的对手AI。
还记得我们上面说到的chatgpt3训练要经过预训练、强化学习和反馈学习三个步骤吧,LLaMA只有预训练的过程,而Alpaca相当于是用了LLaMA预训练完的模型,剩下需要人工的训练都通过gpt3.5来完成,所以Alpaca的表现看起来就和gpt3一样。
不得不说这种操作还是很6的,曲线救国,这样玩能把大模型的成本压得很低,门槛瞬间降低了。
但是因为它的训练数据只有英文,所以对中文的支持并不友好。
三. Vicuna
github地址:
https://github.com/lm-sys/FastChat
Star: 9.7K.
Vicuna意思是小羊驼,从名字也可以看出,它是基于LLaMA和Alpaca的。
Vicuna是基于LLaMA-13B模型的,Vicuna-13B 通过微调 LLaMA 实现了高性能的对话生成。这一点和斯坦福之前的 Alpaca 模型类似,但 Vicuna 比 Alpaca 的生成质量更好,速度也更快。
Vicuna借鉴了 Meta LLaMA 和 Stanford Alpaca 项目的思路,利用来自 ShareGPT 的用户共享数据进行学习。
ShareGPT 可以说是 AI 领域的一个宝藏网站,上面有许多用户上传的有趣而又有价值的 ChatGPT 回答,而 Vicuna 就是通过这些分享数据得以更加精准地进行推理和回答的。
顺便提一下,虽然据说谷歌的 Bard 也曾使用 ShareGPT 的数据,但 Vicuna 有着完全不同的使用宗旨,其研究团队明确强调 Vicuna 绝对不能用于任何商业目的。
从这个角度来看,Vicuna相当于升级版的Alpaca,Alpaca用的指令数据只有52K,而Vicuna用的ShareGPT的数据则更加丰富。
当然,不只是训练数据更加丰富,Vicuna在内存优化(比如最大上下文长度从 512 扩展到 2048),多轮对话、降低成本方面也是做了很多工作,这里就不一一展开了。
在评测 Vicuna 的性能时,研究团队并不采用传统的「标准化考试」方式,而是从一些非常实用的场景出发,让GPT-4 当「考官」,看Vicuna-13B 相比于其他基线模型的表现。结果令人振奋——超过 90% 的问题中,GPT-4 倾向于选择 Vicuna 的回答,同时 Vicuna 在总分上还达到了 ChatGPT 的 92%。
这意味着 Vicuna 已经远远超越了当前最先进的 LLaMA、Alpaca 开源模型,在对话中展现出了更高的变通能力和准确度,理论上来说,这种方法只要训练的数据足够多,它是可以无限接近于chatgpt的。
值得一提的是,研究团队认为传统的标准化测试并不能真正测出模型的变通能力,而他们采用的这种方式更贴合实际应用场景,可见其极具前瞻性和实用性。
目前来看,Vicuna综合下来的训练成本是最低的,只要300美元,而性能可以达到chatgpt4的92%,还是很有意思的。
四.ColossalChat
github地址:
https://github.com/hpcaitech/ColossalAI
star:27.1K
Colossal-AI 是当下最火热的开源 AI 大模型解决方案之一,虽然它也是基于LLaMA模型,但它率先建立了一个完整的 RLHF 流程,包括监督数据集收集、监督微调、奖励模型训练和强化学习微调等步骤,是目前最接近 ChatGPT 原始技术方案的开源项目!
ColossalChat 不需要成百上千亿的参数,只需在大语言模型的基础上进行 RLHF 微调,就能拥有类似于 ChatGPT 和 GPT-3.5 的效果,并且有中英双语能力。
ColossalChat不像Alpaca和Vicuna,它是利用自己的数据,完整地实现了RLHF。
ColossalChat 的团队推出了一份中英双语数据集,该数据集包含约 10 万条问答,并通过 self-instruct 技术进行数据扩充,使得数据集更加丰富和真实。和其他 self-instruct 方法相比,这个数据集的种子数据覆盖的话题也更广泛,可以同时用于微调和 RLHF 训练,使得 ColossalChat 能够做到更好的对话交互,同时支持中文。
这说明 ColossalChat 的研究团队非常注重数据集的质量和多样性,以此来提高机器的言语理解和表达能力。通过这个数据集,它不仅具备了更丰富的话题和内容,也为中文语境下的 AI 对话系统提供了更好的支持。
这个开源模型对于理解chatgpt整个训练过程还是很有帮助的,但要个人直接上手还是有难度的,而且训练的成本也不低。
五.LMFlow
github地址:
https://github.com/OptimalScale/LMFlow
Star:3.5K
这个模型的热度和人气都不及上面几个模型,但是它是少有的国人开源的这类模型,它的发起机构是香港科技大学统计和机器学习实验室团队,他们致力于建立一个全开放的大模型研究平台。
这个开放平台能够支持各种机器学习实验,并在有限的机器资源下提高数据利用方式和算法效率,以更高的效率进行大规模模型的训练。
每个人都可以用尽量少的资源来训练一个专有领域的、个性化的大模型,这是该团队的愿景。
在 LMFlow 的加持下,即便是有限的计算资源,也能够针对专有领域进行个性化训练,基于流水线技术的神经网络训练框架,它可以高效地处理大规模语言模型的训练。
具体来说,通过利用 70 亿参数的 LLaMA,只需要 1 张 NVIDIA 3090 GPU 和 5 个小时的训练时间,就可以成功地训练出一个适用于自己专有领域的个性化 GPT 模型,并且可以轻松地在网页上部署。
如果使用更多资源对更大的 LLaMA-33b 模型进行微调,可以大幅提高回答的质量。
在这个框架的支持下,开源库作者们已经成功地训练了一个 330 亿参数的 LLaMA 中文版,并且已经开源了模型权重用于学术研究,让更多人可以受益于这个技术。
如果是在特定的专家领域中,例如医疗领域,只需要微调 6 个 A100 * 天,就可以获得和 ChatGPT 相同甚至更好的效果。相比之下,ChatGPT 模型的参数量高达 1750 亿,而通过微调后的最小模型规模仅仅是 ChatGPT 的约 1/20,大大节省了计算资源的使用。
github上也有中文文档,上手起来也是比较快的,感兴趣的可以试试。
总结
LLaMA模型是这类开源模型的鼻祖,很多模型都是基于此进行二次开发、微调、优化、训练等,但对中文支持并不友好。
Alpaca和Vicuna用了LLaMA的模型,利用gpt3.5来帮助原有的模型进行RLHF,理论上,用这种方式,不断迭代进行训练,可以无限接近于chatgpt本身。Vicuna目前也是成本很低的一种模型,很适合个人开发和训练。
ColossalChat没有用chatgpt来训练,而是利用自己的数据进行RLHF,严格来说,它才是真正复刻了chatgpt完整的训练过程。
LMFlow是国人开源的模型,也是使用了LLaMA模型,能加速训练速度。
感兴趣的朋友可以选择性地去试试那几个模型。