关注我们.

人工智能

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

mm

语言模型和生成式人工智能以其强大的功能而闻名,是人工智能行业的热门话题。 全球研究人员正在提高他们的效率和能力。 这些系统(通常是深度学习模型)在大量标记数据上进行了预先训练,并结合了用于自我关注的神经网络。 他们使用各种层(前馈层、循环层、嵌入层和注意力层)来处理输入文本并产生相关输出。

通常,大型语言模型的前馈层会承载最多的参数。研究表明,这些模型在推理过程中仅使用一小部分可用神经元进行输出计算。

本文介绍了 UltraFastBERT,这是一个基于 BERT 的框架,其性能与领先的 BERT 模型相当,但在推理过程中仅使用 0.3% 的神经元,即每层 12 个神经元中仅使用 4095 个。我们将探索 UltraFastBERT 的架构、功能和结果。现在就开始吧。

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

传统上,语言模型采用不同的组件来配备内容生成功能,包括前馈层、循环层、嵌入层和注意力层。 这些组件负责在训练期间学习识别模式,并最终根据输入文本生成准确的输出。 每个组件都有一些参数,并且在 语言模型,其中大部分参数由前馈层保存。 然而,这些前馈层并没有利用 100% 可用的神经元在干扰时间为每个输入生成输出,这会导致资源浪费,从而增加复杂性、计算时间和计算成本。 

从本质上讲,UltraFastBERT 框架是 BERT 框架的变体,建立在这一概念的基础上,并在其架构中用更快的前馈网络取代了前馈层,最终导致 UltraFastBERT 框架仅利用 0.3% 的可用神经元,同时提供可比的结果具有相似大小和训练过程的 BERT 模型,尤其是在下游任务上。 由于其设计实现,UltraFastBERT 框架中的中间层速度呈指数级增长, 

给定一个快速前馈 (FFF) 网络和一个前馈 (FF) 网络,每个网络都有 n 个神经元,前馈网络中前向传递的时间复杂度为 O(n),而前馈网络的时间复杂度为 O(log2n)快速前馈网络,时间复杂度的差异主要是由于在快速前馈网络中,神经元被组织成一棵平衡二叉树,并且当提供输入时,网络仅有条件地执行树的一个分支。 此外,对快速前馈网络执行干扰会导致 CMM 或条件矩阵乘法,其中输入行分别与自然权重列相加,并且先前点积运算的输出确定要继续处理的列的权重。 结果,网络仅将所有神经元用于少数输入,并且任何输入都不需要网络处理超过几个神经元。 CMM 点积与 DMM 或密集矩阵乘法形成对比,DMM 或密集矩阵乘法计算所有输入与所有权重列的点积。 

总而言之,UltraFastBERT 是一个基于 BERT 的框架,提供的结果可与最先进的 BERT 语言模型相媲美,

  1. 在干扰阶段仅利用 0.3% 的可用神经元,并且每个干扰层仅使用总共 12 个神经元中的 4095 个神经元。 
  2. 通过对下游任务实施微调策略,提供可与最先进的 BERT 模型相媲美的强大性能。 
  3. 提供 CMM 或条件矩阵乘法的本机实现,构成快速前馈网络的基础,与本机优化的 DMM 或密集矩阵乘法相比,最终导致性能加速 78 倍。 

前馈神经网络

前馈神经网络是最简单的神经网络之一 人工神经网络 仅向前移动信息,通过隐藏节点从输入节点到输出节点。快进神经网络的主要亮点之一是此类网络中没有循环或周期,并且与 RNN 或循环神经网络、CNN 或传统神经网络相比,它们的构建更简单。快进神经网络的体系结构由三个部分组成,即输入层、隐藏层和输出层,每层都由称为神经元的单元组成,每层通过权重相互连接。 

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

展望未来,快速前馈神经网络的工作有两个关键阶段:前馈阶段和反向传播阶段。 

前馈阶段

在前馈阶段,输入被馈送到网络,然后向前传播。 然后,隐藏层计算输入的加权和,并通过将输入的和传递给 ReLu、Sigmoid 和 TanH 等激活函数,在模型中引入非线性。 该过程再次重复,直到权重到达输出层,并且模型做出预测。 

