Baize:一个以中国神兽(白泽)命名的大型自然语言模型(LLM),可单卡GPU运行
引言
近年来,随着来自然语言处理(NLP)技术的快速发展,出现了强大的聊天对话模型。目前最火、最强的对话模型要属OpenAI发布的ChatGPT和GPT-4了,它们可以在各种领域背景下,展现出非凡的对话能力,在虚拟助理、智能客服、信息咨询等应用方面具有很大的潜力。
然而,「OpenAI不再Open,目前只能通过受限制的api进行访问(ps:最近很多国内的Openai的账号也不能使用了),这对于研究人员以及相关从业者都带来了困扰,从一定程度上阻碍了NLP的社区的发展」。为此,加利福尼亚大学(4月4日)公布了开源模型Baize,可以在单个GPU上运行。[Ps:不得不说,“Baize”这名字起的太讲究了!白泽(Baize)是中国古代神话中的瑞兽,能言语,通万物之情,知鬼神之事,“王者有德”才出现,能辟除人间一切邪气。]
Paper:https://arxiv.org/pdf/2304.01196v2.pdf
Code:https://github.com/project-baize/baize-chatbot
模型方法
在本文,作者提出了一种新颖的模型训练流程,大致分为「数据集生成」、「模型参数调优」两个方面,具体的流程如下图所示:
为了在资源匮乏的环境中微调大型语言模型,作者「采用了一种有效利用有限可用计算资源的参数高效调优方法」(Parameter-efficient tuning)。该调优方法能够使最先进的语言模型适应资源受限的场景,同时保持高性能和泛化能力。本文主要重点是改进开源大型语言模型LLaMA,相信它有望成为专有聊天模型的解决方案。通过使用我们生成的聊天语料库对 LLaMA 进行微调,作者训练了一个名为Baize的新模型。「Baize 是一种可以在单个GPU上运行的聊天模型」,使其可供更广泛的研究人员使用。
数据集生成
在本节中,将详细介绍通过利用 ChatGPT (gpt-3.5-turbo) 与自身进行对话来生成高质量多轮聊天语料库的方法。这个过程称为自聊天,是数据收集流程的基础,在增强开源大型语言模型 LLaMA 以在多轮对话中实现更好的性能方面起着关键作用。「自聊天过程利用 ChatGPT 以对话格式为用户和 AI 助手生成消息。应用一个模板来定义格式和要求(详情可见论文),允许 API 持续为对话双方生成文本,直到达到自然停止点」。对话以“种子”为中心,“种子”可以是一个问题,也可以是设置聊天主题的关键短语。
对于Baize,作者使用来自 Quora4 和 Stack Overflow5 的问题作为种子。自聊天生成的对话示例如下表所示。
模型参数调优
在本节中,将讨论关于Baize的参数优化方法。标准的微调通常需要大量的计算资源,以及高质量和大量的数据集。然而,由于高质量多轮聊天语料库的有限性,采用在计算成本和数据要求方面更高效的方法至关重要。Parameter-efficient tuning方法可以充分利用可用数据并最大限度地了减少对计算资源的需求。最后文章使用 Low-Rank Adaption 来调整 LLaMA 模型。但对于线性层,作者将其修改为:。与Hu等人(2022)不同,作者将LoRA应用于LLaMA中的所有线性层,以增加可调参数的数量和自适应能力。在表3中列出了每个模型的参数数量。
模型训练
在训练阶段,作者将「输入序列的最大长度设置为512,并将LoRA中的秩k设置为8」。使用8位整数格式 「(int8) 参数初始化LLaMA检查点」,并在训练期间保持固定,从而减少 GPU 内存消耗并提高训练速度。对A使用随机高斯初始化,并将B设置为零,「让B、A的值在训练开始时为零」。对于7B、13B和30B模型,「使用 Adam 优化器」更新LoRA 参数,「批量大小」为64,「学习率」为2e-4、1e-4和 5e-5。可训练的LoRA参数在 NVIDIA A100-80GB GPU 上微调了1个 epoch,训练时间如下表所示。
总结和结论
对于本文Baize,作者分别在常识问题、金融事件分析、笑点解释、危险评估等方面,与Alpaca-LoRA、ChatGPT做了对比,具体对比结果如下:
「常识性问题」,Baize-7B、ChatGPT要优于Alpaca、Alpaca-LoRA; 「金融事件分析」,总体而言,Baize-7B提供了比 Alpaca-LoRA 更全面的答案,同时包含了 ChatGPT 答案中的大部分要点。 「笑点解释」,Baize-13B和ChatGPT能够给出合理解释,Alpaca-LoRA解释失败,而Baize-7B给出了一个貌似合理的答案。 「危险屏蔽」:Baize和ChatGPT拒绝了问题回答,而Alpaca-LoRA则提供了答案。
个人的一些想法:其实本文与之前分享的文章【追赶GPT-4!微软发布最新研究成果:利用GPT-4追赶GPT-4(中文适用 & 含数据)】有点像,都是利用最先进的模型生成数据,利用可以触达的开源模型进行训练调优,只不过实际操作方法存在差异。另外,这篇文章在实验设计方面并没有给出具体量化的数据,只是针对某个场景的例子来对输出结果进行对比分析,缺乏一些可信性。但架不住人家开源呀,而且还起了个特别牛叉的名字:白泽(Baize),单卡就能跑,是好是坏,实际跑一下全知道了。
推荐阅读
[1]麻省理工(MIT)的最新研究:可能重塑你对LLMs的理解!
[6]收藏!ChatGPT等大语言模型(LLMs)测试数据集