LLaMA: Open and Efficient Foundation Language Models

郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

 

Abstract

  我们介绍LLaMA,它是一组基础语言模型,参数范围从7B到65B。我们在数万亿的token上训练我们的模型,并表明完全使用公开可用的数据集训练最先进的模型是可能的,而无需求助于专有且不可访问的数据集。特别是,LLaMA-13B在大多数基准测试中都优于GPT-3 (175B),并且LLaMA-65B与最好的模型Chinchilla-70B和PaLM-540B具有竞争力。我们向研究界发布所有模型1

 

1 Introduction

  在大量文本语料库上训练的大语言模型(LLM)已经显示出它们从文本指令或几个例子中执行新任务的能力(Brown et al., 2020)。当将模型扩展到足够大的尺寸时,这些小样本特性首次出现(Kaplan et al., 2020),引出了一系列工作,重点是进一步扩展这些模型(Chowdhery et al., 2022; Rae et al., 2021)。这些努力是基于这样一种假设,即更多的参数将带来更好的性能。然而,Hoffmann等人(2022)最近的工作表明,对于给定的计算预算,最佳性能不是由最大的模型实现的,而是由在更多数据上训练的较小模型实现的。

  Hoffmann等人(2022)的缩放定律的目标是确定如何为特定的训练计算预算最佳地缩放数据集和模型大小。然而,这一目标忽略了推理预算,这在大规模服务于语言模型时变得至关重要。在这种情况下,给定目标性能水平,较优模型不是训练最快的,而是推理最快的。尽管训练大型模型以达到一定性能水平可能更便宜,但训练时间较长的小型模型的最终推理更便宜。例如,尽管Hoffmann等人(2022)建议在200B token上训练10B模型,但我们发现即使在1T token之后,7B模型的性能也会继续提高。

  这项工作的重点是训练一系列语言模型,通过在比通常使用的token更多的token上进行训练,在各种推理预算下实现尽可能好的性能。由此产生的模型称为LLaMA,其参数范围从7B到65B,与现有的最佳LLM相比具有竞争力。例如,LLaMA-13B在大多数基准测试中都优于GPT-3,尽管它比GPT-3小10倍。我们相信,这个模型将有助于LLM的访问和研究民主化,因为它可以在单个GPU上运行。在规模的高端,我们的65B参数模型也与最好的大语言模型(如Chinchilla或PaLM-540B)具有竞争力。

  与Chinchilla、PaLM或GPT-3不同,我们只使用公开可用的数据,使我们的工作与开源兼容,而大多数现有模型依赖于未公开或未记录的数据(例如“Books-2TB”或“社交媒体对话”)。存在一些例外,特别是OPT (Zhang et al., 2022)、GPT-NeoX (Black et al., 2022)、BLOOM (Scao et al., 2022)和GLM (Zeng et al., 2022),但都不能与PaLM-62B或Chinchilla竞争。

  在本文的其余部分中,我们概述了我们对Transformer架构(Vaswani et al., 2017)所做的修改,以及我们的训练方法。然后,我们报告我们的模型的性能,并在一组标准基准上与其他LLM进行比较。最后,我们使用负责任的人工智能社区的一些最新基准,揭示了我们模型中编码的一些偏见和毒性。

 

2 Approach

  我们的训练方法类似于先前工作中描述的方法(Brown et al., 2020; Chowdhery et al., 2022),并受到Chinchilla缩放定律的启发(Hoffmann et al., 2022)。我们使用标准优化器在大量文本数据上训练大型Transformer。

 

2.1 Pre-training Data

  我们的训练数据集是几个来源的混合,如表1所示,涵盖了一组不同的领域。在大多数情况下,我们重用已被用来训练其他LLM的数据源,但仅限于使用公开可用且与开源兼容的数据。这导致了以下数据及其在训练集中所代表的百分比的混合:

English CommonCrawl [67%]。我们使用CCNet流水线预处理了2017年至2020年的五个CommonCrawl转储(Wenzek et al., 2020)。该过程在行级别消除重复数据,使用fastText线性分类器执行语言识别以删除非英语页面,并使用n-gram语言模型过滤低质量内容。此外,我们训练了一个线性模型来对维基百科中用作参考文献的页以及未被分类为参考文献的随机采样的页与丢弃页进行分类。

C4 [15%]。在探索性实验中,我们观察到使用不同的预处理CommonCrawl数据集可以提高性能。因此,我们将公开可用的C4数据集(Raffel et al., 2020)纳入我们的数据中。C4的预处理还包括重复数据消除和语言识别步骤:与CCNet的主要区别在于质量过滤,它主要依赖于启发式方法,如标点符号的存在或网页中的单词和句子的数量。

