大型语言模型训练浅析

文章目录

  • 什么是大型语言模型?
  • 按参数大小排列的顶级大型语言模型
  • 大型语言模型的架构
  • 1. 输入嵌入
  • 2. 多头自我关注
  • 3. 前馈网络
  • 4. 归一化和残差连接
  • 训练大型语言模型
  • 1. 数据收集和预处理
  • 2. 模型选择和配置
  • 3. 模型训练
  • 4. 评估和微调
  • 为特定用例训练LLM

large-language-model-training-1024x640-1

2022年底,大型语言模型(LLMs)在互联网上掀起了一场风暴,因为OpenAI的ChatGPT在推出后仅5天就达到了100万用户。ChatGPT的能力和广泛的应用可以归功于GPT-3语言模型拥有的1750亿个参数。

虽然使用像ChatGPT这样的终端产品语言模型很容易,但开发一个大型语言模型需要大量的计算机科学知识、时间和资源。我们创建这篇文章是为了帮助大家对大型语言模型训练有基础的了解:

  1. 大型语言模型的定义
  2. 大型语言模型的例子
  3. 大型语言模型的架构
  4. 大型语言模型的训练过程

以便他们能够有效地利用人工智能和机器学习。

什么是大型语言模型?

大型语言模型是一种机器学习模型,它在大量的文本数据上进行训练,为各种自然语言处理(NLP)任务产生输出,如文本生成、问题回答和机器翻译。

大型语言模型通常基于深度学习神经网络,如Transformer架构,并在大量的文本数据上进行训练,通常涉及数十亿字。较大的模型,如谷歌的BERT模型,是用来自各种数据源的大型数据集进行训练的,这使得它们能够为许多任务产生输出。

如果你是大型语言模型的新手,请查看我们的 “大型语言模型完整指南” 一文。

按参数大小排列的顶级大型语言模型

我们在下面的表格中按参数大小汇编了7个最大的大型语言模型。

模型 开发者 参数大小
WuDao 2.0 Beijing Academy of Artificial Intelligence 1.75 trillion
MT-NLG Nvidia and Microsoft 530 billion
Bloom Hugging Face and BigScience 176 billion
GPT-3 OpenAI 175 billion
LaMDA Google 137 billion
ESMFold Meta AI 15 billion
Gato DeepMind 1.18 billion

请查看我们关于大型语言模型实例的文章,了解更多模型的深入信息。

大型语言模型的架构

大型语言模型的架构,如OpenAI的GPT-3,是基于一种叫做Transformer架构的深度学习。它由以下主要部件组成(见图1):

4I7UBohLcfxXF-p-ioudPoHPGuUB-tu0A4gjRm7jsN-QGSBFbKSeSCRATK2l_QBNDLWcHmi1cKa2TxLJIhy-c-NQ4fqys0jkj8gupXmIWHdFoymkq4m-o86dC85BAX3w9wHDwIWZY68Ae_6MT5A22yQ

图1:Transformer架构

1. 输入嵌入

输入序列首先被转换为密集的向量表示,称为嵌入,它捕捉到了输入中单词之间的关系。

2. 多头自我关注

变换器块结构的核心部分是多头自我关注机制,它允许模型关注输入序列的不同部分以捕捉其关系和依赖性。

3. 前馈网络

在自我注意机制之后,输出被送入前馈神经网络,该网络执行非线性转换以产生新的表示。

4. 归一化和残差连接

为了稳定训练过程,每一层的输出都被归一化,并加入一个残差连接,使输入直接传递给输出,让模型学习输入的哪些部分是最重要的。

这些组件被重复多次,形成一个深度神经网络,它可以处理长序列的文本,并为各种语言任务产生高质量的输出,如文本生成、问题回答和翻译。

开发人员继续通过实施新技术来开发大型语言模型,以:

  • 简化模型(减少模型大小或训练所需的内存)、
  • 提高性能、
  • 降低价格、
  • 减少模型训练时间。

