文献笔记|综述|A Survey of Large Language Models (前3章)

A Survey of Large Language Models

题目:大语言模型综述

作者:Wayne Xin Zhao, Kun Zhou, Junyi Li et al.

来源:arXiv

单位:中国人民大学高瓴人工智能学院、中国人民大学信息学院

关键词:Large Language Models; Emergent Abilities; Adaptation Tuning; Utilization; Alignment; Capacity Evaluation

资源库:https://github.com/RUCAIBox/LLMSurvey

参考书目:《大语言模型》

文章目录

  • A Survey of Large Language Models
    • 摘要
    • 1 引言
    • 2 概述
      • 2.1 LLMs的背景
        • 2.1.1 LLMs扩展法则的形式化
          • KM扩展法则
          • Chinchilla扩展法则
        • 2.1.2 扩展法则的讨论
          • 可预测的扩展
          • 任务层面的可预测性
        • 2.1.3 LLMs的涌现能力
          • 上下文学习
          • 指令遵循
          • 逐步推理
        • 2.1.4 涌现能力与扩展法则的关系
        • 2.1.5 LLMs的关键技术
          • 扩展
          • ==训练==
          • 激发能力
          • 对齐调整
          • 工具操作
      • 2.2 GPT系列模型的技术发展
        • 2.2.1 早期探索
          • GPT-1
          • GPT-2
        • 2.2.2 能力飞跃
          • GPT-3
        • 2.2.3 能力增强
          • 代码数据训练
          • 人类对齐
        • 2.2.4 语言模型的里程碑
          • ChatGPT
          • GPT-4
          • GPT-4V,GPT-4 Turbo and beyond
    • 3 LLMS资源
      • 3.1 公开可用的模型检查点或API
        • 3.1.1 拥有数百亿个参数的模型
        • 3.1.2 拥有数千亿个参数的模型
        • 3.1.3 LLaMA模型系列
        • 3.1.4 LLMs的公共API
      • 3.2 常用的预训练语料库
        • 3.2.1 书籍
        • 3.2.2 CommonCrawl
        • 3.2.3 Reddit链接
        • 3.2.4 维基百科
        • 3.2.5 代码
        • 3.2.6 其他
      • 3.3 常用的微调数据集
        • 3.3.1 指令调整数据集
          • NLP任务数据集
          • 日常聊天数据集
          • 合成数据集
        • 3.3.2 对齐数据集
      • 3.4 库资源

摘要

【引出语言智能的重要性】Ever since the Turing Test was proposed in the 1950s, humans have explored the mastering of language intelligence by machine. Language is essentially a complex, intricate system of human expressions governed by grammatical rules. It poses a significant challenge to develop capable artificial intelligence (AI) algorithms for comprehending and grasping a language. 【介绍语言模型的大致历程】As a major approach, language modeling has been widely studied for language understanding and generation in the past two decades, evolving from statistical language models to neural language models. 【由PLM引出LLM】Recently, pre-trained language models (PLMs) have been proposed by pretraining Transformer models over large-scale corpora, showing strong capabilities in solving various natural language processing (NLP) tasks. Since the researchers have found that model scaling can lead to an improved model capacity, they further investigate the scaling effect by increasing the parameter scale to an even larger size. Interestingly, when the parameter scale exceeds a certain level, these enlarged language models not only achieve a significant performance improvement, but also exhibit some special abilities (e.g., incontext learning) that are not present in small-scale language models (e.g., BERT). To discriminate the language models in different parameter scales, the research community has coined the term large language models (LLM) for the PLMs of significant size (e.g., containing tens or hundreds of billions of parameters). 【介绍LLM技术发展对领域的重要性】Recently, the research on LLMs has been largely advanced by both academia and industry, and a remarkable progress is the launch of ChatGPT (a powerful AI chatbot developed based on LLMs), which has attracted widespread attention from society. The technical evolution of LLMs has been making an important impact on the entire AI community, which would revolutionize the way how we develop and use AI algorithms. 【点题,概括本文主要工作】Considering this rapid technical progress, in this survey, we review the recent advances of LLMs by introducing the background, key findings, and mainstream techniques. In particular, we focus on four major aspects of LLMs, namely pre-training, adaptation tuning, utilization, and capacity evaluation. Furthermore, we also summarize the available resources for developing LLMs and discuss the remaining issues for future directions. This survey provides an up-to-date review of the literature on LLMs, which can be a useful resource for both researchers and engineers.

1 引言

【第一次看到有题记的文章】

“The limits of my language mean the limits of my world.” —Ludwig Wittgenstein

【通过阐述人类语言能力终其一生都在不断发展、机器难以理解人类语言的客观事实,从而说明让机器理解和运用人类语言十分具有挑战。】

【介绍语言模型LM并对其进行分类】

语言模型旨在对词序列的生成可能性进行建模,从而预测未来(或缺失)标记的概率。

  • 统计语言模型(SLM):基本思想是基于马尔可夫假设建立单词预测模型,例如,基于最近的上下文预测下一个单词。

  • 神经语言模型(NLM):通过神经网络来表征单词序列的概率。

  • 预训练语言模型(PLM):首先预训练PLM网络(而不是学习固定的单词表示),然后根据特定的下游任务微调PLM网络来捕获上下文感知的单词表示。

  • 大语言模型(LLM):研究人员发现,扩展PLM(例如,扩展模型大小或数据大小)通常会提高下游任务的模型容量(即遵循比例定律[30])。虽然缩放的主要是模型规模(具有相似的架构和预训练任务),但这些大规模PLM显示出与较小PLM不同的行为,并在解决一系列复杂任务时显示出令人惊讶的能力(称为涌现能力emergent abilities[31])。

