深度学习自然语言处理 原创 作者:cola
自2022年底ChatGPT发布以来,其已经在人工智能的整个领域带来了翻天覆地的变化。通过对大型语言模型(LLM)进行指令微调,并从人类反馈中进行监督微调和强化学习,表明模型可以回答人类问题并在广泛的任务中遵循指令。在这一成功之后,对LLM的研究兴趣增强了,新的LLM在学术界和工业界频繁蓬勃发展。虽然非开源LLM(例如,OpenAI的GPT, Anthropic的Claude)通常优于它们的开源同行,但后者的进展很快。这对研究和商业都有至关重要的影响。在ChatGPT成立一周年之际,本文对这类LLMs进行了详尽的介绍。
论文: ChatGPT’s One-year Anniversary: Are Open-Source Large Language Models Catching up? 地址: https://arxiv.org/pdf/2311.16989.pdf
就在一年前,OpenAI发布的ChatGPT席卷了AI社区和广泛的世界。这是第一次,基于应用程序的人工智能聊天机器人可以为大多数问题提供有用的、安全的和详细的答案,遵循指示,甚至承认和修复以前的错误。值得注意的是,它可以执行传统上由预训练然后定制的微调语言模型完成的任务,如摘要或问答(QA)。作为同类应用中的第一个,ChatGPT吸引了普通大众的关注,它在发布后的两个月内就达到了1亿用户,比其他流行应用如TikTok或YouTube快得多。它还吸引了巨大的商业投资,因为它具有降低劳动力成本、自动化工作流程甚至为客户带来新体验的潜力。
由于ChatGPT不是开源的,而且它的访问权限是由一家私人公司控制的,所以它的大部分技术细节仍然未知。尽管声称它遵循InstructGPT(也称为GPT-3.5)中介绍的过程,但其确切的架构、预训练数据和微调数据是未知的。这种闭源特性产生了几个关键问题。
而开源LLM提供了一个有希望的方向,因为它们可以潜在地修复或绕过上述大多数问题。因此,研究界一直积极推动在开源中维护高性能的LLM。然而,从今天的情况来看(截至2023年底),人们普遍认为开源LLM,如Llama-2或Falcon,落后于它们的非开源同行,如OpenAI的GPT3.5(ChatGPT)和GPT-4,Anthropic的Claude2或谷歌的Bard3,通常认为GPT-4是它们的冠军。
然而,令人鼓舞的是,差距越来越小,开源LLM正在迅速赶上。事实上,正如图1所示,最好的开源LLM在一些标准基准上的性能已经优于GPT-3.5-turbo。然而,对于开源LLM来说,这并不是一场简单的艰苦战斗。情况在不断发展:非开源LLM通过定期对更新的数据进行再训练来更新,开源LLM也不断更新以赶上形势变化,并且有无数的评估数据集和基准被用于比较LLM,这使得挑选出一个最好的LLM特别具有挑战性。
所有LLM都依赖于在互联网文本数据上进行大规模的自监督预训练。仅解码器的LLM遵循因果语言建模目标,通过该目标,模型学习根据之前的token序列预测下一个token。根据开源LLM分享的预训练细节,文本数据的来源包括CommonCrawl、C4、GitHub、Wikipedia、书籍和在线讨论,如Reddit或StackOverFlow。人们普遍认为,扩展预训练语料库的大小可以提高模型的性能,并与扩展模型大小密切相关,这种现象被称为缩放定律。现代的LLM在数千亿到数万亿token的语料库上进行预训练。
微调的目的是通过使用可用的监督来更新权重,使预训练的LLM适应下游任务,这些监督通常时比预训练使用的数据集小一个量级的数据集。T5是最早将微调框架构建为文本到文本统一框架的之一,用自然语言指令描述每个任务。指令微调后来通过在几个任务上联合训练扩展了微调,每个都用自然语言指令进行描述。指令微调迅速流行起来,因为它能够大幅提高LLM的零样本性能,包括在unseen任务上,特别是在更大的模型规模上。使用多任务监督微调(通常称为SFT)的标准指令微调仍然可以保证模型在安全、道德和无害的同时遵循人类意图,并可以通过从人类反馈中强化学习(RLHF)进一步改进。
RLHF指的是人类标注者对微调模型的输出进行排序,用于通过强化学习再次微调。最近的工作表明,人类反馈可以被LLM的反馈取代,这一过程称为从人工智能反馈中强化学习(RLAIF)。直接偏好优化(DPO)绕过了像RLHF那样将奖励模型拟合人类偏好的需要,而是用交叉熵目标直接微调策略,实现了LLM与人类偏好的更有效对齐。
在构建不同任务的指令微调数据集时,重点是质量而不是数量:Lima仅在1000个示例上微调Llama-65B,表现优于GPT-3,而Alpagasus通过将其指令微调数据集从52k清理到9k,对Alpaca进行了改进。
再预训练包括从预训练的LLM执行另一轮的预训练,通常比第一阶段的数据量更少。这样的过程可能有助于快速适应新领域或在LLM中引出新属性。例如,对Lemur进行再次预训练,以提高编码和推理能力,对Llama-2-long进行扩展上下文窗口。
存在几种使用LLM进行自回归解码的序列生成的替代方法,它们的区别在于输出的随机性和多样性程度。在采样期间增加温度使输出更加多样化,而将其设置为0则会退回到贪婪解码,这在需要确定性输出的场景中可能需要。采样方法top-k和top-p限制了每个解码步骤要采样的token池。
注意力复杂度是关于输入长度的二次型,因此一些技术旨在提高推理速度,特别是在较长的序列长度时。FlashAttention优化了GPU内存级之间的读写,加速了训练和推理。FlashDecoding将注意力机制中的key-value(KV)缓存加载并行化,产生8倍的端到端加速。推测解码使用一个额外的小型语言模型来近似来自LLM的下一个token分布,这在不损失性能的情况下加速了解码。vLLM使用PagedAttention加速LLM推理和服务,PagedAttention是一种优化注意力键和值的内存使用的算法。
由于要执行的评估的多样性和广度,正确评估LLM的能力仍然是一个活跃的研究领域。Question-answering数据集是非常流行的评估基准,但最近也出现了为LLM评估量身定制的新基准。
随着大量LLM的发布,每个LLM都声称在某些任务上具有卓越的性能,确定真正的进步和领先的模型变得越来越具有挑战性。因此,至关重要的是全面评估这些模型在广泛任务中的性能,以了解它们的一般能力。本节涵盖使用基于LLM(如GPT-4)评估和传统(如ROUGE和BLEU)评估指标的基准。
Llama-270B是来自meta的著名开源LLM,已经在2万亿token的大规模数据集上进行了预训练。它在各种通用基准上展示了显著的结果。当与指令数据进一步微调时,Llama2-chat-70B变体在一般会话任务中表现出增强的能力。其中,Llama-2-chat-70B在AlpacaEval中取得了92.66%的胜率,将GPT-3.5-turbo的性能提升了10.95%。尽管如此,GPT-4仍然是所有LLM中表现最好的,胜率为95.28%。
另一个较小的模型Zephyr-7B使用蒸馏进行优化,在AlpacaEval上取得了与70B LLMs相当的结果,胜率为90.6%。它甚至超过了Llama-2-chat-70B。此外,WizardLM-70B已经使用大量具有不同复杂度的指令数据进行了指令微调。它以7.71的分数脱颖而出,成为MT-Bench上得分最高的开源LLM。然而,这仍然略低于GPT-3.5turbo(7.94)和GPT-4(8.99)。尽管Zephyr-7B在MT-Bench中表现最好,但它在Open LLM排行榜中不出色,得分仅为52.15%。另一方面,GodziLLa2-70B,将Maya Philippines 6和Guanaco Llama 2 1K数据集中的各种专有LoRAs与Llama-2-70b相结合,在Open LLM排行榜上取得了更有竞争力的67.01%的分数。Yi-34B从一开始就由开发人员进行了预训练。AI 7,以68.68%的显著分数在所有开源LLM中脱颖而出。该性能与GPT-3.5-turbo的70.21%相当。然而,两者仍然明显落后于GPT-4,后者以85.36%的高分领先。UltraLlama利用了增强多样性和质量的微调数据。它在其建议的基准中与GPT-3.5-turbo的性能相匹配,同时在世界和专业知识领域超过了它。
随着模型规模的不断扩大,基于LLM的智能体(也称为语言智能体)引起了NLP社区的广泛关注。鉴于此,本文研究了开源LLM在各种基准上的代理能力。根据所需的技能,现有的基准主要可以分为四类。
通过使用包含90B标记的代码密集型语料库对Llama-2进行预训练,并对包括文本和代码在内的300K示例进行指令微调,Lemur-70B-chat在探索环境或遵循编码任务的自然语言反馈时超过了GPT-3.5-turbo的性能。AgentTuning使用Llama-2对其构建的AgentInstruct数据集和通用域指令进行指令调整,产生AgentLlama。值得注意的是,AgentLlama-70B在未见过的代理任务上实现了与GPT-3.5-turbo相当的性能。通过在ToolBench上对Llama-2-7B进行微调,ToolLLaMA在工具使用评估中展示了与GPT3.5-turbo相当的性能。FireAct,它可以对Llama-2-13B进行微调,以在HotpotQA上超越提示GPT-3.5-turbo。此外,从Llama-7B进行微调的Gorilla在编写API调用方面优于GPT-4。
逻辑推理是高级技能的基本能力,如程序设计、定理证明、算术推理等。我们将介绍以下基准:
与传统的基于知识蒸馏的指令微调不同,通过构建特定于任务的高质量指令微调数据集,其中种子指令已经进化到在知识边界或任务复杂度深度上扩展的指令。此外,研究人员还纳入了PPO算法,以进一步提高生成的指令和答案的质量。在获得扩展的指令池之后,通过收集另一个LLM(如GPT-3.5-turbo)的响应来生成新的指令微调数据集。得益于改进的查询深度和宽度,微调后的模型取得了比GPT-3.5-turbo更好的性能。例如,WizardCoder在HumanEval上的性能优于GPT3.5-turbo,有19.1%的改进。与GPT-3.5-turbo相比,WizardMath在GSM8K上也获得了42.9%的改进。
Lemur验证了自然语言数据和代码能更好的融合,并证实在函数调用、自动编程和代理能力方面具有更强能力。Lemur-70B-chat在HumanEval和GSM8K上都比GPT-3.5-turbo取得了显著的改进,而无需特定任务的微调。Phi-1和Phi-1.5走了一条不同的道路,将教科书作为预训练的主要语料库,这使得在更小的语言模型上可以观察到强大的能力。
处理长序列仍然是LLM的关键技术瓶颈之一,因为所有模型都受到有限的最大上下文窗口的限制,通常从2k到8k token长度。对LLM的上下文能力进行基准测试涉及对几个自然具有长上下文的任务进行评估,如抽象摘要或多文档QA。以下基准已被提出用于LLMs的长上下文评估:
在LongBench、L-Eval、BAMBOO和M4LE基准上,GPT-3.5-turbo或其16k版本的性能基本上超过了所有开源LLM,这表明提高开源LLM在长输入任务上的性能并非易事。Llama-2-long使用16k上下文窗口(从Llama-2的4k增加到400B token)继续对Llama-2进行预训练。由此产生的Llama-2-long-chat-70B在ZeroSCROLLS上的性能比GPT-3.5-turbo-16k高出37.7到36.7。解决长上下文任务的方法包括使用位置插值的上下文窗口扩展,这涉及另一轮微调与较长的上下文窗口,以及检索增强。研究人员结合了这两种看似相反的技术,在7个长上下文任务(包括来自ZeroSCROLLS的4个数据集)中,平均推动Llama-2-70B超过GPT-3.5-turbo-16k。
为了确保LLM在现实世界的应用中可以被人类信任,一个重要的考虑因素是它们的可靠性。例如,幻觉和安全性可能会恶化用户对LLM的信任,并在高影响的应用中导致风险。
自从研究人员证明了冻结的GPT-3模型可以在各种任务上实现令人印象深刻的零样本和少样本性能以来,人们为推进LLM的发展做出了许多努力。研究重点是扩大模型参数,包括Gopher、GLaM、LaMDA、MT-NLG和PaLM,最终达到540B参数。尽管这些模型表现出了非凡的能力,但闭源的性质限制了它们广泛应用,从而导致人们对开发开源LLM的兴趣日益浓厚。
另一项研究没有扩大模型大小,而是探索了预训练较小模型的更好策略或目标,如Chinchilla和UL2。除了预训练之外,还将相当大的精力用于研究语言模型的指令微调,例如FLAN、T0和FLAN-T5。
一年前OpenAI的ChatGPT的出现极大地改变了NLP社区的研究重点。为了赶上OpenAI,谷歌和Anthropic分别引入了Bard和Claude。虽然它们在许多任务上表现出与ChatGPT相当的性能,但与最新的OpenAI模型GPT-4之间仍然存在性能差距。由于这些模型的成功主要归功于从人工反馈中强化学习(RLHF),研究人员探索了各种改进RLHF的方法。
为了促进开源LLM的研究,Meta发布了Llama系列模型。从那时起,基于Llama的开源模型开始爆炸式地出现。一个有代表性的研究方向是利用指令数据对Llama进行微调,包括Alpaca、Vicuna、Lima和WizardLM。正在进行的研究还探索了改进代理、逻辑推理和长上下文建模等能力。此外,许多工作都致力于从头开始训练强大的LLM,而不是基于Llama开发,例如MPT、Falcon、XGen、Phi、Baichuan、Mistral、Grok和Yi。我们相信,开发更强大、更高效的开源LLM,使闭源LLM的能力民主化,应该是一个非常有前途的未来方向。
对于一般功能,Llama-2-chat-70B在一些基准中显示了比GPT3.5-turbo的改进,但仍然落后于大多数其他测试。Zephir-7B 通过蒸馏直接偏好优化接近70B LLMs。WizardLM70B和GodziLLa-70B可以实现与GPT-3.5-turbo相当的性能,这表明了一条有前途的道路。
开源的LLM能够通过更广泛和特定任务的预训练和微调超越GPT-3.5-turbo。例如,Lemur-70B-chat在探索环境和跟踪编码任务的反馈方面表现更好。AgentTuning改进了未见过的代理任务。ToolLLama可以更好地掌握工具的使用。Gorilla在编写API调用方面优于GPT-4。对于逻辑推理,WizardCoder和WizardMath通过增强的指令微调来提高推理能力。Lemur和Phi通过对更高质量的数据进行预训练,实现了更强的能力。对于长上下文建模,Llama-2-long可以通过使用更长的token和更大的上下文窗口进行预训练来提高选定的基准。对于特定应用的能力,InstructRetro通过检索和指令微调的预训练,改进了开放式QA。通过特定任务的微调,MentaLlama-chat13B在心理健康分析数据集上的表现优于GPT-3.5-turbo。RadiologyLlama2可以提高放射学报告的性能。只有7B参数的Shepherd在生成模型反馈和批评方面可以实现与GPT-3.5-turbo相当或更好的性能。对于可信的人工智能,可以通过对更高质量的数据进行微调、上下文感知解码技术、外部知识增强来减少幻觉。
还有一些领域GPT-3.5-turbo和GPT-4仍然是不可战胜的,例如人工智能安全。由于GPT模型涉及大规模的RLHF,它们被认为表现出更安全、更符合道德的行为,这可能是商业LLM比开源LLM更重要的考虑因素。然而,随着最近对RLHF进程民主化的努力,我期待看到开源LLM在安全性方面的更多性能改进。
训练LLM涉及复杂和资源密集的实践,包括数据收集和预处理,模型设计和训练过程。虽然定期发布开源LLM的趋势越来越大,但遗憾的是,主要模型的详细实现细节往往保密。下面我们列出了一些社区广泛认可的最佳实现要点。
预训练涉及使用数万亿的数据tokens,这些tokens通常是公开。从伦理上讲,至关重要的是排除任何包括私人信息的数据。与预训练数据不同,微调数据的数量更少,但质量更高。具有高质量数据的微调LLM表现出了更好的性能,特别是在特定领域。
虽然大多数LLM利用只有解码器的Transformer架构,但模型中采用了不同的技术来优化效率。Llama-2实现了Ghost注意力以改进多轮对话控制。Mistral利用滑动窗口注意力来处理扩展的上下文长度。
使用指令微调数据进行监督式微调(SFT)的过程至关重要。对于高质量的结果,数万个SFT注释就足够了,Llama-2使用的27540个注释就证明了这一点。在RLHF阶段,近端策略优化(PPO)通常是首选的算法,以更好地使模型的行为与人类偏好和指令遵循相一致,在增强LLM安全性方面发挥着关键作用。PPO的另一种选择是直接偏好优化(DPO)。例如,Zephyr-7B采用了蒸馏的DPO,并在各种通用基准上显示了与70B-LLMs相当的结果,甚至超过了AlpacaEval上的GPT-3.5-turbo。
随着基础模型的发布,数据污染的问题变得越来越明显,这些模型模糊了其预训练语料库的来源。这种透明度的缺乏可能会导致人们对LLM的真正泛化能力的偏见。忽略基准数据通过人类专家的注释或更大的模型手动集成到训练集的情况,数据污染问题的根源在于基准数据的收集来源已经包含在预训练语料库中。虽然这些模型不是故意使用监督数据进行预训练,但它们仍然可以获得准确的知识。因此,解决检测LLM的预训练语料的挑战至关重要,需要探索现有基准和广泛使用的预训练语料之间的重叠,以及评估对基准的过拟合。这些努力对于提高LLM的忠实度和可靠性至关重要。
基于RLHF在利用一般偏好数据进行对齐方面的应用受到了越来越多的关注。然而,只有有限数量的开源LLM使用RLHF进行对齐,这主要是由于高质量的、公开可用的偏好数据集和预训练奖励模型的稀缺。一些研究人员试图为开源社区做出贡献。然而,在复杂的推理、编程和安全场景中,仍然面临缺乏多样化、高质量和可扩展的偏好数据的挑战。
回顾本文概述的基本能力的突破,揭示了一些具有挑战性的场景:
主要贡献:
https://github.com/ntunlp/OpenSource-LLMs-better-than-OpenAI/tree/main