欢迎光临散文网 会员登陆 & 注册

超越LLaMA:开放式大语言模型的威力

2023-07-21 00:20 作者:garychian  | 我要投稿


尽管大型语言模型(LLM)近年来取得了显著进展,但许多最强大的模型只能通过付费API获得,并且是使用大量专有数据进行训练的,这限制了研究界对这些模型的获取和再现。这种趋势引发了严重的担忧,即LLM是否会主要由少数中央集团控制,迫使其他人为与这些模型进行交互付费。这种情况严格地阻止了大多数研究人员直接访问或改进LLM的可能性。

鉴于训练和托管LLM的计算负担,我们可能会怀疑是否将这些模型开源对于研究界是否有益。如果我们不是庞大组织中拥有大量计算资源的一部分,我们是否能够利用LLM进行有用的研究?如果不能,也许我们注定生活在LLM的中央控制和访问的世界。这些模型似乎对大多数人来说有着太多的“引力”(即需要访问大量数据和计算),让大多数人难以轻松地使用它们。

LLaMA的提议(及随后泄露给公众)朝着相反的方向发展,通过开源一套功能强大但较小的LLM。在LLaMA发布给公众后,我们看到了一大波关于LLM的开放研究。这些研究产生了各种不同的模型,其中一些模型的质量与ChatGPT相媲美。值得注意的是,这些模型的制作成本非常低(在大多数情况下少于500美元),并且所需计算资源较少(其中一些模型甚至可以在普通的MacBook上运行!)。今天在这里,我们将调查一些最近提出的LLaMA模型,并探讨开源LLM研究是如何使这一主题更加易于接触的。

核心概念

在之前的帖子中,我们已经了解了LLaMA,这是一套开源的高性能大语言模型,拥有各种不同的大小。LLaMA模型仅使用公共数据进行训练,这使它们与开源兼容,并且无需访问专有数据即可再现。但是,LLaMA的故事并未就此结束!这些模型最近在深度学习领域成为热门话题。在这个概述中,我们将审视由LLaMA所带动的研究,并了解这些模型为何以及如何变得受欢迎。首先,我们将对LLaMA提供更多背景信息,然后概述一些在本概述中理解重要的想法。

LLaMA是如何被开源的?

深度学习界长期以来一直拥抱开源,而某些研究领域仍然保持这种特点(例如,参见Stable Diffusion)。然而,LLM领域与众不同,因为最受欢迎和最强大的模型仅通过付费API(例如GPT-4 、Claude和Cohere)提供。LLaMA的开源打破了这一趋势,它是一套质量令人印象深刻的较小LLM基础模型。然而,LLaMA并非完全开源… 故事有些复杂。

首先,Meta公司发布了有关LLaMA的全部细节,包括深入的有用出版物、申请获得LLaMA访问权限的表格,以及一个简单的存储库,用于在获得模型访问权限后进行推理和标记化处理。为了获得模型的访问权限,人们必须同意一长串要求,例如不以商业目的使用LLaMA,并确保使用LLaMA创建的任何派生模型遵循相同的许可协议。但是,在这一发布约一周后,所有LLaMA模型的权重被公开发布到了4chan,供任何人下载。

尽管LLaMA的分享是出乎意料的(并且可以说是有害的),但它激发了数千次的下载,并且随后促成了大量的开放研究。由于LLaMA由较小的模型组成,这些模型对于没有大量计算资源的研究人员来说更加容易使用,它们非常适合这种情况。大量杰出的深度学习研究人员在短短几周内投入到工作中,推动了许多由LLaMA驱动的项目,涵盖范围从在Macbook上托管数十亿参数的LLM到以不到500美元的成本复现ChatGPT等多个方面。

指令微调(Instruction Fine-Tuning)