在这里插入图片描述

【对上述四类语言模型做总结。阐述语言模型逐渐从一个解决特定任务的单任务solver,逐步发展成为通用任务solver。】

在这里插入图片描述

【阐述LLM和PLM之间的三个主要区别】

  1. LLMs表现出的涌现能力是语言模型在复杂任务中表现的关键,使人工智能算法前所未有地强大和有效。
  2. LLMs将彻底改变人类开发和使用人工智能算法的方式。与小型PLM不同,访问LLM的主要方法是通过提示界面(如GPT-4 API)。人类必须理解LLM如何工作,并以LLM可以遵循的方式格式化他们的任务。
  3. LLMs的开发不再明确区分学术和工业。LLMs的训练需要在大规模数据处理和分布式并行训练方面的丰富实践经验。为了开发有效的LLM,研究人员必须解决复杂的工程问题,与工程师一起工作或者成为工程师。

【阐述LLM对AI社区产生的重大影响,例如信息检索IR领域的New Bing、GPT-4辅助解决CV领域任务、微软的Copilot实现办公自动化等。】

【LLM仍有许多值得探索的问题】

  1. 涌现能力为什么出现在LLM而不是PLM中。缺乏对促成LLM卓越能力的关键因素的深入、详细的调查。研究LLM何时以及如何获得这种能力是很重要的[47]。
  2. 由于对计算资源的巨大需求,LLM主要是由工业界训练的,许多细节(如数据收集和清理)并不向公众透露。学术界很难训练有效的LLM,并且难以对用于训练LLM的各种策略的效果进行消融研究。
  3. 将LLM与人类价值观或偏好结合起来是一项挑战。尽管LLM功能强大,但LLM也可能产生有毒、虚假或有害的内容。它需要有效和高效的控制方法来消除使用LLM的潜在风险[46]。

【介绍本文主要工作】

  1. 预训练(如何预训练有能力的LLM)
  2. 调整(如何有效地调整预训练的LLM以更好地使用)
  3. 利用(如何使用LLM解决各种下游任务)
  4. 能力评估(如何评估LLM的能力和现有的经验发现)

【文章组织架构安排】

  • 第2节介绍了LLM的背景和GPT系列模型的演变

  • 第3节总结了提出的LLM的可用资源。

  • 第4、5、6和7节分别从预训练、调整、利用和能力评估四个方面回顾和总结了最近的进展。

  • 第8节讨论了提示设计的实践指南

  • 第9节回顾了LLM在几个代表性领域的应用。

  • 第10节总结了调查的主要结果,并讨论了未来工作的剩余问题。

2 概述

2.1 LLMs的背景

通常,大型语言模型(LLM)是指包含数千亿(或更多)参数的变压器语言模型4,这些模型是在海量文本数据上训练的[32],如GPT-3 [55],PaLM [56],Galactica [35]和LLaMA [57]。LLM表现出很强的理解自然语言和解决复杂任务的能力(通过文本生成)。为了快速了解LLMs的工作原理,本部分介绍了LLMs的基本背景,包括标度律、涌现能力和关键技术。

2.1.1 LLMs扩展法则的形式化

目前,LLM主要建立在Transformer架构上[22],其中多头注意力层堆叠在非常深的神经网络中。广泛的研究表明,扩展可以大大提高LLM的模型能力[26,55,56]。因此,建立一种定量的方法来描述扩展效果是很有用的。

KM扩展法则

NcDcCc以及αNαDαC都是常数,公式表明随着N、D、C的增大,损失L(N)、L(D)、L©会变小。】

Kaplan等人[30]首先提出对NLM的模型性能与三个主要因素的幂律关系进行建模,即模型大小(N)、数据集大小(D)和训练计算量©。给定算力预算c,他们根据经验提出了三个基本的扩展法则公式:

在这里插入图片描述

其中,L(·)表示以nat为单位的交叉熵损失。NcDcCc是实验性的常数数值,分别对应于非嵌入参数数量、训练数据数量和实际的算力开销。OpenAI的后续研究[58]表明,语言建模损失可以分解为两部分,即不可约损失(真实数据分布的熵)和可约损失(真实分布和模型分布之间KL散度的估计)。这三个定律是通过在某些假设(例如,一个因素的分析不应受到其他两个因素的阻碍)下,用不同的数据大小(22M至23B令牌)、模型大小(768M至1.5B非嵌入参数)和训练计算来拟合模型性能而得出的。

Chinchilla扩展法则

Hoffmann等人[34]他们通过改变更大范围的模型大小(70M至16B)和数据大小(5B至500B令牌)进行了严格的实验,并拟合了类似的扩展法则,但系数不同,如下所示[34]:

在这里插入图片描述

随着算例预算的增加,KM扩展法则倾向于在模型大小上分配比数据大小更大的预算,而Chinchilla扩展法则认为这两个大小应该以相等的比例增加,即等式(3)中的a和b具有相似的值。

2.1.2 扩展法则的讨论
可预测的扩展

