当前位置:   article > 正文

NLP深入学习:《A Survey of Large Language Models》详细学习(二)

NLP深入学习:《A Survey of Large Language Models》详细学习(二)


1. 前言

最近正在读 LLM 论文的综述,当前采取的策略是部分内容走读+记录,论文原文见《A Survey of Large Language Models》

前情提要:
《NLP深入学习:《A Survey of Large Language Models》详细学习(一)》

前文介绍了论文的摘要、引言以及总述部分,本文主要讲解 LLMs 相关资源,包含公开模型、API、预训练的数据集以及微调的数据集。

2. LLMs 的资源

2.1 公开可用的模型

2.1.1 参数规模1B~100B 的大型语言模型

  • LLaMA(包含70亿参数的版本)是一个开放源代码的大规模语言模型,其不同版本参数数量可扩展到几十亿乃至上百亿,并且针对指令调优进行了探索,尤其是通过增大模型规模、增加数据集大小以及改进学习策略来提升模型性能。
  • PanGu-α 是基于深度学习框架 MindSpore 开发的中文语言模型,它在零样本或少样本设置下在中国下游任务上表现优秀。
  • CodeGen2 专注于代码生成任务。它是对先前预训练语言模型(如GPT-NeoX-20B)在编程和自然语言处理领域进行进一步研究和优化的结果。通过在大规模编程数据集上进行训练,改进代码理解和生成能力,并从实际编程场景中学习到更丰富的上下文信息。

此外,还提到了其他一些参数规模在这一范围内的模型,如 mT5、T0、GPT-NeoX-20B,Flan-T5,UL2,StarCoder 等,它们都在各自领域内展示了强大的文本生成和理解能力。

2.1.2 参数规模100B 以上的大型语言模型

对于这类类型的模型,只有少数的模型已经被公开发布。例如,OPT,OPT-IML,BLOOM,BLOOMZ, GLM,Galactica。

2.1.3 LLaMA 模型家族

LLaMA 模型演进图
在这里插入图片描述
LLaMA 模型家族是由 Meta AI 于2023年2月发布的大型语言模型系列,迄今为止最流行的开放语言模型。其包括了四个不同规模的版本,参数量分别为7B、13B、30B 和65B。其中,与 GPT-3(175B参数版)相近规模的 LLaMA 模型也表现出了强大的跨语言泛化能力,在多语言任务中表现出色。

  • Stanford Alpaca 是第一个基于 LLaMA(7B)进行微调的开放指令跟随模型。通过名为 Alpaca-52K 的 52K 大小指令对其进行训练
  • Alpaca-LoRA(用 LoRA 生成 Stanford Alpaca 的复制品)、Koala 和BELLE。都是用 Alpaca-52K 训练
  • Vicuna 另一个流行的 LLaMA 变体,根据从 ShareGPT 收集的用户共享对话进行训练
  • Vicuna,多态语言模型,基于此产生了 LLaVA,MiniGPT4,InstructBLIP,PandaGPT 等

2.1.4 LLMs 提供的 API

OpenAI 为 GPT 系列模型提供了一系列的接口,让用户无需直接运行本地模型副本,就能便捷地利用大规模语言模型进行各种任务处理。

  • GPT-3,OpenAI 提供了不同性能层级的API接口:
    • ada
    • babbage,对应 GPT-3 (1B)
    • curie,对应 GPT-3 (6.7B)
    • davinci 对应 GPT-3 (175B)

此外,还有与 Codex 项目相关的API,例如 code-cushman-001,这是一个基于Codex(12B)模型且具有多语言能力的强大版本,以及 code-davinci-002 基础模型及其三个增强版本:text-davinci-002、text-davinci-003 和 gpt-3.5-turbo,它们作为更强大且更新迭代的选项,提供了更高性能和更广泛的应用范围。

  • GPT-4 接口:
    • gpt-4
    • gpt-4-32k
    • gpt-4-1106-preview(即GPT-4 Turbo),以及带有视觉输入功能的
    • gpt-4-vision-preview(多模态GPT-4 Turbo)。

目前,ChatGPT 可以使用 GPT-3.5 或 GPT-4 模型为其提供支持。用户可以根据具体应用需求选择适合的模型接口,并在项目官方网站上获取详细使用指南和资源。

2.2 预训练的数据集

