网页优化与网站优,网站推广教学,wordpress插件dedecms,佛山优化网站关键词A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言
随着人工智能和机器学习领域的迅速发展#xff0c;语言模型已经从简单的词袋模型#xff08;Bag-of-Words#xff09;和N-gram模型演变为更… A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言
随着人工智能和机器学习领域的迅速发展语言模型已经从简单的词袋模型Bag-of-Words和N-gram模型演变为更为复杂和强大的神经网络模型。在这一进程中大型语言模型LLM尤为引人注目它们不仅在自然语言处理NLP任务中表现出色而且在各种跨领域应用中也展示了惊人的潜力。从生成文本和对话系统到更为复杂的任务如文本摘要、机器翻译和情感分析LLM正在逐渐改变我们与数字世界的互动方式。
然而随着模型规模的增加也出现了一系列挑战和问题包括但不限于计算复杂性、数据偏见以及模型可解释性。因此对这些模型进行全面而深入的了解变得至关重要。
本博客旨在提供一个全面的大型语言模型综述探讨其工作原理、应用范围、优点与局限以及未来的发展趋势。无论您是该领域的研究者、开发者还是对人工智能有广泛兴趣的读者这篇综述都将为您提供宝贵的洞见。
本系列文章内容大部分来自论文《A Survey of Large Language Models》旨在使读者对大模型系列有一个比较程序化的认识。
论文地址https://arxiv.org/abs/2303.18223
3. RESOURCES OF LLMS
开发或复制大型语言模型(LLMs)绝非易事考虑到复杂的技术问题和庞大的计算资源需求。一种可行的方法是从现有的LLMs中学习经验并重复使用公开可用的资源来进行增量开发或实验研究。在本节中我们将简要总结用于开发LLMs的公开可用资源包括模型检查点或API、语料库和库文件。
3.1 公开可用的模型CheckPoints或 API
考虑到模型预训练的巨大成本经过良好训练的模型检查点对于研究界开发LLMs至关重要。由于参数规模是使用LLMs时需要考虑的关键因素我们将这些公开模型分为两个规模级别即数百亿参数和数千亿参数这有助于用户根据其资源预算来确定合适的资源。此外对于推断任务我们可以直接使用公开API执行任务而无需在本地运行模型。接下来我们将介绍公开可用的模型检查点和API。
100亿(10B)参数级别模型
在这个类别中大多数模型的参数规模介于10亿到20亿之间除了LLaMA [57]和LLaMA2 [90]最大版本包含70亿参数NLLB [82]最大版本包含54.5亿参数以及Falcon [121]最大版本包含40亿参数。该范围内的其他模型包括mT5 [74]PanGu-α [75]T0 [28]GPT-NeoX-20B [78]CodeGen [77]UL2 [80]Flan-T5 [64]和mT0 [85]。其中FlanT511B版本可以作为研究指导调整的首选模型因为它从三个方面探索了指导调整增加任务数量扩大模型规模以及使用链式思考提示数据进行微调 [64]。此外CodeGen11B版本作为一个用于生成代码的自回归语言模型可以被认为是探索代码生成能力的良好选择。它还引入了一个新的基准测试MTPB [77]专门用于多轮程序合成由115个专家生成的问题组成。为了解决这些问题需要LLMs获得足够的编程知识如数学、数组操作和算法。最近CodeGen2 [88]已经发布以探索模型架构、学习算法和数据分布选择对模型的影响。作为另一个专注于编码能力的LLMStarCoder [89]也取得了出色的成绩。对于多语言任务mT013B版本可能是一个不错的候选模型它已经在多语言任务和多语言提示上进行了微调。此外基于深度学习框架MindSpore [122]开发的PanGu-α [75]在零样本或少样本设置下在中文下游任务中表现良好。请注意PanGu-α [75]拥有多个版本的模型最多达到200亿参数而最大的公开版本有13亿参数。作为一款受欢迎的LLMLLaMA65B版本[57]拥有约五倍于其他模型的参数在涉及指令遵循的任务中表现出卓越性能。与LLaMA相比LLaMA2 [90]在人类反馈强化学习RLHF方面进行了更多的探索并开发了一个面向聊天的版本称为LLaMA-chat在一系列有用性和安全性基准测试中通常优于现有的开源模型。由于其开放性和有效性LLaMA引起了研究界的广泛关注许多工作 [123–126]已经致力于微调或不断预训练其不同的模型版本以实现新模型或工具的实施。最近另一款开源LLM Falcon [121]也在开放基准测试中取得了非常出色的表现。它的特点是更加谨慎的数据清理过程用于准备预训练数据使用公开共享的数据集RefinedWeb [127]。通常在这个规模下进行预训练模型需要数百甚至数千个GPU或TPU。例如GPT-NeoX-20B使用12台超微服务器每台配备8个NVIDIA A100-SXM4-40GB GPU而LLaMA据其原始出版物报道使用了2,048个A100-80G GPU。为了准确估计所需的计算资源建议使用衡量涉及计算数量的指标例如FLOPS即每秒浮点数操作数[30]。
1000亿(100B)参数级别模型
在这个类别的模型中只有少数几个模型已经公开发布。例如OPT [81]OPT-IML [86]BLOOM [69]和BLOOMZ [85]的参数数量几乎与GPT-3175B版本相同而GLM [84]和Galactica [35]分别有130B和120B的参数。其中OPT175B版本以及专为开放共享而推出的instruction-tuned版本OPT-IML旨在使研究人员能够进行可重复研究。对于跨语言通用化研究由于在多语言语言建模任务中的竞争力BLOOM176B版本和BLOOMZ176B版本可以作为基础模型使用。作为一款双语LLMGLM还提供了一款受欢迎的小型中文聊天模型ChatGLM2-6BChatGLM-6B的升级版本具有在效率和容量方面的许多改进例如量化、32K长度上下文、快速推理速度。这个规模的模型通常需要成千上万个GPU或TPU来训练。例如OPT175B版本使用了992个A100-80GB GPU而GLM130B版本使用了一个包含96个NVIDIA DGX-A1008x40GGPU节点的集群。
LLaMA模型系列
Meta AI在2023年2月推出了LLaMA模型系列[57]包括四个规模7B13B30B和65B。自发布以来LLaMA引起了研究界和工业界的广泛关注。LLaMA模型在各种开放基准测试中表现出非常出色的性能成为迄今为止最受欢迎的开放语言模型。许多研究人员通过指导调整或持续预训练来扩展LLaMA模型。特别是由于相对较低的计算成本指导调整LLaMA已成为开发定制或专业模型的主要方法之一。为了有效地在非英语语言中适应LLaMA模型通常需要扩展原始词汇表主要基于英语语料库训练或使用目标语言中的指导或数据进行微调。在这些扩展模型中Stanford Alpaca [128]是第一个基于LLaMA7B进行精细调整的开放指导模型。它是通过使用text-davinci-003生成的52K个指导示范来进行训练的。指导数据名为Alpaca-52K训练代码已广泛用于后续工作如AlpacaLoRA [130]使用LoRA [131]复制的Stanford AlpacaKoala [132]和BELLE [133]。此外Vicuna [124]是另一种流行的LLaMA变体是基于来自ShareGPT的用户共享对话进行训练的。由于LLaMA模型系列的出色性能和可用性许多多模态模型将它们作为基础语言模型以实现强大的语言理解和生成能力。与其他变体相比Vicuna在多模态语言模型中更受欢迎这导致了许多受欢迎模型的出现包括LLaVA [134]MiniGPT4 [135]InstructBLIP [136]和PandaGPT [137]。LLaMA的发布极大推动了LLM研究的进展。为了总结在LLaMA上进行的研究工作我们在图4中呈现了一个简要的演化图。 图 4LLaMA 研究工作的演化图。由于数量巨大我们无法在此图中包含所有 LLaMA 变体即使是很多优秀的作品。
公开的大语言模型API
与直接使用模型副本相比API提供了一个更便捷的方式使普通用户能够使用LLMs而无需在本地运行模型。作为使用LLMs的代表性接口GPT系列模型[46, 55, 61, 92]的API已广泛用于学术界和工业界17。OpenAI为GPT-3系列模型提供了七个主要的接口adababbagecuriedavinciGPT-3系列中最强大的版本text-ada-001text-babbage-001和text-curie-001。其中前四个接口可以在OpenAI的主机服务器上进一步进行微调。特别是babbagecurie和davinci分别对应于GPT-31BGPT-36.7B和GPT-3175B模型[55]。此外还有两个与Codex [92]相关的API称为code-cushman-001Codex12B的强大和多语言版本[92]和code-davinci-002。此外GPT-3.5系列包括一个基础模型code-davinci-002和三个增强版本即text-davinci-002text-davinci-003和gpt-3.5-turbo-0301。值得注意的是gpt-3.5-turbo-0301是调用ChatGPT的接口。最近OpenAI还发布了GPT-4的相应API包括gpt-4gpt-4-0314gpt-4-32k和gpt-4-32k-0314。总的来说API接口的选择取决于具体的应用场景和响应要求。详细的使用说明可以在它们的项目网站上找到。
3.2 常用语料库
相对于早期的PLMs包含大量参数的LLMs需要更多的训练数据涵盖了广泛的内容范围。为了满足这个需求越来越多的可访问的训练数据集已经发布供研究使用。在本节中我们将简要总结用于训练LLMs的几个广泛使用的语料库。根据它们的内容类型我们将这些语料库分为六组书籍、CommonCrawl、Reddit链接、维基百科、代码和其他。
书籍
BookCorpus [138]是以前小规模模型例如GPT [109]和GPT-2 [26]中常用的数据集包括超过11,000本涵盖广泛主题和类型例如小说和传记的书籍。另一个大规模的书籍语料库是Project Gutenberg [139]包括超过70,000本文学作品包括小说、散文、诗歌、戏剧、历史、科学、哲学和其他类型的公共领域作品。它目前是最大的开源书籍集合之一用于MT-NLG [100]和LLaMA [57]的训练。至于GPT-3 [55]中使用的Books1 [55]和Books2 [55]它们比BookCorpus要大得多但目前尚未公开发布。
CommonCrawl.
CommonCrawl [148]是最大的开源网络爬取数据库之一包含PB级别的数据量已被广泛用作现有LLMs的训练数据。由于整个数据集非常大现有的研究主要从中提取特定时期的网页子集。然而由于网络数据中存在大量嘈杂和低质量信息因此在使用之前需要进行数据预处理。基于CommonCrawl有四个常用于现有工作的经过筛选的数据集C4 [73]CCStories [140]CC-News [27]和RealNews [141]。巨大的干净爬虫语料库C4包括五个变种19分别是en806Gen.noclean6Trealnewslike36Gwebtextlike17G和multilingual38T。en版本已被用于T5 [73]、LaMDA [63]、Gopher [59]和UL2 [80]的预训练。多语言的C4也称为mC4已被用于mT5 [74]。CC-Stories31G由CommonCrawl数据的子集组成其中内容以故事方式呈现。由于CC-Stories的原始来源目前不可用我们在表2中包含了一个复制版本即CC-Stories-R [149]。此外从CommonCrawl中提取的两个新闻语料库即REALNEWS120G和CC-News76G也常用作预训练数据。 Reddit链接
Reddit是一个社交媒体平台允许用户提交链接和文本帖子其他用户可以通过“赞成”或“反对”来投票。被高度赞成的帖子通常被认为很有用并可以用来创建高质量的数据集。WebText [26]是一个众所周知的语料库由Reddit上被高度赞成的链接组成但它并没有公开发布。作为替代有一个易于访问的开源替代品称为OpenWebText [142]。从Reddit中提取的另一个语料库是PushShift.io [143]这是一个实时更新的数据集包含了Reddit自创建以来的历史数据。Pushshift不仅提供每月的数据转储还提供有用的实用工具支持用户在整个数据集上进行搜索、摘要和初步调查。这使得用户可以轻松地收集和处理Reddit数据。
维基百科
维基百科[144]是一个在线百科全书包含大量关于各种主题的高质量文章。这些文章大多以解释性的写作风格附有支持参考文献编写涵盖了多种语言和领域。通常维基百科的仅英语筛选版本在大多数LLMs中被广泛使用例如GPT-3 [55]LaMDA [63]和LLaMA [57]。维基百科提供多种语言版本因此可以在多语言环境中使用。
代码
为了收集代码数据现有的工作主要从互联网上爬取具有开源许可的代码。两个主要来源是开源许可的公共代码存储库例如GitHub和与代码相关的问答平台例如StackOverflow。Google已经公开发布了BigQuery数据集[145]其中包含各种编程语言中的大量开源许可的代码片段作为代表性的代码数据集。CodeGen已经利用了BigQuery数据集的一个子集BIGQUERY [77]用于训练CodeGen的多语言版本CodeGen-Multi。
其他
Pile [146]是一个大规模、多样化且开源的文本数据集包括来自多个来源的800多GB数据包括书籍、网站、代码、科学论文和社交媒体平台。它由22个多样化的高质量子集构成。Pile数据集被广泛用于不同参数规模的模型例如GPT-J6B[150]CodeGen16B[77]和Megatron-Turing NLG530B[100]。ROOTS [147]由各种较小的数据集组成共计1.61 TB的文本涵盖了59种不同的语言包括自然语言和编程语言已被用于训练BLOOM [69]。
在实际应用中通常需要混合不同的数据源来进行LLMs的预训练见图5而不是单一的语料库。因此现有研究通常混合几个现成的数据集例如C4、OpenWebText和Pile然后进行进一步的处理以获取预训练语料库。此外为了训练适用于特定应用的LLMs从相关来源例如维基百科和BigQuery提取数据以丰富预训练数据中的相应信息也非常重要。为了快速查看现有LLMs中使用的数据源我们展示了三个代表性LLMs的预训练语料库
• GPT-3 (175B) [55] 在一个混合数据集上进行了训练包括300B Tokens其中包括CommonCrawl [148]、WebText2 [55]、Books1 [55]、Books2 [55]和Wikipedia [144]。
• PaLM (540B) [56] 使用了一个预训练数据集包含780B Tokens数据源包括社交媒体对话、筛选的网页、书籍、GitHub、多语言维基百科和新闻。
• LLaMA [57] 从各种来源中提取训练数据包括CommonCrawl、C4 [73]、GitHub、维基百科、书籍、ArXiv和StackExchange。LLaMA (6B) 和 LLaMA (13B) 的训练数据大小为1.0T Token而LLaMA (32B) 和LLaMA (65B) 使用了1.4T Tokens。
3.3 库资源
在这一部分中我们简要介绍了一系列用于开发 LLM 的可用库。
• Transformers [151] 是一个由Hugging Face开发和维护的用于构建使用Transformer架构的模型的开源Python库。它具有简单且用户友好的API使得使用和定制各种预训练模型变得容易。这是一个功能强大的库拥有庞大而活跃的用户和开发者社区他们定期更新和改进模型和算法。
• DeepSpeed [65] 是由微软开发的深度学习优化库与PyTorch兼容已被用于训练多个LLMs例如MTNLG [100] 和BLOOM [69]。它提供了各种优化技术的支持用于分布式训练如内存优化ZeRO技术、梯度检查点和流水线并行。
• Megatron-LM [66–68] 是由NVIDIA开发的用于训练大规模语言模型的深度学习库。它还提供了丰富的分布式训练优化技术包括模型和数据并行、混合精度训练和FlashAttention。这些优化技术可以极大地提高训练效率和速度实现了在多个GPU上的高效分布式训练。
• JAX [152] 是由Google开发的用于高性能机器学习算法的Python库允许用户在具有硬件加速例如GPU或TPU的数组上轻松执行计算。它支持在各种设备上进行高效计算还支持一些特色功能如自动微分和即时编译。
• Colossal-AI [153] 是由HPC-AI Tech开发的深度学习库用于训练大规模AI模型。它是基于PyTorch实现的并支持丰富的并行训练策略。此外它还可以通过PatrickStar [154]提出的方法优化异构内存管理。最近基于LLaMA [57]使用Colossal-AI开发的ColossalChat [126]已经公开发布了两个版本7B和13B这是一个类似于ChatGPT的模型。
• BMTrain [155] 是由OpenBMB开发的一个高效的库用于以分布式方式训练具有大规模参数的模型强调代码简单性、低资源和高可用性。BMTrain已经将一些常见的LLMs例如Flan-T5 [64]和GLM [84]纳入其ModelCenter中开发人员可以直接使用这些模型。
• FastMoE [156] 是MoE即专家混合模型的专用训练库。它是基于PyTorch开发的在设计中注重效率和用户友好性。FastMoE简化了将Transformer模型转换为MoE模型的过程并支持在训练过程中的数据并行和模型并行。
除了上述库资源外现有的深度学习框架例如PyTorch [157]、TensorFlow [158]、MXNet [159]、PaddlePaddle [160]、MindSpore [122] 和 OneFlow [161]也提供了支持用于并行算法通常用于训练大型模型。