在这个概述中,我们将看到许多模型都基于指令微调(Instruction Fine-Tuning)的思想,简称为指令微调。指令微调最初由FLAN提出(论文:“Finetuned language models are zero-shot learners”),它是一种训练形式,使得语言模型在解决基于语言的任务时更加通用,而不仅仅是针对单个任务;请参见上文。在实践中,这通过在一系列“指令”上进行微调来实现,其中包括微调示例和解决任务的描述。利用这种方法,我们可以通过使用不同的任务模板和文本提示,对语言模型进行微调,从而解决各种不同的任务;请参见下文。

目前,指令微调的最受欢迎的变体之一是在对话会话示例上对LLM进行微调,这些示例可以来自人类对话,也可以是由聊天机器人生成的对话。鉴于许多最近的聊天机器人专门用于遵循指令并进行信息获取型对话,这些模型、它们的输出甚至用于训练它们的数据中都包含了丰富的遵循指令的例子和行为,可以直接用于指令微调。

自我指导(Self-instruct)是与这项工作相关的一种指令微调形式,它通过使用LLM生成微调指令来减少对人工编写指令的依赖。具体而言,这个过程始于一小组指令数据,并通过以下两个步骤的迭代来生成新数据和过滤低质量数据:(i)使用LLM生成新数据,(ii)过滤低质量数据。这种技术产生了高质量的用于指令微调的数据,减少了人工标注的工作量。

知识蒸馏(Knowledge Distillation)


知识蒸馏最初在Hinton博士的论文《Distilling the knowledge in a neural network》中提出,它使用(大型的)完全训练过的神经网络作为另一个(小型的)神经网络的训练信号。市面上有许多不同类型的知识蒸馏存在,但它们背后的思想是相同的。即,如果我们同时使用 (i)正常的训练数据和(ii)较大、更强大的神经网络在该数据上的输出来训练一个神经网络,通常会得到比仅在数据上训练神经网络更好的结果。通过使用较大网络的输出作为训练目标,我们可以将一些信息从较大的网络蒸馏到正在训练的较小“学生”网络中。有关知识蒸馏及其各种变体的更多信息,请查看此论文:https://arxiv.org/abs/2006.05525。

除了上述内容,我们还需要对LLM(大型语言模型)及其工作原理有一个基本的了解。为了深入了解这方面的知识,请查看以下链接:


在整个概述中,我们还会提到OpenAI目录中一些特定模型的名称(例如text-davinci-003)。在这里可以找到OpenAI API提供的模型列表及其相关描述:
GPT-4:   A set of models that improve on GPT-3.5 and can understand as well as generate natural language or code
GPT-3.5:A set of models that improve on GPT-3 and can understand as well as generate natural language or code
DALL·E:A model that can generate and edit images given a natural language prompt
Whisper: A model that can convert audio into text
Embeddings: A set of models that can convert text into a numerical form
Moderation:A fine-tuned model that can detect whether text may be sensitive or unsafe
GPT-3Legacy:A set of models that can understand and generate natural language

Alpaca羊驼

Alpaca 是经过微调的LLLaMA-7B (来自: “Llama: Open and efficient foundation language models.”) LLM的一个版本,其性能类似于OpenAI的text-davinci-003(即GPT-3.5)。Alpaca的微调过程基于自我指导 (来自:“Self-Instruct: Aligning Language Model with Self Generated Instructions.”),其中遵循指令的数据是从一个性能更高的LLM(即text-davinci-003)中收集的,并用于指令微调。简而言之,Alpaca证明了在遵循指令的环境中,通过在高质量数据上进行微调,可以大幅度提高小型开源LLM的质量。此外,Alpaca的整个微调过程只需花费600美元(包括数据收集和微调),使得这种遵循指令的LLM在研究目的下易于复制和廉价实现。

