查看原文
其他

Baize:一个以中国神兽(白泽)命名的大型自然语言模型(LLM),可单卡GPU运行

ShuYini AINLPer 2023-07-10
点击下方AINLPer,关注我吧
更多干货,第一时间送达

引言

 近年来,随着来自然语言处理(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

模型方法

 在本文,作者提出了一种新颖的模型训练流程,大致分为据集生成」「模型参数调优」两个方面,具体的流程如下图所示: 其中,主要是通过利用 ChatGPT 的功能自动生成高质量的多轮聊天语料库来「解决数据集缺乏问题。其中主要是通过让 ChatGPT 与自己进行对话,模拟用户和AI机器人的回复」。这个生成的语料数据集是在多轮对话的背景下训练和评估聊天模型的宝贵资源。此外,通过指定种子数据集,可以从特定领域进行采样,并微调聊天模型以专门针对特定领域,例如医疗保健或金融。

 为了在资源匮乏的环境中微调大型语言模型,作者「采用了一种有效利用有限可用计算资源的参数高效调优方法」(Parameter-efficient tuning)。该调优方法能够使最先进的语言模型适应资源受限的场景,同时保持高性能和泛化能力。本文主要重点是改进开源大型语言模型LLaMA,相信它有望成为专有聊天模型的解决方案。通过使用我们生成的聊天语料库对 LLaMA 进行微调,作者训练了一个名为Baize的新模型。「Baize 是一种可以在单个GPU上运行的聊天模型」,使其可供更广泛的研究人员使用。

数据集生成

 在本节中,将详细介绍通过利用 ChatGPT (gpt-3.5-turbo) 与自身进行对话来生成高质量多轮聊天语料库的方法。这个过程称为自聊天,是数据收集流程的基础,在增强开源大型语言模型 LLaMA 以在多轮对话中实现更好的性能方面起着关键作用。「自聊天过程利用 ChatGPT 以对话格式为用户和 AI 助手生成消息。应用一个模板来定义格式和要求(详情可见论文),允许 API 持续为对话双方生成文本,直到达到自然停止点」。对话以“种子”为中心,“种子”可以是一个问题,也可以是设置聊天主题的关键短语。

 对于Baize,作者使用来自 Quora4 和 Stack Overflow5 的问题作为种子。自聊天生成的对话示例如下表所示。 作者通过自聊天收集了总共 111.5k 条对话,每个来源使用了约 55k 个问题。这个过程调用 OpenAI 的 API 花费了大约 100 美元。此外,「可以使用从特定领域数据集中提取的问题或短语来增强特定领域聊天模型的知识和能力」。受最近一份报告的启发,ChatGPT 可以回答与癌症相关的问题,使用 MedQuAD 数据集作为种子并获得医疗领域的47k对话,用于训练用于医疗保健的 Baize 模型。生成的语料库的统计数据如下表所示:

模型参数调优

 在本节中,将讨论关于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模型的会话能力。重要的是纳入了一条规则:“人工智能助手始终拒绝参与与不道德、有争议或敏感问题相关的话题、问题和指令。” 这种约束有助于限制 Baize 对敏感主题的参与,并在实验中证明了有效性。对于解码策略,默认使用温度为1和top-p参数为0.95的Nucleus抽样来生成响应。

总结和结论

 对于本文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的理解!

[2]十分钟部署清华ChatGLM-6B,实测效果还可以!

[3]2023年!自然语言处理 10 大预训练模型

[4]NLP突破界限,2023 十篇必读的顶级NLP论文!

[5]你必须要知道的 “ 十二个国际顶级会议 ”!

[6]收藏!ChatGPT等大语言模型(LLMs)测试数据集

点击下方链接🔗关注我们

「资料整理不易,点个再看吧」

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存