文章列举了以下预训练大型语言模型(LLMs)时常用的语料库:

  1. Books Corpus:包括 BookCorpus 和 GPT-3 使用的 Books1、Books2,其中 BookCorpus 由过万本涵盖各种主题和体裁的电子书组成。

  2. CommonCrawl: 一个大规模开放源码网页抓取数据库,包含了互联网上公开可访问的网页数据,被广泛用于训练诸如 GPT 系列等预训练模型

  3. Reddit Links:如 WebText(通过 Reddit 高投票帖子收集的高质量链接),以及 Pushshift.io,它们提供了大量基于社交平台对话和讨论的数据资源。

  4. Wikipedia:维基百科作为开放获取的知识库,其英文版以及其他多语言版本在很多预训练模型中起到了关键作用。

  5. 代码相关数据:例如 GitHub上 的开源代码片段和 StackOverflow 等编程问答网站上的数据,这些都被用于训练具有编码能力的 LLMs。

  6. 其他混合型语料库:如 The Pile 和 ROOTS 等,包含来自书籍、网页、新闻报道、社交媒体等多种来源的大规模文本集合,以增强模型处理多样性和复杂性任务的能力。

2.3 微调的数据集

在预训练之后,需要进一步进行微调以增强模型容量,这通常涉及两个主要步骤,即指令调优(监督微调)和对齐调优。

2.3.1 指令调优数据集

  • NLP 任务数据集。这类数据集的格式化是基于收集到的 NLP 任务数据集(如文本分类和摘要),并带有相应的自然语言任务描述。

    • P3:由多个英语 NLP 任务组成的集合,包含大约170个不同的任务和2,052个英文提示模板。这些任务数据与对应的自然语言指令一起被用来训练 LLMs 以提升其对新任务的理解和执行能力。
    • FLAN:这是一个广泛使用的多任务数据集,最初包含了62个经过精心设计的、具有自然语言指令的基准任务。FLAN-v2 是该数据集的一个扩展版本,进一步混合了额外的指令数据集如 Muffin(增加了对话和代码合成任务)、Natural-Instructions v2 (NIV2) 等资源。
  • Daily Chat Datasets(日常对话数据集)是用于训练和微调大型语言模型,使其在真实世界对话场景中表现更自然、流畅和人性化的数据资源。文章中提到的几个关键日常对话数据集包括:

    • ShareGPT:该数据集由用户通过 API 与 ChatGPT 或 GPT-4 进行的实际对话组成,包含了大约90,000个真实的对话会话。这些对话内容被收集并用于进一步优化模型对人类交互习惯的理解以及提升其生成响应的质量。
    • OpenAssistant:这是一个多语言的对话数据集,包含66,497条经过人工标注的高质量对话树结构数据,覆盖了35种不同的自然语言和编程语言,旨在提高模型在不同文化和语言背景下的对话能力。
    • Dolly:Databricks 公司贡献的一个英文对话数据集,包含了15,000个人类生成的提示-响应配对样本,涵盖了 InstructGPT 定义的七个核心领域任务,如头脑风暴、分类、闭卷质量保证等,有助于增强模型在实际对话中的任务导向性和有效性。
  • Synthetic Datasets(合成数据集)作为一种重要的资源被广泛采用。合成数据集通常通过特定的生成策略和算法创建,而非直接从真实世界中收集。文章中提及了几个相关的合成数据集技术:

    • Self-Instruct-52K:这是一个基于自我指令生成技术创建的合成数据集,通过初始的175个种子实例引导大模型自动生成额外的指令及其对应的输入输出示例。最终得到一个包含大约82,000条指令的集合,这些指令能够用于指导 LLMs 更好地进行上下文学习和遵循指令。
    • Alpaca:该数据集是基于斯坦福大学的研究工作开发而成,是首个基于 LLaMA(7B参数版本)上经过指令调优后的开放跟随模型。Alpaca 数据集采用了 self-instruct 方法使用 text-davinci-003 模型生成了52,000条指令跟随演示,旨在提升模型对指令的理解和执行能力。名为“Alpaca-52K”的数据集及相应的训练代码已被广泛应用于后续研究中。
    • Baize:使用 ChatGPT 构建的英语多回合会话语料库,包含11个1.5K个实例。使用一种称为“自我聊天”的方法,即 ChatGPT 同时扮演用户和人工智能助手的角色,以会话形式生成信息。

2.3.2 对齐调优数据集