方法:通过自我指导微调(SFT),我们需要(i)高质量的预训练语言模型和(ii)用于微调的指令遵循数据。幸运的是,最近发布的LLaMA提供了易于获取的预训练语言模型。获取指令遵循数据稍微有些复杂,但自我指导(Self-instruct)是一个有效的方法。在高层次上,自我指导是通过LLM生成的输出来进行进一步训练。对于Alpaca,我们使用text-davinci-003来生成指令遵循数据,具体包括:

  1. 从自我指导种子集中获得175个指令和输出对。

  2. 使用种子集作为上下文示例,提示LLM生成更多的指令,用于少样本学习。

(论文“Stanford Alpaca: An Instruction-following LLaMA model.”)中的作者还采用了一些技巧(例如,修改提示和更高效的解码/生成过程),使得数据生成过程与原始的自我指导相比更加便宜和高效。总体上,通过OpenAI API生成指令遵循数据的成本在52K个指令遵循示例中不到500美元。

然后,使用基于HuggingFace的训练框架对LLaMA-7B模型在这些数据上进行微调。通过使用完全分片数据并行(FSDP)和混合精度训练技术,微调过程在8个A100 GPU上仅耗时3小时,成本不到100美元。用于创建Alpaca的代码和数据在网上是可用的。然而,商业用途的Alpaca是被禁止的,因为i)LLaMA(Alpaca基于此)具有非商业许可证,ii)OpenAI禁止使用其模型来训练竞争性LLM。

结果:Alpaca在自我指导评估集上进行了评估(主要涵盖与电子邮件、社交媒体和生产力相关的任务),以及作者手动编写的开放领域指令。在这些任务中,Alpaca的性能与text-davinci-003类似(即在大约180个测试案例中表现最佳的50%情况)。尽管这种评估显然有限,考虑到Alpaca是一个比GPT-3.5小得多且相对容易复制的模型,其性能仍然相当令人印象深刻。


与text-davinci-003相似,Alpaca的输出通常比ChatGPT的输出要短。换句话说,Alpaca的风格反映了用于生成微调指令遵循数据的LLM的风格。

Vicuna维丘纳

《“Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality.”
》的作者提出了一种解决方案,为了促进开源研究,他们创建了名为Vicuna的开源聊天机器人。Vicuna是通过对LLaMA-13B[1]进行微调而得到的(LLaMA-13B是一个较小的语言模型,性能与GPT-3相当)。Vicuna的微调数据是使用ChatGPT的用户对话示例,并且整个微调过程的成本不到300美元,这样使得聊天机器人更容易用于研究目的。相较于Alpaca,Vicuna更类似于ChatGPT,并且能够生成更加详细和有结构的回答。

方法:在使用Vicuna进行微调的过程中,所使用的数据是通过ShareGPT这个公共API从平台上获取的。ShareGPT允许用户分享他们与ChatGPT的对话。在微调之前,作者筛选了不适当和低质量的数据,并将较长的对话分成适合LLaMA-13B最大上下文长度的较短片段。总共收集了70,000个对话。与Alpaca类似,使用8个A100 GPU进行模型训练,采用FSDP(一些修改用于降低成本和处理长序列),训练过程大约需要一天的时间,具体内容请参考上文。作者已公开发布了Vicuna的训练和托管代码。在下面的表格中,我们将对Vicuna与开源LLM(LLaMA和Alpaca)进行更全面的比较。接下来,我们将详细介绍Vicuna的评估方法

结果:对聊天机器人进行准确评估是相当困难的,随着聊天机器人质量的不断提高,评估变得更加困难。例如,论文中的作者声称,用于评估Alpaca的自我指导评估集现在被最新的聊天机器人有效解决了,这使得模型之间的差异很难辨别。鉴于现有基准测试的限制和创建新的全面评估集的难度,论文中的作者选择了一种不同的策略:使用LLM(语言模型)来进行评估。

“随着GPT-4的最新进展,我们很好奇它的能力是否已经达到了人类水平,从而可以实现用于基准生成和性能评估的自动化评估框架。”——引自《“Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality.”

