-
背景
文章介绍了在大型语言模型中,前馈层(Feedforward layers)占用了大量的参数,但是实际上,并不是所有的神经元都在每次推理时都需要被激活。为了证明这一点,研究者们提出了一个BERT变体,即UltraFastBERT,它在推理过程中只使用了0.3%的神经元,并且和其他类似BERT模型相比,在下游任务上的表现是相当的。 -
已有的工作 以往的工作中,虽然加速了注意力机制的执行,但对中间层的前馈网络并没有进行大幅度的优化。现有的前馈网络实施密集矩阵乘法(Dense Matrix Multiplication, DMM),而这些模型的下游表现也证明了大量的神经元并非在每次推理时都是必需的。
- 提出了一个UltraFastBERT
-
挑战1:提高前馈网络的计算效率 尽管大型语言模型的前馈层包含了绝大多数参数,但这些神经元并不需要在每次推理时全部参与运算。UltraFastBERT使用快速前馈网络(Fast Feedforward Networks,FFFs)代替传统的前馈网络,显著提高了计算效率。每层推理仅激活12个中的4095个神经元,通过条件矩阵乘法(Conditional Matrix Multiplication,CMM)实现,这种方法只涉及输入和一部分神经权重的点乘,而后者则依赖于前者的输出来选择下一步的操作。这解决了传统前馈网络中所有输入必须与所有权重点乘的计算密集问题。
-
挑战2:缺乏高效的实现和优化 目前没有天然有效的条件矩阵乘法实现,也没有流行的深度学习框架提供可以用于实现它的接口,除了高级模拟。研究者们提供了基于BLAS库的指针批处理矩阵乘法例程的CPU实现,并在后续的节中比较了CPU和GPU实现的不同优化级别,并指出尽管已经有了明显的加速证据,但还有更多的潜力可以挖掘。这同时也说明了为什么相比于传统的密集矩阵乘法,它的加速比只有78倍而不是341倍。
-
...
-
根据论文中的信息,UltraFastBERT模型经过了规范训练过程,并在GLUE基准的多项任务(如RTE、MRPC、SST、STS-B、MNLI、QQP、QNLI和CoLA)中进行了微调,微调了5个epochs,并在所有任务上使用了4*10^-5的学习率。实验结果表明,UltraFastBERT的表现与其它BERT类模型相当。此外,论文里提供了一种基于CPU的简单CMM实现,发现它比优化的传统DMM实现快了78倍,以及一个在PyTorch中实现的,相比批处理的前馈推理加速了40倍的版本。
本文介绍了UltraFastBERT,这是一个大规模语言模型的变种,它显著减少了在推理时需要使用的神经元数量,并通过使用快速前馈网络来提高计算效率。尽管不具备原生的高效实现,但该模型提供了一个能够显著加速推理过程的CPU代码实现,并在标准下游任务中表现良好。这一工作展示了条件神经执行在语言建模领域巨大的潜力。