Github [4.5%]。我们使用Google BigQuery上提供的公共GitHub数据集。我们只保留了在Apache、BSD和MIT许可证下分发的项目。此外,我们使用基于行长度或字母数字字符比例的启发式方法过滤低质量文件,并使用正则表达式删除样板文件,如头。最后,我们在文件级别对生成的数据集进行重复数据消除,并进行精确匹配。

Wikipedia [4.5%]。我们添加了2022年6月至8月期间的维基百科转储,涵盖20种语言,使用拉丁语或西里尔文:bg、ca、cs、da、de、en、es、fr、hr、hu、it、nl、pl、pt、ro、ru、sl、sr、sv、uk。我们处理数据以删除超链接、评论和其他格式样板。

Gutenberg and Books3 [4.5%]。我们在训练数据集中包括两个图书语料库:Gutenberg Project,其中包含公共领域的图书,以及ThePile的Books3部分(Gao et al., 2020),这是一个用于训练大语言模型的公共数据集。我们在书本级别执行重复数据消除,删除内容重叠超过90%的书本。

ArXiv [2.5%]。我们处理arXiv Latex文件,将科学数据添加到我们的数据集中。根据Lewkowycz等人(2022),我们删除了第一节之前的所有内容以及参考书目。我们还删除了.tex文件中的注释,并内联扩展了用户编写的定义和宏,以提高论文的一致性。

Stack Exchange [2%]。我们包括Stack Exchange,这是一个高质量问答网站,涵盖了从计算机科学到化学等多个领域。我们保留了28个最大网站的数据,删除了文本中的HTML标签,并按分数对答案进行了排序(从高到低)。

Tokenizer。我们使用字节对编码(byte-pair encoding, BPE)算法(Sennrich et al., 2015),采用SentencePiece (Kudo and Richardson, 2018)的实现来标记(tokenize)数据。值得注意的是,我们将所有数字拆分为单个数字,并回退到字节以分解未知的UTF-8字符。

  总体而言,我们的整个训练数据集在标记化(tokenization)后包含大约1.4T的token。对于我们的大多数训练数据,每个token在训练期间只使用一次,维基百科和图书领域除外,我们在这两个领域上执行了大约两个epoch。

 

2.2 Architecture

  继最近对大语言模型的研究之后,我们的网络基于Transformer架构(Vaswani et al., 2017)。我们利用了随后提出的各种改进,并在不同的模型中使用,如PaLM。以下是与原始结构的主要区别,以及我们在哪里找到了这一变化的灵感(括号中):

预归一化 [GPT3]。为了提高训练稳定性,我们对每个Transformer子层的输入进行归一化,而不是对输出进行归一化。我们使用(Zhang and Sennrich, 2019)介绍的RMSNorm归一化函数。

SwiGLU激活函数 [PaLM]。我们用Shazeer (2020)引入的SwiGLU激活函数取代了ReLU非线性,以提高性能。我们使用的尺寸,而不是PaLM中的4d。

旋转嵌入 [GPTNeo]。我们删除了绝对位置嵌入,而是在网络的每一层添加了Su等人(2021)引入的旋转位置嵌入(RoPE)。

  表2中给出了我们不同模型的超参数的详细信息。

 

2.3 Optimizer

  我们的模型使用AdamW优化器(Loshchilov and Hutter, 2017)进行训练,具有以下超参数:β1 = 0.9,β2 = 0.95。我们使用余弦学习率调度,使得最终学习率等于最大学习率的10%。我们使用0.1的权重衰减和1.0的梯度剪裁。我们使用2000个预热步骤,并随着模型的大小而改变学习率和批量大小(详见表2)。

 

2.4 Efficient implementation

  我们进行了一些优化以提高模型的训练速度。首先,我们使用因果多头注意力的有效实现来减少内存使用和运行时间。该实现可在xformers库2中获得,灵感来自(Rabe and Staats, 2021),并使用了Dao等人(2022)的反向。这是通过不存储注意力权重和不计算由于语言建模任务的因果性质而掩码的键/查询分数来实现的。

  为了进一步提高训练效率,我们减少了在带有检查点的后向传播过程中重新计算的激活次数。更准确地说,我们节省了计算成本高昂的激活,例如线性层的输出。这是通过手动实现Transformer层的反向函数来实现的,而不是依赖PyTorch autograd。如Korthikanti等人(2022)所述,为了充分受益于这种优化,我们需要通过使用模型和序列并行性来减少模型的内存使用。此外,我们还尽可能多地重叠激活的计算和GPU之间通过网络的通信(由于all_reduce操作)。

  当训练65B参数模型时,我们的代码在2048 A100 GPU和80GB RAM上处理大约380个token/秒/GPU。这意味着在包含1.4T token的数据集上训练大约需要21天。

 