反向传播阶段

一旦模型做出预测,它就会计算生成的输出与预期输出之间的误差。然后误差通过网络反向传播,网络使用梯度下降优化算法来调整权重,试图最小化误差。 

UltraFastBERT:模型架构和工作

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

  1. 该框架通过使用跨节点的 GeLu 激活函数,并为这些节点配备输出权重,并完全消除输出偏差,消除了叶节点和非叶节点之间的差异。 之后,框架将叶子大小固定为 1。 
  2. 最后,该框架通过联合计算中间输出层,允许并行多个快速前馈网络树。 该框架设法通过对各个树求和来完成此计算,然后将总和呈现为中间输出层。 

在训练中,UltraFastBERT 框架遵循crammedBERT 框架采用的训练程序,包括在预训练中禁用 dropout,并使用 1 周期三角学习率计划。 然后对该模型进行微调,以最大限度地提高其在各种任务(主要是总共 5 个时期的 GLUE 基准)上的性能。 

干扰

干扰是快速前馈网络的重要组成部分,这些快速前馈网络本身构成了大型语言模型的主要部分,并且以其卓越的加速潜力而闻名。 为了了解这种加速潜力,我们以最先进的语言模型之一 GPT-3 为例,其中每个 Transformer 层中的前馈网络由超过 49,100 个神经元组成。 如果可训练,快速前馈网络(最大深度为 15)可以取代原始前馈网络。 引入的快速前馈网络将拥有超过 65,000 个神经元,但它只会利用其中 16 个神经元进行干扰,大约相当于 GPT-0.03 可用神经元的 3%。 

算法与兼容性

UltraFastBERT 框架利用递归伪代码算法来实现快速前馈干扰,该算法如下图所示。 

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

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

UltraFastBERT:性能和结果

我们将讨论 UltraFastBERT 框架在微调和干扰任务方面的性能,以分析该框架与最先进的语言模型的表现如何。 

微调结果

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

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

干扰结果

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

  1. 在 1 级实现中,使用 BLAS 1 级例程(即标量-矢量积和矢量-矢量点积)构建实现。 
  2. 在第 2 级中,实现利用 BLAS 第 2 级例程,即批量标量向量积和批量矩阵向量点积。 
  3. 在第 3 级中,实现采用非批处理 BLAS 第 3 级矩阵-矩阵乘法方法,尽管它是前馈网络可用的最快实现,但此类实现不适用于快速前馈网络,因为该库不支持向量计算矩阵乘法的稀疏程度。 

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

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

然而,值得注意的是,上表中报告的加速意味着“公平比较”,即快速前馈和前馈实现都使用相同的线性代数例程基元运算。 此外,在级别 1 和级别 2 上,快速前馈网络的实现能够分别比最快前馈实现快 48 倍和 78 倍地执行干扰。 

总结

在本文中,我们讨论了 UltraFastBERT,它是 BERT 框架的一个变体,它建立在这样的概念之上:前馈层不会 100% 地利用可用的神经元在干扰时间为每个输入生成输出,这会导致浪费资源增加了复杂性、计算时间和计算成本,并在其架构中用更快的前馈网络取代了前馈层,最终导致 UltraFastBERT 框架仅利用 0.3% 的可用神经元,同时提供与具有相似大小和大小的 BERT 模型相当的结果。培训过程,特别是下游任务。 

由于其设计实现,UltraFastBERT 框架中的中间层速度呈指数级增长。 此外,UltraFastBERT 框架提供的强大性能证明了 法学硕士 由于 UltraFastBERT 框架在干扰期间仅利用 0.3% 的可用神经元,因此可以通过仅使用一小部分参数来提供强大的性能,但仍能在干扰时间上实现 78 倍的加速。 

“职业工程师,心灵作家”。 Kunal 是一位技术作家,对人工智能和机器学习有着深厚的热爱和理解,致力于通过他引人入胜且信息丰富的文档来简化这些领域的复杂概念。