扩展法则可用于指导LLM的训练

  1. 对于大模型,严格检验各种训练技巧或变体是不可行的,如果从小模型中获得的经验也可以应用于大型模型,那将是非常有帮助的。
  2. 随着规模的扩展,即使模型的损失趋于平稳,表示质量或语义内容仍然可以有效地提高[58]。为了进一步探索扩展效应,一个潜在的问题是用于训练LLM的可用数据量实际上是有限的。随着模型规模的不断增加,LLM的公共文本数据将很快“耗尽”[60]。因此,研究扩展法则如何应用于数据受限的情况[61]将是有意义的。
任务层面的可预测性

语言模型损失可以被认为是整体模型能力的一般度量,然而,语言模型损失的直接减少并不总是表明下游任务中模型性能的改善。特别是,一些任务会出现逆扩展现象[62]。总体而言,探索和描述任务层面的扩展法则更加困难,因为它可能还依赖于任务相关的信息(如任务指标、任务难度等)。此外,有些重要能力(例如上下文学习能力 [23])根据扩展法则是不可预测的,只有当模型大小超过一定规模时才会出现。

2.1.3 LLMs的涌现能力

LLM的涌现能力被正式定义为“在小模型中不存在但在大模型中出现的能力”[31],这是LLM区别于先前PLM的最显著特征之一。

上下文学习

上下文学习能力在GPT-3的论文中 [23] 被正式提出。具体方式为,在提示中为语言模型提供自然语言指令和多个任务示例(Demonstration),无需显式的训练或梯度更新,仅输入文本的单词序列就能为测试样本生成预期的输出。

指令遵循

指令遵循能力是指大语言模型能够按照自然语言指令来执行对应的任务 [28, 66, 67]。为了获得这一能力,通常需要使用自然语言描述的多任务示例数据集进行微调,称为指令微调(Instruction Tuning)或监督微调(Supervised Fine-tuning)。通过指令微调,大语言模型可以在没有使用显式示例的情况下按照任务指令完成新任务,有效提升了模型的泛化能力。

逐步推理

大语言模型则可以利用思维链 (Chain-of-Thought, CoT)提示策略 [33] 来加强推理性能。具体来说,大语言模型 可以在提示中引入任务相关的中间推理步骤来加强复杂任务的求解,从而获得更 为可靠的答案。

2.1.4 涌现能力与扩展法则的关系

扩展法则和涌现能力提供了理解大模型优于小模型的两个视角:持续改进与急剧的性能飞跃。

一个流行的推测是,涌现能力可能部分归因于特殊任务的评估设置(例如,不连续的评估指标)[70,71]:当评估指标相应地改变时,应急能力曲线的锐度将消失。然而对于大多数任务,我们的评价标准都是模型完成了或没有完成。很少会在两个都没有完成的情况下判断模型哪次完成的更好些。

此外,作者通过人类常有“顿悟”的现象来类比大模型中出现的涌现能力。

2.1.5 LLMs的关键技术

介绍(可能)导致LLMs成功的几个重要技术。

扩展

由于计算预算通常是有限的,因此可以进一步利用扩展法则来进行更高效的计算资源分配。例如,在相同的计算预算下,通过增加数据规模,Chinchilla(具有更多训练词元)的表现优于其对应模型Gopher(具有更大的模型大小)[34]。

训练

由于庞大的模型规模,成功训练一个有能力的LLM是非常有挑战性的。学习线性最小二乘模型的网络参数需要分布式训练算法,其中经常联合使用各种并行策略。为了支持分布式训练,已经发布了几个优化框架来促进并行算法的实现和部署,例如DeepSpeed [74]和Megatron-LM[75–77]。此外,优化技巧对于训练稳定性和模型性能也很重要,例如,重启以克服训练损失峰值[56]和混合精度训练[78]。最近,GPT-4 [46]建议提出特殊的基础设施和优化方法,用小得多的模型可靠地预测大模型的性能。

激发能力

可以设计合适的任务说明或具体的情境学习策略来激发LLM解决未见任务的能力。例如,通过包含中间推理步骤(思维链)、指令微调等。

对齐调整

有必要使LLMs与人类价值观保持一致,例如,乐于助人、诚实和无害。为此,InstructGPT [66]设计了一种有效的利用了带有人类反馈的强化学习技术的调整方法,使LLM能够遵循预期的指令,产生符合人类价值观的、无害的响应。

工具操作

LLM被训练为大规模纯文本语料库上的文本生成器,从而在不能以文本形式最佳表达的任务(例如,数值计算)上表现不佳。此外,他们的能力也仅限于训练前的数据,例如,无法获取最新信息。为了解决这些问题,最近提出的技术是采用外部工具来弥补LLM的不足[80,81]。例如,LLM可以利用计算器进行精确计算[80],并使用搜索引擎检索未知信息[81]。

2.2 GPT系列模型的技术发展

GPT模型的基本原理是通过语言建模将世界知识压缩到只有解码器的转换器模型中,这样它可以恢复(或记忆)世界知识的语义,并充当通用任务求解器。

在这里插入图片描述

2.2.1 早期探索
GPT-1

2017年,谷歌推出了Transformer模型[22]

2018年,OpenAI团队发布了第一个GPT-1 [122],并创造了缩写术语GPT作为模型名称,代表生成性预训练。

GPT-2