2 https://github.com/facebookresearch/xformers

 

3 Main results

  根据之前的工作(Brown et al., 2020),我们考虑了零样本和小样本任务,并报告了总共20个基准的结果:

  • 零样本。我们提供了任务的文本描述和一个测试示例。该模型要么使用开放式生成提供答案,要么对提出的答案进行排名。
  • 小样本。我们提供了一些任务示例(介于1和64之间)和一个测试示例。该模型将此文本作为输入,并生成答案或对不同的选项进行排序。

  我们将LLaMA与其他基础模型进行了比较,即非公开可用的语言模型GPT-3 (Brown et al., 2020)、Gopher (Rae et al., 2021)、Chinchilla (Hoffmann et al., 2022)和PaLM (Chowdhery et al., 2022),以及开源的OPT模型(Zhang et al., 2022)、GPT-J (Wang and Komatsuzaki, 2021)和GPT-Neo (Black et al., 2022)。在第4节中,我们还将LLaMA与OPT-IML (Iyer et al., 2022)和Flan-PaLM (Chung et al., 2021)等指令调优模型进行了简要比较。

  我们在自由形式生成任务和多选任务上评估LLaMA。在多选任务中,目标是根据提供的上下文,在一组给定的选项中选择最合适的完成方式。在给定上下文的情况下,我们选择具有最高可能性的完成。我们遵循Gao等人(2021),并使用由完成中的字符数归一化的可能性,除了某些数据集(OpenBookQA,BoolQ),我们遵循Brown等人(2020),并根据给定“Answer:”的完成可能性归一化的可能性选择完成,作为上下文:P(completion|context)/P(completion|"Answer:")。

 

3.1 Common Sense Reasoning

  我们考虑了八个标准的常识推理基准:BoolQ (Clark et al., 2019)、PIQA (Bisk et al., 2020)、SIQA (Sap et al., 2019),HellaSwag (Zellers et al., 2019)、WinoGrande (Sakaguchi et al., 2021)、ARC easy and challenge (Clark et al., 2018)和OpenBookQA (Mihaylov et al., 2018)。这些数据集包括Cloze和Winograd风格的任务,以及多选问题回答。我们在零样本设置中进行评估,就像在语言建模社区中所做的那样。

  在表3中,我们与现有的各种规模的模型和相应论文的报告编号进行了比较。首先,LLaMA-65B在除BoolQ之外的所有报告基准上都优于Chinchilla-70B。同样,除了在BoolQ和WinoGrande上,这个模型在任何地方都超越了PaLM-540B。LLaMA-13B模型虽然小了10倍,但在大多数基准测试中也优于GPT-3。

 

3.2 Closed-book Question Answering

  我们在两个闭书问答基准上将LLaMA与现有的大语言模型进行了比较:自然问题(Kwiatkowski et al., 2019)和TriviaQA (Joshi et al., 2017)。对于这两个基准,我们在闭书环境中报告了完全匹配的性能,即模型无法访问包含回答问题的证据的文档。在表4中,我们报告了NaturalQuestions的性能,在表5中,我们报道了TriviaQA。在这两个基准测试中,LLaMA-65B在零样本和小样本设置中实现了一流的性能。更重要的是,LLaMA-13B在这些基准上与GPT-3和Chinchilla相比也具有竞争力,尽管规模小5-10倍。在推理过程中,此模型在单个V100 GPU上运行。

 

3.3 Reading Comprehension

  我们在RACE阅读理解基准上评估我们的模型(Lai et al., 2017)。该数据集是从为中国中学生和高中生设计的英语阅读理解考试中收集的。我们遵循Brown等人(2020)的评估设置,并在表6中报告结果。在这些基准测试中,LLaMA-65B与PaLM-540B具有竞争力,并且LLaMA-13B的性能优于GPT-3几个百分点。

 

3.4 Mathematical reasoning

  我们在两个数学推理基准上评估我们的模型:MATH (Hendrycks et al., 2021)和GSM8k (Cobbe et al., 2020)。MATH是用LaTeX编写的12K中学和高中数学问题的数据集。GSM8k是一组中学数学问题。在表7中,我们与PaLM和Minerva (Lewkowycz et al., 2022)进行了比较。Minerva是一系列对从ArXiv和Math网页中提取的38.5B token进行微调的PaLM模型,而PaLM和LLaMA都没有对数学数据进行微调。PaLM和Minerva的数字取自Lewkowycz等人(2022),我们比较了有无maj1@k。maj1@k表示我们为每个问题生成k个样本并进行多数投票的评估(Wang et al., 2022)。在GSM8k上,我们观察到LLaMA65B的性能优于Minerva-62B,尽管它没有在数学数据上进行微调。

 