对齐数据集(Alignment Datasets)用于训练和微调模型,确保其输出内容符合人类价值观和社会规范,以及特定任务或应用的需求。以下是一些文中提到的用于对齐的代表性数据集:

  • HH-RLHF (Helpful and Harmless Reinforcement Learning from Human Feedback):该数据集包含大约169,000个实例,由人工标注者与聊天机器人进行的对话组成。每个实例代表了用户请求和模型生成的两个回复,其中一个人类标注者选择了更具帮助性或无害性的回答作为正向反馈,用于指导模型学习如何生成更加有益且安全的内容。

  • SHP (Social Human Preferences):这个数据集涵盖了385,000个来自Reddit平台的帖子及其对应的评论对,通过统计用户对不同评论的偏好程度来定义并量化“有帮助”的响应标准。通过使用这样的数据集,模型可以学习到如何生成既符合社会预期又具有高价值的信息。

  • PKU-SafeRLHF:这是一个专门针对安全性设计的数据集,包括了大量经过标记的安全性标签的回答示例,模型通过学习这些数据,学会避免生成可能有害或不恰当的内容,并能够在满足用户需求的同时表现出更安全的行为。

  • Stack Exchange Preferences:该数据集包含了约1000万条从Stack Overflow等技术问答社区收集的问题和答案。每个实例包含问题、多个候选答案以及根据社区投票得出的得分,用以训练模型理解和遵循在线社区中的高质量信息提供标准。

  • Sandbox Alignment Data 该数据集来源于虚拟交互环境 SAND BOX 中模拟的社会互动,其中包含了由其他模型或真实用户给出的反馈信息。该数据集包含169K个实例,模型之间通过对话或其他形式的交流来模拟社会行为和响应,并根据这些模拟交互生成评估数据。

2.4 开发 LLMs 涉及的代码库

在大型语言模型(LLMs)研究和开发领域,以下库资源起到了关键作用:

  1. Transformers:由 Hugging Face 团队创建的开源 Python库,提供了广泛支持 Transformer 架构模型训练、微调以及应用的一站式解决方案。它包含了 BERT、GPT 系列等预训练模型,并允许用户便捷地使用这些模型进行自然语言处理任务。

  2. DeepSpeed:微软研发的深度学习优化库,专为大规模模型如 MT-NLG 和 BLOOM 提供高效训练的支持。通过引入内存优化技术 ZeRO、梯度检查点存储、管道并行等方法显著提升了 LLMs 的训练速度与效率。

  3. Megatron-LM:NVIDIA 打造的大规模语言模型专用深度学习库,专注于解决大规模模型训练中的分布式计算问题,提供丰富的优化技术,如数据并行、模型并行、混合精度训练及 FlashAttention 机制,以提升训练性能。

  4. JAX:Google 开发的高性能机器学习库,利用硬件加速(如 GPU或 TPU)实现数组运算,同时支持自动微分和即时编译(JIT),使得LLMs 的开发与研究更为灵活且高效。

  5. Colossal-AI:由 HPC-AI Tech 推出的深度学习框架,特别针对大型 AI 模型的并行训练进行了优化设计,基于 PyTorch 构建,并整合了 PatrickStar 提出的异构内存管理策略,还支持了类似 ChatGPT 的对话模型 ColossalChat。

  6. BMTrain:OpenBMB 提供的轻量级、高可用性库,专用于高效训练参数规模巨大的模型,在分布式环境下强调代码简洁性和低资源消耗,已将 Flan-T5 和 GLM 等知名 LLMs 集成至其 ModelCenter 中。

  7. FastMoE:一个专门针对混合专家(MoE)模型设计的训练系统,基于 PyTorch 构建,注重效率和易用性,简化了 Transformer 模型向 MoE模型转换的过程,并在训练时实现了数据并行和模型并行。

  8. vLLM:一款针对 LLMs 推理和服务优化的快速、内存高效的库,采用了 PagedAttention 等技术提高服务吞吐量,支持多种解码算法、张量并行以及流式输出,便于与其他系统的集成,并兼容 HuggingFace 模型和 OpenAI API 服务器。

  9. DeepSpeed-MII:微软 DeepSpeed 库的一个子项目,致力于提高LLMs 推理阶段的效率、降低延迟成本,并关注性价比,通过缓存优化、连续批次处理、动态 SplitFuse 技术以及高性能 CUDA 内核实现对 LLMs 如 LLaMA、Mistral 等模型的高效推理。

  10. DeepSpeed-Chat:专为 RLHF(强化学习从人类反馈)训练聊天型 LLMs 而设计的快速、经济且易于使用的系统框架。该框架简化了像 InstructGPT 这样的模型训练流程,并整合了 Deepspeed 引擎以实现在对话模式下的无缝切换和各种优化功能。

3. 参考

《A Survey of Large Language Models》
《NLP深入学习:《A Survey of Large Language Models》详细学习(一)》

后续内容也在持续更新中…

欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;

也欢迎关注我的wx公众号:一个比特定乾坤

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/372129
推荐阅读
相关标签
  

闽ICP备14008679号