遵循GPT-1的类似架构,GPT-2 [26]将参数规模增加到1.5B,使用大型网页数据集WebText对其进行训练。GPT-2没有采用显式的微调,并将求解一个任务的过程就归结为一个生成求解文本的单词预测问题。

OpenAI 团队在 GPT-2 的论文中还尝试解释无监督预训练在下游任务中取得良好效果的原因:“由于特定任务的有监督学习目标与无监督学习目标(语言建模) 在本质上是相同的(预测下一个词元),主要区别就在于它们只是在全部训练数据的子集上进行优化,因此对于特定下游任务而言,优化无监督的全局学习目标本质上也是在优化有监督的任务学习目标” [26]。对这一说法的通俗理解是,语言模型将每个(自然语言处理)任务都视为基于世界文本子集的下一个词预测问题。 因此,如果无监督语言建模经过训练后具有足够的能力复原全部世界文本,那么本质上它就能够解决各种任务。

2.2.2 能力飞跃

产能飞跃。尽管GPT-2旨在成为一个“无监督的多任务学习者”,但与监督微调的最先进方法相比,它的整体性能较差。因为它有一个相对较小的模型大小,所以它在下游任务中得到了广泛的微调,尤其是对话任务[124,125]。GPT-3以GPT-2为基础,通过扩展(几乎相同的)生成式预培训架构实现了关键的能力飞跃。

GPT-3

2020年,GPT-3 [55]发布,将模型参数扩展至更大的尺寸175B。在GPT-3的论文中,它正式引入了上下文学习(ICL)17的概念,这种概念以few-或zero-shot的方式利用了LLM。ICL可以教(或指导)LLM理解自然语言文本形式的任务。

2.2.3 能力增强

OpenAI探索了两种改进GPT-3模型的主要方法,即代码数据的训练和与人类偏好的对齐。并将改进后的模型命名为GPT-3.5

代码数据训练

原始GPT-3模型(在纯文本上预先训练)的主要限制在于缺乏对复杂任务的推理能力,例如,代码补全和解决数学问题。

  • 2021年7月,OpenAI发布Codex [105],这是一个在GitHub代码的大型语料库上微调的GPT模型。它证明了Codex可以解决非常困难的编程问题,并且在解决数学问题时也导致了显著的性能提高[126]。
  • GPT-3.5模型是基于基于代码的GPT模型(即code-davinci-002)开发的,这表明对代码数据的训练对于提高GPT模型的模型能力,尤其是推理能力是非常有用的实践。此外,还有一种推测认为,对代码数据的训练可以极大地提高LLMs的思维链提示能力[47],但这仍然值得进一步研究和更彻底的验证。
人类对齐
  • 2017年(或更早),OpenAI发布了一篇题为“Learning from Human Preferences”,描述了一项应用强化学习(RL)从人类标注的偏好数据中学习的工作[79] (类似于图12中InstructGPT的比对算法中的奖励训练步骤)。
  • 2017年7月,最近策略优化(PPO) [128]的论文发表,它现在已经成为从人类偏好中学习的基础RL算法[66]。
  • 2020年1月晚些时候,GPT-2使用上述RL算法[79,128]进行了微调,该算法利用人类的偏好来提高GPT-2在NLP任务上的能力。
  • 2022年1月,OpenAI推出InstructGPT [66],以改进GPT-3模型与人类对齐的能力,正式建立了基于人类反馈的三阶段强化学习(RLHF)算法。
  • OpenAI在一篇技术文章[130]中描述了他们的对齐研究方法,该文章总结了三个有前途的方向:
    • 使用人类反馈训练AI系统
    • 协助人类评估
    • 进行对齐研究
2.2.4 语言模型的里程碑
ChatGPT

2022年11月,OpenAI发布了基于GPT模型(GPT-3.5和GPT-4)的对话模型ChatGPT。正如官方博客文章介绍的[131],ChatGPT的训练方式与InstructGPT类似(在原帖中称为“InstructGPT的同胞模型”),同时专门针对对话进行了优化。

GPT-4
  • 2023年3月,GPT-4 [46]发布,它将文本输入扩展到了多模态信号。

  • 由于六个月的迭代对齐(在RLHF训练中有额外的安全奖励信号),GPT-4对恶意或挑衅性查询的响应更加安全。

  • GPT-4是在完善的深度学习基础设施上开发的,具有改进的优化方法。他们引入了一种称为可预测扩展的新机制,这种机制可以在模型训练期间使用少量算力来准确预测最终性能。

GPT-4V,GPT-4 Turbo and beyond

2023年9月,GPT-4V发布,其重点是GPT-4视觉能力的安全部署。在GPT-4V的系统说明(system card)[133]中,广泛讨论了与视觉增强输入相关的风险评估和缓解。

2023年11月,GPT-4 Turbo发布,它具有改进的模型容量(比GPT4更强大)、扩展的知识源(截至2023年4月)、更长的上下文窗口(高达128K)、优化的模型性能(更便宜的价格)和其他有用的功能更新(函数调用、可重复的输出等)。这些极大加强了以 GPT 模型所形成的大模型应用生态系统。

3 LLMS资源

在这一节中,我们简要总结了用于开发LLMs的公开可用资源,包括模型检查点(或API)、语料库和库。

3.1 公开可用的模型检查点或API

3.1.1 拥有数百亿个参数的模型

