Press "Enter" to skip to content

“超快速BERT:指数级加速语言建模”

语言模型和生成式人工智能因其能力而闻名,在人工智能行业中是一个热门话题。全球研究人员正在提高它们的功效和能力。这些系统通常是深度学习模型,它们在广泛标记的数据上进行预训练,并结合了自注意力的神经网络。它们使用各种层次-前馈、递归、嵌入和注意力-来处理输入文本并产生相关的输出。

通常来说,大型语言模型的前馈层具有最多的参数。研究显示,这些模型在推理期间仅使用了可用神经元的一小部分进行输出计算。

本文介绍了一种名为UltraFastBERT的基于BERT的框架,它在推理过程中只使用了0.3%的神经元,每个层次具体为每个层次的4095个神经元中的12个。我们将探索UltraFastBERT的架构、功能和结果。让我们开始吧。

UltraFastBERT:指数级更快的语言建模介绍

传统上,语言模型利用不同的组件来具备内容生成能力,包括前馈层、递归层、嵌入层和注意力层。这些组件负责在训练期间学习识别模式,并根据输入文本生成准确的输出。每个组件都有一些参数,在语言模型中,前馈层持有大部分这些参数。然而,这些前馈层在推理时并没有利用它们可用的100%神经元为每个输入生成输出,这导致了资源的浪费,增加了复杂性、计算时间和计算成本。

在核心上,UltraFastBERT框架是BERT框架的一种变体,它建立在这一概念上,并在其架构中用更快的前馈网络替换了前馈层,从而使UltraFastBERT框架仅利用了可用神经元的0.3%,同时在下游任务上提供与具有相似大小和训练过程的BERT模型相媲美的结果。由于其设计实现,UltraFastBERT框架的中间层速度指数增加

给定一个快速前馈(FFF)网络和一个前馈(FF)网络,每个网络都有n个神经元,前馈网络的前向传递的时间复杂度是O(n),而快速前馈网络的时间复杂度是O(log2n),这个时间复杂度的差异主要是因为在快速前馈网络中,神经元被组织成一个平衡的二叉树,当输入被提供时,网络仅有条件地执行树的一个分支。此外,对快速前馈网络进行推理会产生CMM(条件矩阵乘法),其中输入行与自然权重列分别进行点乘,前一个点积操作的输出确定了列继续进行的权重。结果是,网络仅对少量输入使用所有神经元,且没有输入需要由网络处理的神经元超过几个。CMM点乘与计算所有输入与所有权重列的DMM(稠密矩阵乘法)形成对比。

总之,UltraFastBERT是一种基于BERT的框架,其结果与最先进的BERT语言模型可媲美

  1. 在推理阶段仅利用了可用神经元的0.3%,并且每个推理层仅使用了4095个神经元中的12个
  2. 通过在下游任务上实施微调策略,提供与最先进的BERT模型相媲美的强大性能
  3. 提供了CMM(条件矩阵乘法)的本地实现,它是快速前馈网络的基础,最终导致性能提升78倍,与本地优化的DMM(稠密矩阵乘法)相比

前馈神经网络

前馈神经网络是最简单的人工神经网络之一,它只将信息沿着正向方向从输入节点传递到输出节点,经过隐藏节点。快速前馈神经网络的一个主要亮点是,这种网络中没有循环或循环,与RNN(递归神经网络)或CNN(卷积神经网络)相比,构造起来更简单。快速前馈神经网络的架构由三个组件组成,即输入层、隐藏层和输出层,每个层都由称为神经元的单元组成,每个层与其他层之间通过权重相互连接。

输入层中的神经元接收输入,然后将其转发到下一层。每个输入层中的神经元数量由输入数据的维度确定。接下来,我们有隐藏层,它们既不暴露给输入也不暴露给输出,它们负责必要的计算。每个隐藏层中的神经元将前一层给出的输出的加权求和,经过激活函数处理,并将结果传递给下一层,过程不断重复。最后,我们有输出层,为给定的输入产生输出。快速前馈网络中每一层的每个神经元都与下一层的每个神经元相互连接,从而使FFF神经网络成为一个全连接网络。权重用于表示神经元之间连接的强度,网络通过根据输出中的错误更新这些权重来学习模式。

接下来,快速前馈神经网络的工作分为两个关键阶段:前馈阶段和反向传播阶段。

前馈阶段

在前馈阶段,将输入输入到网络中,然后进行传播。隐藏层计算输入的加权和,并通过激活函数(如ReLu、Sigmoid和TanH)引入模型的非线性。该过程不断重复,直到权重到达输出层,并且模型进行预测。

反向传播阶段

模型进行预测后,计算生成的输出与期望输出之间的误差。然后通过网络进行反向传播,网络使用梯度下降优化算法调整权重,以尽量减少误差。

UltraFastBERT:模型架构与工作原理

UltraFastBERT框架建立在crammedBERT架构之上,除了中间层的性质外,UltraFastBERT框架使用crammedBERT框架的所有组件。相反,UltraFastBERT框架将crammedBERT框架中的变压器编码器替换为快速前馈网络。UltraFastBERT框架对原始前馈网络进行以下更改。

  1. 通过在节点之间使用GeLu激活函数,消除了叶节点和非叶节点之间的差异,并为这些节点配备了输出权重,并完全取消了输出偏置。然后,框架将叶子节点大小固定为1。
  2. 最后,框架通过联合计算中间输出层,允许多个快速前馈网络树并行工作。通过对每棵树进行求和,框架实现了此计算,并将总和表示为中间输出层。