这时候,我们可能会认为这实际上是不可能的。聊天机器人之间的互相评估?然而,出乎意料的是,基于最近提出的GPT-4模型构建的评估框架效果很好。首先,论文的作者设计了八个问题类别(例如,角色扮演场景和数学任务)。然后,GPT-4被启动以在每个类别中生成多样化的问题。有趣的是,GPT-4能够生成一些困难的问题,而最新的聊天机器人难以回答。

具体而言,GPT-4用于在每个类别中生成十个问题,并对五个不同的聊天机器人(LLaMA-13B、Alpaca-13B、Vicuna-13B、Bard和ChatGPT)的输出进行评估。进一步地,通过询问GPT-4根据细节、有用性、相关性和准确性对每个模型的输出质量进行评判。虽然以这种方式进行评估可能看似有些牵强,但GPT-4对模型进行了相当一致的排名,并解释了其推理过程。

根据GPT-4的评估,相较于ChatGPT,Vicuna的输出质量达到了92%的水平;请参考之前的内容。通过让GPT-4为每个模型的输出分配分数,从而得出了这个比例。然后,可以通过计算所有问题上它们的总质量得分来评估模型之间的相对性能。尽管这种评估方法并不严谨,但它相当有趣,相对一致,并促使我们思考LLM领域在未来将会以哪些有趣的方式发展。

相较于其他开源模型,我们可以看到GPT-4倾向于更喜欢Vicuna的输出。此外,Vicuna在45%的问题上产生的输出质量超过或与ChatGPT的质量相匹配。对于一个只需300美元进行微调的模型来说,这种质量水平相当令人印象深刻!

Koala考拉

在这一点上,我们可能会开始思考是否会用尽动物的名字来为LLM取名。然而,考拉(Koala)与维丘纳(Vicuna)和羊驼(Alpaca)类似,因为它继续专注于弥合专有和开源LLM之间的质量差距。更具体地说,考拉是LLaMA-13B的一个版本,经过在来自各种来源的对话数据上进行微调,包括来自公共数据集以及与其他高质量LLM在互联网上可用的对话。


经过在真实世界的提示下进行评估,考拉-13B在与ChatGPT相比取得了具有竞争力的表现,甚至在表现上超越了相关的羊驼(Alpaca)模型。因此,考拉的结果继续支持我们在LLaMA之后所有研究中所看到的趋势。也就是说,我们发现,如果有正确的数据进行微调,较小的模型也能够达到令人印象深刻的质量。这样的研究结果可能会让我们思考:我们是不是过于关注模型规模,而忽视了数据质量的重要性呢?

方法。考拉在微调过程中使用了来自公共数据集和互联网的对话数据。然而,在文献[“Koala: A Dialogue Model for Academic Research.”]中,作者们非常强调为微调筛选高质量数据的重要性。用于微调考拉的数据可以大致分为两类:基于蒸馏的数据(即来自其他LLM的对话)或开源数据(即在公共数据集中可用),包括来自ShareGPT、HC3、OIG、Anthropic HH以及OpenAI WebGPT/Summarization的数据。此外,微调集甚至包括用于训练羊驼[“Stanford Alpaca: An Instruction-following LLaMA model.”]模型的数据。

所有这些数据都是基于对话的。值得注意的是,某些数据集中对于每个问题都包含多个对话或回答,这些对话或回答被标记为好或坏。有趣的是,我们可以借鉴之前的技术[8],将这些信息纳入LLM的微调过程中。具体而言,通过条件训练,我们可以简单地在LLM训练数据上添加人工标记(例如,仅追加关于对话是好还是坏的文本信息)。这种方法可以提高性能,并使我们能够将质量较低的对话用于模型训练。

文献[5]中的作者将考拉的训练和托管框架公开可用。该模型使用八个V100 GPU进行两个时期的训练,大约需要6小时。总的计算成本为不到100美元(假设我们可以使用抢占式/竞价实例),这意味着考拉是迄今为止我们见过的模型中成本最低的可复制模型!