10B到20B:

  • FlanT5 (11B版本)可以作为研究指令调优的首要模型,因为它从三个方面[69]探索指令调优:增加任务数量,缩放模型大小,以及使用思维链提示数据进行微调。
  • CodeGen (11B版本)作为一个为生成代码而设计的自回归语言模型,可以被认为是探索代码生成能力的一个很好的候选。它还介绍了一个新的基准MTPB [86],专门用于多回合程序综合,由115个专家生成的问题组成。要解决这些问题,需要LLM掌握足够的编程知识(如数学、数组运算和算法)。
  • CodeGen2 [97]已经发布,以探索模型架构、学习算法和数据分布的选择对模型的影响。
  • 作为另一个专门研究编码能力的LLM,StarCoder [98]也取得了优异的成绩。至于多语言任务,mT0 (13B版本)可能是一个很好的候选模型,它已经在带有多语言提示的多语言任务上进行了微调。
  • PanGu-α [84]在基于深度学习框架MindSpore [136]开发的零镜头或少镜头设置下的中文下游任务中显示出良好的性能。注意,盘古-α [84]持有多个版本的模型(最多200B个参数),而最大的公开版本有13B个参数。

更多参数模型:

  • LLaMA (65B版本)[57]包含的参数大约是其他模型的五倍,在与指令跟随相关的任务中表现出优异的性能。
  • LLaMA2 [99] (包含最大版本的70B参数)在人类反馈强化学习(RLHF)方面进行了更多的探索,并开发了一个名为LLaMA-chat的面向聊天的版本,该版本在一系列有用性和安全性基准上普遍优于现有的开源模型。由于其开放性和有效性,LLaMA吸引了研究界的极大关注,许多研究[137–140]致力于微调或持续预训练其不同的模型版本,以实现新的模型或工具。
  • Falcon 隼[135] (包含最大版本的40B参数) 作为另一个开源LLM,也在开放基准上取得了非常优异的性能。它的特点是更仔细的数据清洗过程,以准备预训练数据(与公共共享数据集RefinedWeb [141])。

通常,这种规模的预训练模型需要数百甚至数千个GPU或TPU。例如,GPT-NeoX-20B使用12个超微服务器,每个服务器配备8个NVIDIA A100-sxm 4-40GB GPU,而LLaMA使用2048个A100-80G GPU,如其原始出版物中所述。

3.1.2 拥有数千亿个参数的模型

对于这个类别的模型,只有少数模型公开发布。例如,OPT [90]、OPT-IML [95]、BLOOM [78]和BLOOMZ [94]具有与GPT-3 (175B版本)几乎相同数量的参数,而GLM [93]和Galactica [35]分别具有130B和120B参数。

这种规模的模型通常需要数千个GPU或TPU来训练。例如,OPT (175B版本)使用992个A100-80GB GPU,而GLM (130B版本)使用96个英伟达DGX-A100 (8x40G) GPU节点的集群。

3.1.3 LLaMA模型系列

LLaMA模型系列[57]由Meta AI于2023年2月推出,由四种尺寸(7B、13B、30B和65B)组成。大量研究人员通过指令调整或连续预训练扩展了LLaMA模型。特别是,由于计算成本相对较低,指令调优LLaMA已经成为开发定制或专用模型的主要方法。

在这里插入图片描述

3.1.4 LLMs的公共API

API不是直接使用模型副本,而是为普通用户提供了一种更方便的方式来使用LLM,而不需要在本地运行模型。

  • GPT-3系列API:

    • ada
    • babbage 对应GPT-3 (1B)
    • curie 对应GPT-3 (6.7B)
    • davinci (GPT-3系列中最强大的版本,对应GPT-3 (175B))
    • text-ada-001
    • text-babbage-001
    • text-curie-001。
  • Codex [105]相关的API:

    • code-cushman-001(Codex(12B)[105]的强大多语言版本)
    • code-davinci-002。
  • GPT-3.5系列API:

    • code-davinci-002
    • text-davinci-002
    • text-davinci-003
    • GPT-3.5-turbo。
  • GPT-4系列API:

    • GPT-4
    • GPT-4-32k
    • GPT-4-1106-preview(即GPT-4 Turbo)
    • GPT-4-vision-preview(即GPT-4 Turbo with vision,一种多模态模型)。

3.2 常用的预训练语料库

在这里插入图片描述

根据内容类型,语料库分为六类:书籍、CommonCrawl、Reddit链接、维基百科、代码和其他。

3.2.1 书籍
  • BookCorpus[153]是以前的小规模模型(如GPT [122]和GPT-2 [26])中常用的数据集,由超过11, 000本涵盖广泛主题和体裁(如小说和传记)的图书组成。

  • Project Gutenberg[154],由超过70, 000本文学书籍组成,包括小说、散文、诗歌、戏剧、历史、科学、哲学和公共领域中的其他类型的作品。它是目前最大的开源图书收藏之一,用于训练MT-NLG[113]和LLaMA[57]。

  • Books1 [55]和Books2 [55],它们比BookCorpus大很多,用于训练GPT-3 [55],但至今没有公开发布。