继续进行,训练中,UltraFastBERT框架遵循crammedBERT框架采用的培训程序,包括在预训练中禁用丢弃,并使用1循环三角形学习率计划。然后,在GLUE基准的各种任务上进行细调,以最大化其性能,总共进行5个时期的训练。

干扰

干扰是快速前馈网络的重要部分,这些快速前馈网络本身构成了大型语言模型的一大部分,它们以出色的加速潜力而闻名。为了理解这种加速潜力,让我们以最先进的语言模型之一GPT-3为例,其中每个变压器层的前馈网络包含超过49,100个神经元。如果可训练,快速前馈网络(最大深度为15)可以替换原始前馈网络。引入的快速前馈网络将具有超过65,000个神经元,但只有16个神经元用于干扰,这大约占GPT-3可用神经元的0.03%。

算法和兼容性

UltraFastBERT框架利用递归伪代码算法进行快速前馈干扰,并将算法显示在下方图像中。

“超快速BERT:指数级加速语言建模” 四海 第1张

在此,B表示批大小,H表示输入层的宽度,M表示列。计算矩阵乘法方法的另一个主要关注点是,它是否使快速前馈网络与已使用的稠密矩阵乘法和现有深度学习框架的进程不兼容。幸运的是,使用CMM不会影响性能或引入不兼容性,尽管它增加了缓存复杂性。

需要注意的是,作为快速前馈网络的一部分,单线程的密集矩阵乘法依赖于执行MAC或乘法累加指令,因此用CMM方法替代DMM将使CPU受益,因为计算每个元素的层输出所需的MAC指令更少。因此,尽管使用通常与分支相关的条件性,但“神经分叉”作为内存偏移的补充作用于框架中的相关指针。因此,在UltraFastBERT框架中,指令分支预测永远不会完全参与CMM的条件性,并且仅逐个加载权重矩阵的相关列。此外,由于该框架执行行列点乘积,因此SIMD或单指令多数据的向量并行处理仍然是速度提升特定设备干扰实现的良好选择。

UltraFastBERT:性能与结果

我们将讨论UltraFastBERT框架在微调和干扰任务上的性能,以分析该框架与最先进的语言模型的比较。

微调结果

下图展示了各种模型在GLUE-dev测试数据集上的表现。其中,N表示框架用于训练的神经元数量,“Avg”表示所有任务的平均得分。

“超快速BERT:指数级加速语言建模” 四海 第2张

可以清楚地看到,经过24小时在A6000 GPU上训练的UltraFastBERT框架,在与原始BERT框架相比,几乎保留了GLUE下游任务预测性能的96%。此外,可以看到,随着快速前馈网络深度的增加,框架的性能会下降,尽管大部分性能降低仅发生在CoLa任务上。如果暂时忽略CoLa任务,UltraFastBERT框架的预测性能得分约为98.6%。

干扰结果

在本节中,我们将比较几种前馈或快速前馈网络在干扰实现上的性能,并且这些实现分为三个级别。

  1. 在第1级实现中,实现使用BLAS Level 1例程,即标量-向量乘积和向量-向量点乘。
  2. 在第2级实现中,实现使用BLAS Level 2例程,即批量标量-向量乘积和批量矩阵-向量点乘。
  3. 在第3级实现中,实现采用非批量BLAS Level 3矩阵-矩阵乘法方法,尽管这是快速前馈网络的最快实现,但这种实现对于快速前馈网络不可用,因为该库不支持计算矩阵乘法的向量级稀疏性。

此外,UltraFastBERT框架通过使用自定义CUDA或PyTorch内核进行GPU实现。

“超快速BERT:指数级加速语言建模” 四海 第3张

上表将UltraFastBERT框架与其前身,基于BERT的框架在前馈和快速前馈层方面的性能进行了比较,其中每列都包含在使用相同线性代数例程原语时的相对推理快速前馈与前馈实现速度提升。

然而,值得注意的是,上表中报告的速度提升是针对“公平比较”的,即快速前馈和前馈实现都使用相同的线性代数例程原语操作。此外,在第1级和第2级,快速前馈网络的实现能够比最快的前馈实现快48倍和78倍执行干扰。

最后的思考

在本文中,我们讨论了UltraFastBERT,这是BERT框架的一种变体。它建立在这样一个概念上:前馈层在干涉时未能充分利用可用的神经元来为每个输入生成输出,从而导致资源浪费,增加了复杂性、计算时间和计算成本。它用更快的前馈网络替换了前馈层,并在架构中仅利用了可用神经元的0.3%,同时在下游任务上提供了与相似大小和训练过程的BERT模型相当的结果。

由于其设计实施,UltraFastBERT框架中的中间层运行速度呈指数级增长。此外,UltraFastBERT框架所提供的强大性能证明了LLMs可以通过仅利用部分参数进行干扰来实现强大的性能。该框架在干扰时仅利用了可用神经元的0.3%,却实现了78倍的速度提升。

Leave a Reply

Your email address will not be published. Required fields are marked *