结果。文献[5]中训练了两种不同类型的考拉模型:

  • 考拉-蒸馏(Koala-distill):仅在蒸馏数据上进行微调(即其他聊天机器人的对话示例)

  • 考拉-全数据(Koala-all):使用上述所有数据进行微调。

基于人工试验和反馈,将这些考拉模型的质量与羊驼和ChatGPT进行了比较。用于评估的问题来自羊驼评估集和从互联网上获取的一组真实用户查询。作者选择添加更多问题到评估集中,因为羊驼的评估集与它训练的数据非常相似(即都来源于self-instruct )。

在人类对不同LLM的输出进行质量和正确性评估时,我们发现考拉-全数据(Koala-all)往往在许多情况下超越了羊驼(Alpaca),并在大量案例中与ChatGPT的质量相匹配或超过。此外,我们还发现考拉-蒸馏(Koala-distill)实际上表现优于考拉-全数据。这在一定程度上有些令人费解,因为考拉-蒸馏的微调数据集较小(即只是来自ChatGPT的示例对话),但这告诉我们,用于微调的数据类型和质量非常重要。也就是说,使用来自更大、更优质LLM生成的对话进行微调非常有效。

“构建强大的对话模型的关键可能更在于筛选多样且质量高的用户查询的对话数据” —— 引自文献[“Koala: A Dialogue Model for Academic Research.”]

尽管LLaMA是最近提出的,但羊驼(Alpaca)、维丘纳(Vicuna)和考拉(Koala)并不是仅有的受LLaMA启发或实现的值得关注的模型。以下是一些最近发布的其他开源语言模型:

除了各种提出的模型外,由于LLaMA,LLM的研究和应用也变得更加容易。LLaMA-13B早期就可以在单个GPU上运行,但现在我们甚至可以在本地(例如MacBook)上运行LLM!

看起来LLM将很快成为比以往任何时候都更多人可以使用的技术。以下是我们可以从这项工作中得出的主要观点:

i) LLaMA激发了许多开源LLM研究。 ii) 由于LLaMA,LLM周围的研究和应用变得显著更加容易。如果一个月前有人告诉我,我可以在我的MacBook上运行一个接近ChatGPT性能的LLM,我是不会相信的。这是令人兴奋的时刻,我很高兴能成为这样一个伟大社区的一小部分!以下是一些基本的要点:

LLM适用于所有人。如果之前我们对此有疑问,现在我们知道研究社区确实可以在LLM上做出有价值的研究。几周前,我们大多数人认为由于庞大的数据和计算要求,LLM不太容易接触。然而,现在我们可以用几百美元训练出ChatGPT级别的模型(或者至少接近),甚至可以在笔记本电脑上进行对话!

小型模型是否足够?长期以来,模型规模(以及大型预训练数据集)一直是高性能LLM的重要组成部分。然而,像考拉和维丘纳这样的模型告诉我们,较小的LLM实际上可以表现得非常出色(在某些情况下甚至能与像ChatGPT这样的强大LLM相匹配)。这样的发现突显了数据质量的重要性。在我们在这里看到的工作中,最有效的技术往往使用较大LLM的输出作为训练数据,这表明知识蒸馏可能是创建小型但功能强大的LLM的重要组成部分。

商业可行性?尽管这些技术很酷,但在商业应用中使用它们是困难的。例如,OpenAI禁止使用ChatGPT(或任何其他API模型)来训练竞争模型,从而阻止基于OpenAI API的知识蒸馏方法。此外,即使是LLaMA本身也禁止商业用途。因此,像Alpaca、Koala和Vicuna这样的模型只是从研究的角度有趣,它们的方法不能用于任何用于商业用途的模型。然而,有了像Lit-LLaMA这样的提案,似乎这些模型的商业可行版本可能会逐渐变得可用。


超越LLaMA:开放式大语言模型的威力的评论 (共 条)

分享到微博请遵守国家法律