3.2.2 CommonCrawl
  • CommonCrawl [163]是最大的开源web数据库之一,包含一个拍字节(1P=1000T)规模数据量,已被广泛用作现有LLM的训练数据。

  • 基于CommonCrawl,现有工作中常用的过滤数据集有四个:

    • Colossal Clean Crawled Corpus (C4) [82] (以下是其变体)
      • en (806G)
      • en.noclean (6T)
      • realnewslike (36G)
      • webtextlike (17G)
      • multilingual (38T)
    • CCStories [155],其中的内容以类似故事的方式制作。
    • CC-News [27],新闻语料库。
    • RealNews [156],新闻语料库。
3.2.3 Reddit链接

Reddit是一个社交媒体平台,用户可以提交链接和文本帖子,其他人可以通过“向上投票”或“向下投票”进行投票。高投票率的帖子通常被认为是有用的,可以用来创建高质量的数据集。

  • WebText [26]是一个著名的语料库,由来自Reddit的高投票链接组成,但它不是公开可用的。
  • OpenWebText [157] (WebText的开源替代物)。
  • PushShift.io [158],这是一个实时更新的数据集,由Reddit自创建之日起的历史数据组成。Pushshift不仅提供月度数据转储,还提供有用的实用工具来支持用户对整个数据集进行搜索、汇总和初步调查。这使得用户很容易收集和处理Reddit数据。
3.2.4 维基百科

维基百科[159]是一个在线百科全书,维基百科有多种语言版本,因此可以在多语言环境中使用。

3.2.5 代码
  • 现有的工作主要是从互联网上抓取开源的授权代码。两个主要来源是开源许可下的公共代码库(例如GitHub)和与代码相关的问答平台(例如StackOverflow)。-
  • Google已经公开发布了BigQuery数据集[160],其中包括大量各种编程语言的开源许可代码片段,作为代表性的代码数据集。
3.2.6 其他
  • Pile [161]是一个大规模、多样化和开源的文本数据集,由来自多个来源的超过800GB的数据组成,包括书籍、网站、代码、科学论文和社交媒体平台。它由22个不同的高质量子集构成。
  • ROOTS [162]由各种更小的数据集(总共1.61 TB的文本)组成,覆盖了59种不同的语言(包含自然语言和编程语言),这些语言已经被用于训练BLOOM [78]。

3.3 常用的微调数据集

在预训练之后,需要进一步微调LLM以增强模型容量,这通常涉及两个主要步骤,即指令调优(监督微调)和对齐调优。在本节中,我们主要讨论两种调优方法的相关可用数据集,更多算法细节可在第5节中找到。

3.3.1 指令调整数据集

在预训练之后,指令调整(也称为监督微调)是增强或解锁LLM的特定能力(例如,指令跟随)的重要方法。根据格式化指令实例的构造方法将其分为三种主要类型,即NLP任务数据集、日常聊天数据集和合成数据集。

在这里插入图片描述

NLP任务数据集

这种数据集是基于收集的NLP任务数据集(例如,文本分类和摘要)用相应的自然语言任务描述来格式化的。在这一类别中,P3 [182]和FLAN [67,183]是两个广泛用于指令调整的数据集。

日常聊天数据集

这种数据集是基于真实用户对话构建的,其中查询由人类提出,响应主要由人类标注器或LLM生成(例如,ChatGPT,GPT-4)。对话类型包括开放式生成、问题回答、头脑风暴和聊天。在这个类别中,ShareGPT [148]、OpenAssistant [173]和Dolly [172]是LLM微调的三个常用数据集。

合成数据集

这种类型的数据集通常由指令LLM根据预定义的指导规则或方法构建。在这一类别中,Self-Instruct52K [143]、Alpaca[142]和Baize[175]是LLM的三个常用合成数据集。

3.3.2 对齐数据集

除了指令调整之外,构建高质量的数据集以将LLM与人类价值观和偏好(例如,乐于助人、诚实和无害)相匹配也很重要。在本节中,我们介绍几个广泛用于比对调整的数据集,包括HH-RLHF [170],SHP [177],PKU-SafeRLHF [181],Stack Exchange Preferences[178]和Sandbox Alignment Data[179]。

在这里插入图片描述

  • HH-RLHF [170]包含大约169K个实例,可以分为两个部分,分别关注LLM的有益性和无害性。每个实例都是众包工作者和聊天模型之间关于寻求帮助、建议或完成任务的开放式对话。聊天模型为每个用户查询提供两个响应,更有用或更有害的响应将被选为注释。

  • SHP [177]关注的是回应的有用性。它包括385,000个人类对18个不同主题领域的问题/指令的集体偏好,涵盖从烹饪到法律咨询的主题。每个实例都是一个Reddit帖子,包含一个问题或说明以及一对顶级评论,其中一个被Reddit用户认为更可取,另一个被认为不太有用。与HH-RLHF [170]不同,SHP的数据包括自然发生的和人类书写的反应。

  • PKU-SafeRLHF [181]包含超过330,000例专家比较数据,集中在有益和无害方面。数据集中的每个实例包括一个问题和两个回答,伴随着每个回答的安全标签和两个回答之间根据有益和无害的两个偏好注释。一项应对措施的无害性表明其在所有14个伤害类别中的分类为风险中性,而一项应对措施的有用性则根据其解决问题的有效性进行评估。

  • Stack Exchange Preferences [178]关注答案的有用性。它包含来自Stack Overflow的大约1000万个问题和答案。每个实例由一个问题和两个以上相应的答案组成。每一个答案都标注了一个基于投票计算的分数和一个表示它是否被选中的标签。

  • Sandbox Alignment Data[179]是一个比对数据集,包含来自LLM而非人类的反馈。它来自一个名为沙箱的虚拟交互环境,模型在沙箱中模拟与其他模型的社交互动,并根据其他模型的反馈修改响应。该数据集包含169K个实例,每个实例由一个社会查询、几个响应和来自其他模型的相应评级组成。

