做百度联盟怎么才能创建多个网站,家具网站开发设计任务书,创建吃的网站怎么做,wordpress图片水印A Survey of Large Language Model AbstractINTRODUCTIONOVERVIEW背景LLM的新兴能力LLM的关键技术GPT 系列模型的技术演进 大语言模型资源公开可用的模型检查点或 API常用语料库代码库资源 预训练数据收集架构 论文标题#xff1a;A Survey of Large Language Model 论文地址A Survey of Large Language Model 论文地址https://arxiv.org/abs/2303.18223 githubhttps://github.com/RUCAIBox/LLMSurvey 中文版本https://github.com/RUCAIBox/LLMSurvey/blob/main/assets/LLM_Survey_Chinese.pdf Abstract
自20世纪50年代图灵测试提出以来人类就开始探索机器掌握语言智能。语言本质上是一个受语法规则控制的复杂的人类表达系统。开发强大的人工智能 (AI) 算法来理解和掌握语言提出了重大挑战。作为一种主要方法语言建模在过去二十年中被广泛研究用于语言理解和生成从统计语言模型发展到神经语言模型。最近通过在大规模语料库上预训练 Transformer 模型提出了预训练语言模型PLM在解决各种自然语言处理NLP任务方面表现出了强大的能力。由于研究人员发现模型缩放可以带来性能提升因此他们通过将模型大小增加到更大来进一步研究缩放效果。有趣的是当参数规模超过一定水平时这些扩大的语言模型不仅实现了显着的性能提升而且还表现出了一些小规模语言模型例如 BERT中不存在的特殊能力例如上下文学习 。
为了区分参数规模的差异研究界为规模较大例如包含数百或数千亿个参数的 PLM 创建了术语“大型语言模型”(LLM)。近年来学术界和工业界对LLMs的研究取得了很大进展其中一个显着进展是ChatGPT基于LLMs开发的强大AI聊天机器人的推出引起了社会的广泛关注。 LLMs的技术演变对整个人工智能社区产生了重要影响这将彻底改变我们开发和使用人工智能算法的方式。考虑到这种快速的技术进步在本次调查中我们通过介绍背景、主要发现和主流技术来回顾LLMs的最新进展。我们特别关注LLMs的四个主要方面即预训练、适应调优、利用和容量评估。此外我们还总结了开发LLMs的可用资源并讨论了未来方向的剩余问题。这项调查提供了有关LLMs文献的最新综述这对研究人员和工程师来说都是有用的资源。
INTRODUCTION
语言是人类表达和交流的一种重要能力在幼儿期发展并在一生中不断发展[1, 2]。而对于机器来说除非配备强大的人工智能AI算法否则它们无法自然地掌握以人类语言形式进行理解和交流的能力。为了实现这一目标使机器能够像人类一样阅读、写作和交流一直是一项长期的研究挑战[3]。从技术上讲语言建模LM是提高机器语言智能的主要方法之一。一般来说LM 的目标是对单词序列的生成可能性进行建模从而预测未来或缺失标记的概率。 LM的研究受到文献的广泛研究关注大致可分为四个主要发展阶段
统计语言模型Statistical language models SLM SLM [4-7] 是基于 20 世纪 90 年代兴起的统计学习方法开发的。基本思想是基于马尔可夫假设构建单词预测模型例如根据最近的上下文预测下一个单词。具有固定上下文长度 n 的 SLM 也称为 n-gram 语言模型例如二元模型和三元模型。 SLM 已被广泛应用于提高信息检索 (IR) [8, 9] 和自然语言中的任务处理NLP[10–12]。然而它们经常遭受维数灾难由于需要估计指数数量的转移概率因此很难准确估计高阶语言模型。因此引入了专门设计的平滑策略例如退避估计[13]和Good-Turing估计[14]来缓解数据稀疏问题。神经语言模型(Neural language models NLM)NLM [15-17] 通过神经网络例如循环神经网络RNN来表征单词序列的概率。作为一个显着的贡献[15]中的工作引入了单词的分布式表示的概念并通过聚合相关的分布式单词向量来建模上下文表示。通过扩展学习单词或句子的有效特征的思想开发了一种通用的神经网络方法来为各种 NLP 任务构建统一的解决方案 [18]。此外word2vec [19, 20] 被提议构建一个简化的浅层神经网络来学习分布式单词表示这被证明在各种 NLP 任务中非常有效。这些研究开创了使用语言模型进行表征学习超越词序列建模对 NLP 领域产生了重要影响。预训练语言模型(Pre-trained language models PLM)作为早期的尝试ELMo [21] 被提出通过首先预训练双向 LSTM (biLSTM) 网络而不是学习固定的单词表示并微调 biLSTM 网络来捕获上下文感知的单词表示。根据具体的下游任务。此外基于具有自注意力机制的高度并行化的Transformer架构[22]通过在大规模未标记语料库上使用专门设计的预训练任务来预训练双向语言模型提出了BERT[23]。这些预先训练的上下文感知单词表示作为通用语义特征非常有效这在很大程度上提高了 NLP 任务的性能标准。这项工作启发了大量的后续工作它设定了“预训练和微调”的学习范式。遵循这一范式已经开展了大量关于 PLM 的研究引入了不同的架构 [24, 25]例如 GPT-2 [26] 和 BART [24]或改进的预训练策略 [27-29] 。在此范例中通常需要微调 PLM 以适应不同的下游任务。大型语言模型( Large language models LLM):研究人员发现扩展 PLM例如扩展模型大小或数据大小通常会提高下游任务的模型能力即遵循扩展定律 [30]。许多研究通过训练更大的 PLM例如 175B 参数 GPT-3 和 540B 参数 PaLM来探索性能极限。尽管缩放主要在模型大小上进行具有相似的架构和预训练任务但这些大型 PLM 显示出与小型 PLM例如 330M 参数 BERT 和 1.5B 参数 GPT-2不同的行为并显示出令人惊讶的能力称为解决一系列复杂任务的新兴能力[31]。例如GPT-3 可以通过上下文学习解决小样本任务而 GPT-2 则不能做得很好。因此研究界为这些大型 PLM 创造了术语“大型语言模型 (LLM)”1 [32-35]。 LLM 的一个显着应用是 ChatGPT2它改编了 GPT 系列的 LLM 进行对话呈现出惊人的与人类对话的能力。
在现有文献中PLM 已被广泛讨论和调查[36-39]而 LLM 却很少得到系统的综述。为了激发我们的调查兴趣我们首先强调 LLM 和 PLM 之间的三个主要区别。
首先LLM展示了一些令人惊讶的新兴能力这些能力在以前的小型 PLM 中可能无法观察到。这些能力是语言模型在复杂任务上表现的关键使人工智能算法变得前所未有的强大和有效。其次LLM彻底改变了人类开发和使用人工智能算法的方式。与小型 PLM 不同访问 LLM 的主要方法是通过提示界面例如 GPT-4 API。人们必须了解LLM如何工作并以LLM可以遵循的方式安排他们的任务。第三LLM的发展不再明确区分研究和工程。LLM的培养需要丰富的大规模数据处理和分布式并行训练的实践经验。为了培养有能力的LLM研究人员必须解决复杂的工程问题与工程师合作或成为工程师。
尽管取得了进展和影响LLM的基本原则仍然没有得到很好的探索。
首先为什么新兴能力出现在 LLM 中而不是较小的 PLM 中这仍然是个谜。作为一个更普遍的问题目前仍然缺乏对影响LLM能力的关键因素进行深入、细致的调查。研究LLM何时以及如何获得这种能力非常重要[47]。尽管关于这个问题有一些有意义的讨论 [31, 47]但需要进行更有原则的调查来揭开LLM的“秘密”。其次为研究界培养有能力的LLM很困难。由于模型预训练成本巨大研究界很难进行重复性、消融性的研究。事实上LLM主要由行业培训许多重要的培训细节例如数据收集和清理并未向公众透露。第三让LLM与人类价值观或偏好保持一致非常具有挑战性。尽管有能力LLM也可能产生有毒、虚构或有害的内容。它需要有效且高效的控制方法来消除使用LLM的潜在风险[46]。 机遇与挑战并存LLM的研究与发展需要更多的关注。为了让大家对LLM有一个基本的了解本次调查从预训练如何预训练一个有能力的LLM、适应调优如何有效地调优预训练四个主要方面对LLM的最新进展进行了文献综述。从有效性和安全性、利用性如何利用LLM解决各种下游任务和能力评估如何评估LLM的能力和现有的实证结果两个角度来训练LLM。我们彻底梳理文献并总结LLM的主要发现、技术和方法。对于本次调查我们还通过收集LLM的支持资源创建了一个 GitHub 项目网站。 我们还知道一些关于 PLM 或 LLM 的相关评论文章 [32,36,38,39,43,48–54]。这些论文要么讨论 PLM要么讨论 LLM 的一些特定或一般方面。与它们相比我们重点关注开发和使用LLM的技术和方法对LLM的重要方面提供了相对全面的参考。
OVERVIEW
在本节中我们介绍了LLM的背景以及关键术语、能力和技术。
背景
通常大型语言模型LLM是指包含数千亿或更多参数5的语言模型这些模型是在海量文本数据上训练的[32]例如GPT-3 [55]、PaLM [56]、Galatica [35]和LLaMA[57]。具体来说LLM 是建立在 Transformer 架构 [22] 的基础上的其中多头注意力层堆叠在一个非常深的神经网络中。现有的LLM主要采用类似的模型架构即Transformer和预训练目标即语言建模作为小语言模型。主要区别是LLM在很大程度上扩展了模型大小、预训练数据和总计算放大数量级。他们可以更好地理解自然语言并根据给定的上下文即提示生成高质量的文本。这种容量的提高可以通过缩放定律来部分描述其中性能大致遵循模型大小的大幅增加[30]。然而根据缩放定律某些能力例如上下文学习[55]是不可预测的只有当模型大小超过一定水平时才能观察到如下所述。
LLM的新兴能力
在文献[31]中LLM的涌现能力被正式定义为“小模型中不存在但在大模型中出现的能力”这是LLM区别于以往PLM的最显着特征之一。当涌现能力出现时它还引入了一个显着的特征当规模达到一定水平时性能显着高于随机水平。以此类推这种涌现模式与物理学中的相变现象有着密切的联系[31, 58]。原则上涌现能力也可以根据一些复杂的任务来定义[31, 59]而我们更关心的是可以应用于解决多个任务的一般能力。在这里我们简要介绍一下LLM具有代表性的三种新兴能力描述如下。 现有文献中对于LLM的最小参数范围尚未达成正式共识。在本次调查中我们主要集中讨论模型大小大于10B的LLM。 In-context learning 情境学习: GPT-3[55]正式引入了上下文学习能力假设语言模型已经提供了自然语言指令和/或多个任务演示它可以通过完成以下任务来生成测试实例的预期输出输入文本的单词序列不需要额外的训练或梯度更新6。Instruction following 遵循指示: 通过对通过自然语言描述即指令格式化的多任务数据集的混合进行微调LLM 在以指令形式描述的看不见的任务上表现良好 [28,61,62]。有了这种能力指令调优使得LLM能够通过理解任务指令来执行新的任务而不需要使用显式的例子这可以很大程度上提高泛化能力。Step-by-step reasoning逐步推理: 对于小型语言模型通常很难解决涉及多个推理步骤的复杂任务例如数学文字问题。而通过思想链推理策略[33]LLM可以利用涉及中间推理步骤来得出最终答案的提示机制来解决此类任务。据推测这种能力可能是通过代码训练获得的 [33, 47]。
LLM的关键技术
LLM经历了很长的路才发展成为目前的状态一般和有能力的学习者。在开发过程中提出了许多重要技术极大地提高了LLM的能力。在这里我们简要列出了可能导致LLM成功的几种重要技术如下所示:
Scaling扩展扩展是提高LLM模型能力的关键因素。作为初步尝试GPT-3首先将模型规模增加到175B参数的极大规模。随后PaLM进一步将参数规模提升至540B的新纪录。如前所述大模型尺寸对于新兴能力至关重要。同时缩放不仅与模型大小有关还与数据大小和总计算有关[34, 63]。最近的一项研究[34]讨论了在给定固定预算的情况下模型大小、数据大小和总计算三个方面的最佳调度。此外预训练数据的质量对于实现良好的性能起着关键作用因此在扩展预训练语料库时数据收集和清理策略非常重要。Training 训练由于模型规模庞大成功培养一名有能力的LLM非常具有挑战性。需要分布式训练算法来学习LLM的网络参数其中常常联合使用各种并行策略。为了支持分布式训练已经发布了多个优化框架来促进并行算法的实现和部署例如 DeepSpeed [64] 和 Megatron-LM [65]。此外优化技巧对于训练稳定性和模型性能也很重要例如用训练损失尖峰重新启动[56]和混合精度训练[66]。GPT-4 [46] 提出开发特殊的基础结构和优化方法用更小的模型来可靠地预测大模型性能。Ability eliciting能力引导在大规模语料库上预训练之后LLM 具备了作为通用任务求解器的潜在能力。然而当 LLM 执行一些特定任务时这些能力可能不会显式地展示出来。作为技术手段设计合适的任务指令或具体的 ICL 策略可以激发这些能力。例如通过包含中间推理步骤CoT 提示已被证明对解决复杂的推理任务有效。此外我们还可以使用自然语言表达的任务描述对 LLM 进行指令微调以提高 LLM 在未见任务上的泛化能力。然而这些技术主要对应于 LLM 的涌现 能力可能对小语言模型的效果不同。 • Alignment tuning对齐微调由于 LLM 被训练用来捕捉预训练语料库的数据特征包括高质量和低质量的数据它们可能会为人类生成有毒、偏见甚至有害的内容。因此有必要使 LLM 与人类价值观保持一致例如有用性、诚实性和无害性。为此 InstructGPT [61] 设计了一种有效的微调方法使 LLM 能够按照期望的指令进行操作其中利用了基于人类反馈的强化学习技术 [61, 70]。它将人类纳入训练循环中采用精心设计的标注策略。ChatGPT 实际上采用类似于 InstructGPT 的技术在产生高质量、无害的回答例如拒绝回答侮辱性问题方面表现出很强的对齐能力。 • Tools manipulation工具操作从本质上讲LLM 是基于海量纯文本语料库进行文本生成训练的因此在那些不适合以文本形式表达的任务上表现不佳例如数字计算。此外它们的能力也受限于预训练数据例如无法获取最新信息。为了解决这些问题最近提出了一种技术即利用外部工具来弥补 LLM 的不足 [71, 72]。例如LLM 可以利用计算器进行准确计算 [71]利用搜索引擎检索未知信息 [72]。最近ChatGPT 已经实现了使用外部插件现有或新创建的应用程序的机制这类似于 LLM 的“眼睛和耳朵”。这种机制可以广泛扩展 LLM 的能力范围。
此外许多其他因素例如硬件升级也对 LLM 的成功做出了贡献。但是我们主要讨论在开发 LLM 方面的主要技术方法和关键发现。 已发现中文版本因此不再一一翻译 [中文版本]github上不去的话可在本用户下载资源中此处下载 GPT 系列模型的技术演进
OpenAI 对 LLM 的研究可以大致分为以下几个阶段
早期探索根据对 Ilya SutskeverOpenAI 联合创始人兼首席科学家的一次采访11在 OpenAI 的早期已经探索了使用语言模型来实现智能系统的想法但当时是尝试使用循环神经网络RNN[73]。随着 Transformer 的出现OpenAI开发了两个初始的 GPT 模型即 GPT-1[74] 和 GPT-2[26]它们可以看作是后来更强大模型如 GPT-3 和 GPT-4的基础。GPT-12017 年Google 引入了 Transformer 模型 [22]OpenAI 团队迅速使用这种新的神经网络架构进行语言建模工作。他们在 2018 年发布了第一个 GPT 模型即 GPT-1[74]并将 GPT 作为模型名称的缩写代表生成式预训练 Generative Pre-Training。GPT-1 是基于生成型的、仅解码器的Transformer 架构开发的并采用了无监督预训练和有监督微调的混合方法。GPT-1 为 GPT 系列模型建立了核心架构并确立了对自然语言文本进行建模基本原则即预测下一个单词。GPT-2GPT-2[26] 采用了与 GPT-1 类似的架构将参数规模增加到了 15 亿并使用大规模的网页数据集 WebText进行训练。正如 GPT-2 的论文所述它旨在通过无监督语言建模来执行任务而无需使用标记数据进行显式微调。为了推动这种方法他们引入了多任务求解的概率形式即(output|input, task)类似的方法已在 [75] 中采用它在给定输入和任务信息的条件下预测输出。为了对该条件概率建模自然语言文本可以自然地用作为格式化输入、输出和任务信息的统一方式。通过这种方式解决任务的过程可以被视为生成解决方案文本的单词预测问题。GPT-3 GPT-3 [55] 于 2020 年发布将模型参数扩展 到了更大的规模达到了 1750 亿。GPT-3 的论文正式介绍了 ICL 的概念它是以小样本或零样本的方式使用 LLM。ICL 可以指导 LLM 理解以自然语言文本的形式给出的任务。LLM 的预训练和使用在 ICL 下有着相同的语言建模范式预训练预测给定上下文条件下的后续文本序列而 ICL 预测正确的任务解决方案该解决方案可以被格式化为给定任务描述和示范下的文本序列。总体而言GPT-3 可以被视为从 PLM 到 LLM 进化过程中的一个重要里程碑。它通过实证证明将神经网络扩展到大的规模可以大幅增加模型的能力。 ICL代表的是Information Maximization and Contrastive Learning即信息最大化和对比学习。尽管在GPT-2的论文中没有明确提及ICL这个术语但是ICL的概念在GPT-2的无监督任务学习中起到了重要的作用。 信息最大化是指通过最大化模型对输入数据的预测能力来学习数据的有用表示。在GPT-2中模型通过从上下文中预测下一个单词或一段文本的方式来学习语言的表示。这样的预测任务迫使模型学习捕捉句子中的上下文依赖关系和语义信息。 对比学习是指通过将正样本与负样本进行对比使得模型能够更好地区分它们之间的差异。在GPT-2中对比学习通过在预测任务中引入掩码机制masking来实现。模型被要求根据上下文来预测被掩盖的单词这样可以使模型更好地理解上下文信息同时学习到单词之间的关联性。 能力增强由于其强大的能力GPT-3 已经成为 OpenAI 开发更强大 LLM 的基础模型。总体而言OpenAI 探索了两种主要方法来进一步改进 GPT-3 模型即使用代码数据进行训练以及与人类偏好的对齐。
使用代码数据进行训练原始的 GPT-3模型在纯文本上进行预训练的一个主要限制在于缺乏复杂任务的推理能力例如完成代码和解决数学问题。实际上GPT-3.5 模型是在基于代码的 GPT模型code-davinci-002的基础上开发的这表明使用代码数据进行训练是改善 GPT模型能力尤其是推理能力的一种非常有用的实践。此外还有一种猜测称使用代码数据进行训练可以极大地增加 LLM 的CoT 提示能力 [46]尽管这仍然需要更全面的验证。与人类对齐 近端策略优化 (Proximal PolicyOptimization, PPO) 的论文在 2017 年 7 月发表 [81]现在已经成为从人类偏好中学习的基础 RL 算法 [61]。InstructGPT[61] 在 2022 年 1月提出以改进 GPT-3 模型的与人类对齐能力正式建立了一个三阶段的基于人类反馈的强化学习RLHF算法。除了提高指令遵循能力之外RLHF 算法对于缓解有害或有毒内容的生成问题十分有效这对于 LLM 在实践中的安全部署至关重要。OpenAI 在一篇技术文章中描述了他们在对齐研究中的方法 [83]总结了三个有前途的方向“训练 AI 系统使用人类反馈协助人类评估以及做对齐研究”。
语言模型的重要里程碑基于所有的探索工作OpenAI 取得了两个重要的里程碑ChatGPT [84] 和 GPT-4 [45]
ChatGPT在 2022 年 11 月OpenAI 发布了对话语言模型 ChatGPT它是基于 GPT 模型GPT-3.5 和 GPT-4开发。正如官方博文所述 [84]ChatGPT 是以类似 InstructGPT的方式进行训练的在原始文章中称为“InstructGPT 的姊妹模型”但专门针对对话能力进行了优化。在 ChatGPT和 InstructGPT 的数据收集上他们指出了一个不同之处ChatGPT 训练数据是通过将人类生成的对话扮演用户和AI 两个角色与 InstructGPT 数据集结合起来以对话形式生成。ChatGPT 在与人类的交流中表现出卓越的能力拥有丰富的知识库擅长解决数学问题准确追踪多轮对话中的上下文并与人类的价值观保持一致以确保被安全使用。随后ChatGPT 支持了插件机制进一步通过已有工具或应用扩展了 ChatGPT 的功能。到目前为止它是 AI 历史上最强大的聊天机器人。ChatGPT 的发布对未来的 AI 研究产生了重大影响为探索类似人类的 AI 系统提供了新的方向。GPT-4作为另一重要的进展GPT-4 [45] 于 2023 年3 月发布将文本输入扩展到多模态信号。由于经过为期六个月的迭代对齐在 RLHF 训练中加入了额外的安全奖励信号GPT-4 对于具有恶意或挑衅的提问的响应更加安全。在技术报告中OpenAI 强调了如何安全开发 GPT-4并采用了多种干预策略来减轻语言模型的可能问题如幻觉、隐私和过度依赖。例如他们引入了一种称为红队评估redteaming的机制 [85] 来减少有害或生成有毒内容的可能性。作为另一个重要方面GPT-4 是在成熟的深度学习基础上开发的采用了改进的优化方法。他们引入了一种称为可预测扩展predictable scaling的新机制可以使用模型训练期间一小部分的计算量来准确预测最终性能。
大语言模型资源 此处链接众多建议参看原文 考虑到技术问题的挑战和计算资源的巨大需求开发或复现LLM 绝非易事。一种可行的方法是在现有的 LLM 的基础上进行开发即重复使用公开可用的资源进行增量开发或实验研究。在本节中我们简要整理了用于开发 LLM 的公开可用的资源包括公开的模型检查点或 API、语料库和代码库。3.1 公开可用的模型检查点或 API考虑到模型预训练的巨大成本训练良好的模型检查点对于研究组织开展 LLM 的研究和开发至关重要。由于参数规模是使用 LLM 时需要考虑的关键因素为了帮助用户根据其资源预算确定适当的研究内容我们将这些公开模型分为两个规模级别百亿参数量级别和千亿参数量级别。此外也可以直接使用公开的 API 执行推理任务而无需在本地运行模型。接下来我们对公开可用的模型检查点和 API 进行介绍。
公开可用的模型检查点或 API
百亿参数量级别的模型这类模型的参数规模除了 LLaMA最大版本 650 亿参数和 NLLB最大版本 545 亿参数大多在 100 亿至 200 亿之间。这一参数范围内的模型包括 mT5 [88]、PanGu-α [89]、T0 [28]、GPT-NeoX-20B [92]、CodeGen [91]、UL2 [94]、Flan-T5 [64] 和 mT0 [98] 等。作为最近发布的模型LLaMA65B[57] 在与指令遵循相关的任务中展现了卓越的性能。千亿参数量级别的模型在这类模型中只有少数几个模型进行了公开发布。其中OPT [95]、OPT-IML [99]、BLOOM [69]和 BLOOMZ [98] 的参数量几乎与 GPT-3175B大致相同而 GLM [97] 和 Galactica [34] 的参数数量分别为 1300 亿和1200 亿。大语言模型的公共 API相较于直接使用模型副本API提供了一种更方便的方式供普通用户使用 LLM使得用户无需在本地运行模型。作为使用 LLM 的代表性接口GPT 系列模型的 API [45, 55, 61, 78] 已经广泛应用于学术界和工业界16。OpenAI 提供了七个主要的 GPT-3 系列模型接口ada、babbage、curie、davinciGPT-3 系列中最强大的版本、text-ada-001、text-babbage-001 和text-curie-001。 常用语料库
与早期的小型 PLM 不同LLM 有着规模极大的参数量需要更大量且内容广泛的训练数据。为满足这种需求越来越多的可用于研究的训练数据集被发布到公共社区中。在本节我们将简要总结一些常用于训练 LLM 的语料库。基于它们的内容类型我们将这些语料库分为六个组别进行介绍Books、CommonCrawl、Reddit Links、Wikipedia、Code、Others。
Books BookCorpus [122] 是之前小规模模型如 GPT [74]和 GPT-2 [26]中常用的数据集包括超过 11,000 本电子书涵盖广泛的主题和类型如小说和传记。CommonCrawl CommonCrawl [132] 是最大的开源网络爬虫数据库之一能力达到了百万亿字节级别已经被广泛运用于训练 LLM。由于整个数据集非常大因此现有的研究主要在特定时间段内从中提取网页子集。然而由于网络数据中存在大量的噪音和低质量信息因此使用前需要进行数据预处理。目前有四个较为常用的基于 CommonCrawl的过滤数据集C4 [87]CC-Stories [124]CC-News [27]和 RealNews [125]。Reddit LinksReddit 是一个社交媒体平台用户可以在上面提交链接和帖子其他人可以通过“赞同”或“反对”投票。高赞的帖子通常被认为对多数用户是有帮助的可以用来创建高质量的数据集。WebText [26] 就是一个著名的基于 Reddit 的语料库它由 Reddit 上高赞的链接组成但尚未公开。作为替代有一个易于获取的开源替代品叫做 OpenWebText [126]。另一个从 Reddit 中提取的语料库是 PushShift.io [127]它是一个实时更新的数据集包括自 Reddit 创建以来的历史数据。Wikipedia Wikipedia [128] 是一个在线百科全书包含大量高质量的文章涵盖各种主题。Code为了收集代码数据现有工作主要是从互联网上爬取有开源许可证的代码。代码数据有两个主要来源包括开源许可证的公共代码库例如 GitHub和与代码相关的问答平台例如 StackOverflow。Others The Pile [130] 是一个大规模、多样化、开源的文本数据集有超过 800GB 数据内容包括书籍、网站、代码、科学论文和社交媒体平台等。它由 22 个多样化的高质量子集构成。
实际上为了预训练 LLM通常需要混合使用不同的数据源见图 2而不是单一的语料库。因此现有的研究通常混合几个现成的数据集如 C4、OpenWebText 和 the Pile等然后进行进一步的处理以获取预训练语料库。此外为了训练适用于特定应用的 LLM从相关源如 Wikipedia 和BigQuery提取数据以丰富预训练数据中的相应信息也很重要。为了快速了解现有 LLM 使用的数据来源我们介绍三个代表性 LLM 的预训练语料库
GPT-3175B[55] 是在混合数据集共 3000 亿 token上进行训练的包括 CommonCrawl [132]、WebText2 [55]、Books1 [55]、Books2 [55] 和 Wikipedia [128]。PaLM540B[56] 使用了一个由社交媒体对话、过滤后的网页、书籍、Github、多语言维基百科和新闻组成的预训练数据集共包含 7800 亿 token。•LLaMA [57] 从多个数据源中提取训练数据包括CommonCrawl、C4 [87]、Github、Wikipedia、书籍、ArXiv和 StackExchange。LLaMA6B和 LLaMA13B的训练数据大小为 1.0 万亿 token而 LLaMA32B和 LLaMA65B使用了 1.4 万亿 token。
代码库资源
Transformers [135] 是一个使用 Transformer 架构构建模型的开源 Python 库由 Hugging Face 开发和维护。 DeepSpeed [65] 是由 Microsoft 开发的深度学习优化库与 PyTorch 兼容。 Megatron-LM [66–68] 是由 NVIDIA 开发的深度学习库用于训练 LLM。 …
预训练
预训练为 LLM 的能力奠定了基础。通过在大规模语料库上进行预训练LLM 可以获得基本的语言理解和生成能力 [55, 56]。在这个过程中预训练语料库的规模和质量对于 LLM 获得强大的能力至关重要。此外为了有效地预训练 LLM也需要设计好模型架构、加速方法和优化技术。
数据收集
预训练语料库的来源可以广义地分为两种类型通用文本数据和专用文本数据。 在收集大量文本数据后对数据进行预处理特别是消除噪声、冗余、无关和潜在有害的数据 [56, 59]对于构建预训练语料库是必不可少的因为这些数据可能会极大地影响 LLM的能力和性能。 与小规模的 PLM 不同由于对计算资源的巨大需求通常不可能对 LLM 进行多次预训练迭代。因此在训练 LLM 之前构建一个准备充分的预训练语料库尤为重要.
架构
本节中我们将回顾 LLM 的架构设计包括主流架构、预训练目标和详细配置。 一般来说现有 LLM 的主流架构可以大致分为三种类型即编码器-解码器、因果解码器和前缀解码器。 更新中