3.5 Code generation

  我们在两个基准上评估了我们的模型从自然语言描述编写代码的能力:HumanEval (Chen et al., 2021)和MBPP (Austin et al., 2020)。对于这两项任务,模型都会收到几句话中的程序描述,以及一些输入输出示例。在HumanEval中,它还接收一个函数签名,提示被格式化为自然代码,其中包含文档字符串中的文本描述和测试。模型需要生成一个符合描述并满足测试用例的Python程序。在表8中,我们比较了我们的模型与未在代码上进行微调的现有语言模型的pass@1分数,即PaLM和LaMDA (Thoppilan et al., 2022)。PaLM和LLaMA在包含相似数量代码token的数据集上进行训练。

  如表8所示,对于相似数量的参数,LLaMA的性能优于其他通用模型,如LaMDA和PaLM,它们不是专门针对代码进行训练或微调的。具有13B参数和更多参数的LLaMA在HumanEval和MBPP上都优于LaMDA 137B。LLaMA 65B的性能也优于PaLM 62B,即使训练时间更长。该表中报告的pass@1结果是通过在温度为0.1时取样获得的。这个pass@100和pass@80度量在温度为0.8时获得。我们使用与Chen等人(2021)相同的方法获得pass@k。

  可以通过对特定于代码的token进行微调来提高代码的性能。例如,PaLM编码器(Chowdhery et al., 2022)将PaLM在HumanEval上的pass@1得分从26.2%上升到36%。专门为代码训练的其他模型在这些任务上也比一般模型表现得更好(Chen et al., 2021; Nijkamp et al., 2022; Fried et al., 2022)。对代码token的微调超出了本文的范围。

 

3.6 Massive Multitask Language Understanding

  Hendrycks等人(2020)引入的大规模多任务语言理解基准(MMLU)由多项选择题组成,涵盖了包括人文学科、STEM和社会科学在内的各个知识领域。我们使用基准提供的示例,在5样本设置中评估我们的模型,并在表9中报告结果。在这个基准上,我们观察到LLaMA-65B在大多数领域平均落后于Chinchilla70B和PaLM-540B几个百分点。一个潜在的解释是,我们在预训练数据中使用了有限数量的书籍和学术论文,即ArXiv、Gutenberg和Books3,其总和仅为177GB,而这些模型是在高达2TB的书籍上训练的。Gopher、Chinchilla和PaLM使用的大量书籍也可以解释为什么Gopher在该基准上优于GPT-3,而在其他基准上具有可比性。

 

3.7 Evolution of performance during training

  在训练过程中,我们跟踪了模型在一些问答和常识基准上的性能,并在图2中进行了报告。在大多数基准测试中,性能稳步提高,并与模型的训练困惑相关(见图1)。SIQA和WinoGrande除外。最值得注意的是,在SIQA上,我们观察到性能存在很大差异,这可能表明该基准不可靠。在WinoGrande上,表现与训练困惑并不相关:LLaMA-33B和LLaMA-65B在训练中表现相似。

 

4 Instruction Finetuning

  在本节中,我们将展示对指令数据的短暂微调可以快速改进MMLU。尽管LLaMA-65B的非微调版本已经能够遵循基本指令,但我们观察到,非常少量的微调可以提高MMLU的性能,并进一步提高模型遵循指令的能力。由于这不是本文的重点,我们只按照与Chung等人(2022)相同的协议进行了一次实验,训练了一个指令模型LLaMA-I。

  在表10中,我们报告了MMLU上的指令模型LLaMA-I的结果,并与现有的中等规模的指令微调模型进行了比较,即OPT-IML (Iyer et al., 2022)和Flan-PaLM系列(Chung et al., 2021)。所有报告的数字都来自相应的论文。尽管这里使用的指令微调方法很简单,但我们在MMLU上达到了68.9%。LLaMA-I (65B)在MMLU上的性能优于现有的中等大小的指令微调模型,但仍远未达到最先进的水平,即MMLU上GPT code-davinci-002的77.4(数字取自Iyer等人(2022))。MMLU在57个任务上的性能细节可在附录的表16中找到。

 

5 Bias, Toxicity and Misinformation

 

5.1 RealToxicityPrompts

 

5.2 CrowS-Pairs

 

5.3 WinoGender

 

5.4 TruthfulQA

 

6 Carbon footprint

 

7 Related work

 

8 Conclusion

 

posted on 2024-06-12 16:55  穷酸秀才大草包  阅读(31)  评论(0编辑  收藏  举报

导航