3.4 库资源

在这一部分,我们简要介绍了一系列可用于开发LLM的库。

  • Transformers [187]是一个使用Transformer架构构建模型的开源Python库,由Hugging Face开发和维护。

  • DeepSpeed [74]是微软开发的深度学习优化库(兼容PyTorch),它为分布式训练提供了各种优化技术的支持,如内存优化(ZeRO技术、梯度检查点)和流水线并行。

  • Megatron-LM[75–77]是NVIDIA开发的深度学习库,用于训练LLMs。它还为分布式训练提供了丰富的优化技术,包括模型和数据并行、混合精度训练和FlashAttention。这些优化技术可以极大地提高训练效率和速度,实现跨GPU的高效分布式训练。

  • JAX [188]是由谷歌开发的高性能机器学习算法的Python库,允许用户通过硬件加速(例如,GPU或TPU)轻松地在阵列上执行计算。它支持在各种设备上进行高效计算,还支持多种特色功能,如自动微分和实时编译。

  • Colossal-AI[189]是由HPC-AI Tech开发的深度学习库,用于训练大规模人工智能模型。它是基于PyTorch实现的,支持大量并行训练策略。此外,它还可以使用PatrickStar [190]提出的方法优化异构内存管理。

  • BMTrain [191]是OpenBMB开发的高效库,用于以分布式方式训练具有大规模参数的模型,强调代码简单性、低资源和高可用性。BMTrain已经将几种常见的LLM(例如Flan-T5 [69]和GLM [93])整合到其模型中心,开发人员可以直接使用这些模型。

  • FastMoE [192]是MoE(即混合专家)模型的专门培训库。它是基于PyTorch开发的,在其设计中优先考虑效率和用户友好性。FastMoE简化了将Transformer模型转换为MoE模型的过程,并在训练期间支持数据并行和模型并行。

  • vLLM [193]是一个快速、内存高效且易于使用的库,用于LLM推理和服务。为了实现快速推理,它特别优化了高服务吞吐量、使用PagedAttention [193]的有效注意力内存管理、连续批处理和优化的CUDA内核。此外,vLLM还支持各种解码算法、张量并行和流输出。为了便于与其他系统集成,vLLM对HuggingFace模型的使用很友好,并且还提供了OpenAI兼容的API服务器。

  • DeepSpeed-MII [194]也是一个由DeepSpeed [74]开发的高效内存Python库。它旨在通过优先考虑高吞吐量、低延迟和成本效益来民主化LLMs推理。DeepSpeed-MII通过利用四项基本技术实现了加速的文本生成推理:分块KV缓存、连续批处理、动态SplitFuse和高性能CUDA内核。它目前支持三种流行模型架构的13,000多种模型,如LLaMA [57]、Mistral [195]和OPT [90]。

  • DeepSpeed-Chat [196]是一个快速、经济且易于使用的系统框架,能够在模型训练期间集成完整的RLHF流程。它具有三个主要功能

    (1)它简化了ChatGPT类模型的训练和推理过程,使得能够使用简单的脚本来实现多个训练或推理步骤;

    (2)它复制了InstructGPT [66]的训练模式,并为三个训练步骤(即SFT、奖励模型微调和RLHF)提供了完整的流水线;

    (3)它将Deepspeed的训练引擎和推理引擎集成到一个统一的混合引擎(Deepspeed HE)中,用于RLHF训练,可以实现训练和推理模式之间的无缝切换,并利用Deepspeed推理的各种优化。

除了上述库资源,现有的深度学习框架(例如PyTorch [197],TensorFlow [198],MXNet [199],PaddlePaddle [200],MindSpore [136]和OneFlow [201])也提供了对并行算法的支持,这些算法通常用于训练大规模模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI之AI by Hand:AI by Hand(手动自定义AI算法的数学逻辑)的简介、使用方法、案例应用之详细攻略

AI之AI by Hand:AI by Hand(手动自定义AI算法的数学逻辑)的简介、使用方法、案例应用之详细攻略 目录 AI by Hand的简介 AI by Hand的使用方法 1、解读混合专家(MoE) 2、解读LSTM (Long Short-Term Memory) AI by Hand的案例应用 AI by …

学习大数据DAY25 Shell脚本的书写2与Shell工具的使用

目录 自定义函数 递归-自己调用自己 上机练习 12 Shell 工具 sort sed awk 上机练习 13 自定义函数 name(){ action; } function name { Action; } name 因为 shell 脚本是从上到下逐行运行,不会像其它语言一样先编译,所以函数必 须在调…

MyBatis-Plus自动生成代码

目录 前言一. 什么是 MyBatis-Plus1. Mybatis-Plus 的特点2. Mybatis-Plus 结构二. MyBatis-Plus 自动生成步骤1. 数据库准备2. 环境准备(1) 创建一个空的 Spring Boot 工程(2) 导入pom依赖(3) 编辑application.yml文件(4) 在启动类加入 @MapperScan 注解3. 配置代码4. 运行三.…