训练大型语言模型

训练大型语言模型有四个步骤:

1. 数据收集和预处理

第一步是收集训练数据集,也就是训练LLM的资源。数据可以来自不同的来源,如书籍、网站、文章和公开数据集。

寻找数据集的流行公共来源有:

  • Kaggle
  • Google Dataset Search
  • Hugging Face
  • Data.gov
  • Wikipedia database

然后需要对数据进行清理,并为训练做准备。这可能涉及到将数据集转换为小写字母,删除停顿词,并将文本标记为构成文本的标记序列。

2. 模型选择和配置

大型模型,如谷歌的BERT和OpenAI的GPT-3都使用了转化器深度学习架构,这是近年来复杂的NLP应用的共同选择。模型的一些关键元素,如:

  • 转换器块的层数
  • 注意力头的数量
  • 损失函数
  • 超参数

需要在配置转换器神经网络时指定。配置可以取决于所需的用例和训练数据。模型的配置直接影响到模型的训练时间。

3. 模型训练

模型在预处理的文本数据上使用监督学习进行训练。在训练过程中,模型被呈现出一连串的词,并被训练为预测该序列中的下一个词。该模型根据其预测和实际的下一个词之间的差异来调整其权重。这个过程要重复数百万次,直到模型达到令人满意的性能水平。

由于模型和数据的规模都很大,因此需要巨大的计算能力来训练模型。为了减少训练时间,我们使用了一种叫做模型并行的技术。模型并行使一个大型模型的不同部分分散在多个GPU上,允许用AI芯片以分布式方式训练模型。

通过将模型分为较小的部分,每个部分都可以被并行训练,与在单个GPU或处理器上训练整个模型相比,训练过程更快。这导致更快的收敛和更好的整体性能,使得训练比以前更大的语言模型成为可能。常见的模型并行化类型包括:

  • 数据并行
  • 序列并行
  • 管线并行
  • 张量并行

从头开始训练一个大型的语言模型需要大量的投资,一个更经济的选择是对现有的语言模型进行微调,使其适合你的具体使用情况。据估计,GPT-3的单次训练费用约为500万美元。

4. 评估和微调

训练结束后,模型将在一个未被用作训练数据集的测试数据集上进行评估,以衡量模型的性能。根据评估结果,该模型可能需要通过调整其超参数、改变结构或在更多的数据上进行训练来提高其性能,进行一些微调。

为特定用例训练LLM

LLM的训练由两部分组成:预训练和特定任务训练。预训练是训练的一部分,使模型能够学习语言中的一般规则和依赖关系,这需要大量的数据、计算能力和时间来完成。论文中讨论的大型语言模型需要配备几个人工智能芯片的超级计算机系统(例如,英伟达DGX A100起价199,999美元)。一旦加上维护和电力成本,大型语言模型的预训练就是一笔数百万数量级的投资。

为了让企业更容易获得大型语言模型,LLM开发人员正在为希望利用语言模型的企业提供服务。英伟达的NeMO就是这些服务的一个例子,它提供预训练的LLM,用于微调和特定任务训练,以适应特定的使用情况。特定任务训练为模型增加了一个额外的层,需要更少的数据、功率和时间来进行训练;使大型模型能够为企业所用。新的特定任务层是通过few-shot learning来训练的,其目的是用较少的训练数据获得准确的输出。

由于该模型已经经过预训练,并且熟悉语言,因此,少数几次学习是一种可行的方法,可以将特定领域的单词和短语教给该模型。

下面的视频介绍了NVIDIA的NeMO LLM服务。

  1. Wodecki, Ben (July 22, 2022). “7 language models you need to know“. AI Business. Retrieved February 3, 2023.
  2. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., & Polosukhin, I. (2017). Attention is All you NeedNeural Information Processing Systems30, 5998–6008. https://arxiv.org/pdf/1706.03762v5
微海报