江科大/江协科技 STM32学习笔记P15

文章目录 TIM输出比较1、输出比较简介2、PWM简介3、输出比较通道(高级)4、输出比较通道(通用)5、输出比较模式6、PWM基本结构参数计算 7、舵机简介8、直流电机及驱动简介驱动芯片 TIM输出比较 1、输出比较简介 CNT计数器&#x…

VUE3——003、VUE 项目中的文件结构(index.html、main.ts、App.vue)

虽然是号称是小白初学,但本文只是对 VUE 小白,其它的基功还是有一丢丢的,不太懂的同学去看看一下详解,我这里记述的是自己的理解和观点。见谅! index.html:入口文件(以创建 vue3 项目的默认文件…

ElasticSearch(es)倒排索引

目录 一、ElasticSearch 二、倒排索引 1. 正向索引 2. 倒排索引 具体细节 1. 文档分析 2. 索引构建 3. 索引存储 4. 词条编码 5. 索引优化 6. 查询处理 示例 总结 3. 正向和倒排 三、总结 倒排索引的基本概念 为什么倒排索引快 一、ElasticSearch Elasticsear…

Vue 3 中使用 InMap 绘制热力图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Vue 3 中使用 InMap 绘制热力图 应用场景介绍 InMap 是一款强大的地图组件库,它提供了一系列丰富的可视化功能,包括热力图。热力图可以将数据点在地图上以颜色编码的方式可视化&#x…

论文阅读_字节的语音生成模型_Seed-TTS

英文名称: Seed-TTS: A Family of High-Quality Versatile Speech Generation Models 中文名称: Seed-TTS:高质量多功能语音生成模型系列 链接: http://arxiv.org/abs/2406.02430v1 代码: https://github.com/BytedanceSpeech/seed-tts-eval (评测工具) 演示网站&am…

找出所有点到一个点的距离的最小值

这个题的看一眼有点像树形dp&#xff0c;但是要怎么去优化我们转移方程呢 这是为什么呢&#xff0c;我们的树形dp很难考虑来之前的答案&#xff0c;那么d[y] 怎么办&#xff0c;我们可以先以1为根计算出以1为根的答案 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.…

js 计算小数精度问题 ,引入decimal.js库 解决

安装 npm install --save decimal.js 引入 import Decimal from "decimal.js" 使用 new Decimal function adddDecimals (...decimals) { let sum new Decimal(0) decimals.forEach(decimal > { sum sum.plus(decimal) }) return sum.toNumber() } const res …

【刷题汇总 -- 笨小猴、 主持人调度(一)、分割等和子集】

C日常刷题积累 今日刷题汇总 - day0251、笨小猴1.1、题目1.2、思路1.3、程序实现 2、主持人调度&#xff08;一&#xff09;2.1、题目2.2、思路2.3、程序实现 3、分割等和子集3.1、题目3.2、思路3.3、程序实现 -- 0/1背包问题 4、题目链接 今日刷题汇总 - day025 1、笨小猴 1…

【MIT 6.5840(6.824)学习笔记】Raft

1 脑裂 许多容错系统使用一个单主节点来决定主副本。 MapReduce&#xff1a;由单主节点控制计算复制。GFS&#xff1a;主备复制数据&#xff0c;并由单主节点确定主拷贝的位置。VMware FT&#xff1a;主虚机和备份虚机之间复制指令&#xff0c;需要单点的Test-and-Set服务确认…

【JavaEE】通过Linux部署Web项目到云服务器上

一.配置部署所需的环境. 1.1 什么是部署? 要想知道什么是部署, 就要先了解我们在日常开发的过程中所设计到的几种环境: 开发环境: 软件开发环境指的是开发人员在创建、测试和部署软件应用程序时所需的一系列硬件、软件、工具和流程的集合。它是为了支持软件开发过程而构建的…

[算法]归并排序(C语言实现)

一、归并排序的定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法。该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。 二、归并排序的算法原理 归并排序的算法可以用递归法和非递归法来实现…

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支、如何将本地文件推送至github、.gitignore文件的使用

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…

【ROS 最简单教程 002/300】ROS 环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

vue3实战(通用后台管理系统)问题总结

npm install less vue-router element-plus -s elementplus 路由引入组件第二种写法&#xff1a; 使用动态的import( )语法(推荐使用)&#xff08;路由懒加载&#xff09; component:()>import(路径)component:()>import(/views/Main.vue)打包之后的文件将会异常的大&a…

《昇思25天学习打卡营第25天|第28天》

今天是打卡的第二十八天&#xff0c;实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer&#xff08;ViT&#xff09;简介开始了解&#xff0c;模型结构&#xff0c;模型特点&#xff0c;实验的环境准备和数据读取&#xff0c;模型解析&#xff08…

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域&#xff0c;PHP作为一种广泛使用的服务器端脚本语言&#xff0c;其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率&#xff0c;还能确保代码的质量和可维护性。本文将深入探讨Symfony框架&#xff0c;这是一个功能强大且灵活的PHP…

Teamcenter RAC开发,创建Item的两种方式

1、如果描述不必填&#xff0c;采用胖客户端的创建方式 newItem itemType.create(newItemId, "", targetTypeComp.getTypeName(), item_name, // "test1", null, null2、如果描述必填&#xff0c;则需要采用SOA的创…