FastFormers 论文解读:可以使Transformer 在CPU上的推理速度提高233倍

简介: FastFormers 论文解读:可以使Transformer 在CPU上的推理速度提高233倍

640.png


自Transformers诞生以来,紧随其后的是BERT,在几乎所有与语言相关的任务中,无论是问题回答,情感分析,文本分类还是文本生成,都占据着NLP的主导地位。与RNN和LSTM消失的梯度问题(不影响长数据序列的学习)不同,Transformers在所有这些任务上的准确性更高。RNN和LSTM不可扩展,因为它们必须考虑先前神经元的输出。

现在,《Transformers》的主要问题是它们在训练和推理方面都需要大量计算。虽然可以通过使用预先训练的语言模型(由Google,Facebook和OpenAI Large等大型公司开源)并在我们的数据集上进行微调来解决训练部分,但是这个解决方案并不完美。现在,后一个问题可以通过FastFormers解决,FastFormers是一组配方,可以在各种NLU任务上为基于Transformers的模型实现高效的推理时间性能。

“将这些建议的方案应用于SuperGLUE基准,与现成的CPU模型相比,能够实现9.8倍至233.9倍的加速。在GPU上,通过所介绍的方法,我们还可以实现最高12.4倍的加速。” -FastFormers

论文 FastFormers: Highly Efficient Transformer Models for Natural Language Understanding( arxiv.org/2010.13382)主要集中于为Transformer模型提供高效的推理,从而能够在大规模生产场景中进行部署。作者特别关注推理时间效率,因为它主要支配了生产部署的成本。在此文章中,我们将介绍本文所解决的所有问题和挑战。

那么,他们如何解决推理时间过长的问题?

他们主要利用三种方法,即知识蒸馏,结构化修剪和模型量化。

第一步是知识蒸馏,它可以减小模型深度和隐藏状态的大小,而又不影响准确性。

其次,结构化修剪可通过减少自我关注头的数量来缩小模型的尺寸,同时还努力保持准确性。

最后,模型量化可通过最佳利用硬件加速功能来加快模型执行速度。在CPU上,采用8位整数量化方法,而在GPU上,所有模型参数都转换为16位浮点数据类型,以最大程度地利用有效的Tensor Core。

深入研究

知识蒸馏:知识蒸馏是指通过逐步讲授一个较小的网络,确切地讲,使用一个已经受过训练的较大网络来做什么,来进行模型压缩的想法。虽然大型模型比小型模型具有更高的知识能力,但这种能力可能未得到充分利用。即使模型使用很少的知识能力,评估模型在计算上也可能同样昂贵。知识蒸馏将知识从大模型转移到小模型,而不会失去有效性。由于较小型号的评估成本较低,因此可以将其部署在功能较弱的硬件(如智能手机)上。

知识蒸馏方法:特别使用两种方法,即特定于任务的蒸馏和与任务无关的蒸馏。

在特定任务的蒸馏中,作者按照TinyBERT提出的程序将经过微调的教师模型提炼为较小的学生体系结构;在与任务无关的蒸馏方法中,作者直接对常规蒸馏模型应用微调以针对特定任务进行调整。

640.png

知识蒸馏的结果:在实验中,作者观察到当蒸馏为其他模型类型时,蒸馏模型不能很好地工作。因此,作者限制了我们的设置,以避免将Roberta模型提炼为BERT,反之亦然。下表中,通过验证数据集上的教师模型总结了有关任务的知识提炼结果。(学生称为蒸馏模型)

640.png

神经网络修剪:神经网络修剪是一种压缩方法,涉及从经过训练的模型中删除权重。在农业中,修剪会切断植物不必要的分支或茎。在机器学习中,修剪可以消除不必要的神经元或重量。神经网络修剪技术可以将经过训练的网络的参数数量减少90%以上,减少存储需求并提高推理的计算性能,而不会影响准确性。这有助于减小训练后的神经网络的大小或能耗,并有助于提高推理效率。修剪使网络更高效,更轻便。

640.png

结构化修剪方法:我们的结构化修剪方法的第一步是识别“多头注意”中最不重要的头和前馈层中最不重要的隐藏状态。

  • 用于计算重要性分数的一阶方法,该方法利用一阶梯度信息而不是基于幅度的修剪。
  • 在进行重要性分数计算之前,作者将掩码变量添加到每个注意头以进行头部的梯度计算。然后,作者在整个验证数据集上对模型进行正向和反向遍历,然后累积梯度的绝对值。这些累积的值然后用作重要度分数,我们将其用于分类头部和中间隐藏状态的重要度。
  • 根据目标模型的大小,作者从网络中选择给定数量的顶部磁头和顶部隐藏状态。完成排序和选择步骤后,作者将重新分组并重新连接其余的头部和隐藏状态,从而使模型更小。修剪头部和隐藏状态时,作者在不同图层上使用相同的修剪率。这使得进一步的优化可以与修剪的模型无缝地协同工作。
  • 在实验中,作者发现,经过修剪的模型经过另一轮知识蒸馏后,可以获得更高的准确性。因此,知识蒸馏再次应用于该模型。

模型量化:量化是指用于执行计算并以小于浮点精度的位宽存储张量的技术。量化模型对张量使用整数而不是浮点值执行部分或全部运算。这允许更紧凑的模型表示,并在许多硬件平台上使用高性能矢量化操作。

CPU上的8位量化矩阵乘法:与32位浮点算术相比,8位量化矩阵乘法带来了显着的加速,这归功于CPU指令数量的减少。

GPU的16位模型转换:V100 GPU支持Transformer架构的完整16位操作。同样,除了具有较小的值范围外,16位浮点运算不需要对输入和输出进行特殊处理。由于Transformer模型受内存带宽限制,因此这种16位模型转换带来了相当可观的速度提升。观察到大约3.53倍的加速,具体取决于模型设置。

除了应用的结构和数值优化外,作者还利用各种方式进一步优化计算,尤其是多处理优化和计算图优化。

综合结果

下表说明了以下结果的有效性

640.png

在本文中,作者介绍了FastFormers,它可以在各种NLU任务上为基于Transformer的模型提供有效的推理时间性能。FastFormers论文的作者表明,利用知识提炼,结构化修剪和数值优化可以大大提高推理效率。我们证明,这些改进最多可以提高200倍,并以节省22倍的计算量实现200倍以上的推理成本节省。

最后FastFormers源代码: https://github.com/microsoft/fastformers

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
6月前
|
机器学习/深度学习 算法 开发工具
【YOLOv8量化】普通CPU上加速推理可达100+FPS
【YOLOv8量化】普通CPU上加速推理可达100+FPS
889 0
|
7月前
|
测试技术 PyTorch 算法框架/工具
魔搭开源推理引擎 DashInfer,助力CPU服务器解锁大模型超强推理
ModelScope推出了预训练大语言模型(LLM)推理引擎DashInfer,采用C++ Runtime编写,提供C++和Python语言接口,具有生产级别的高性能表现,适用于多种CPU架构,包括x86和ARMv9。DashInfer支持连续批处理(Continuous Batching)和多NUMA推理(NUMA-Aware),能够充分利用服务器级CPU的算力,为推理14B及以下的LLM模型提供更多的硬件选择。该项工作已开源。
|
7月前
|
存储 机器学习/深度学习 测试技术
mnn-llm: 大语言模型端侧CPU推理优化
mnn-llm: 大语言模型端侧CPU推理优化
1033 1
|
机器学习/深度学习 编解码 PyTorch
港中文提出 EdgeViT | 超越MobileViT与MobileNet,实现Transformer在CPU上实时
港中文提出 EdgeViT | 超越MobileViT与MobileNet,实现Transformer在CPU上实时
257 0
|
机器学习/深度学习 编解码 自然语言处理
NAS-ViT | 超低FLOPs与Params实现50FPS的CPU推理,精度却超越ResNet50!!!
NAS-ViT | 超低FLOPs与Params实现50FPS的CPU推理,精度却超越ResNet50!!!
260 0
|
机器学习/深度学习 人工智能 并行计算
现在都2202年了,用CPU做AI推理训练到底能不能行?
现在都2202年了,用CPU做AI推理训练到底能不能行?
417 0
|
机器学习/深度学习 人工智能 安全
新至强训练推理增效十倍,英特尔CPU加速AI更上一层楼
英特尔在自己最擅长的 CPU 上完成了一次 AI 计算的革新。
312 0
新至强训练推理增效十倍,英特尔CPU加速AI更上一层楼
|
PyTorch 算法框架/工具
在pytorch中,模型权重的精度会影响模型在cpu上的推理速度吗?
在用pytorch训练模型时发现,模型训练的eopch越多,保存模型时模型权重的精度越好,模型在cpu上的推理的速度越慢,是因为模型权重精度会影响推理速度吗?如何调整pytorch模型参数的精度?
737 0
|
机器学习/深度学习 存储 人工智能
现在都2202年了,用CPU做AI推理训练到底能不能行?
CPU 不适合模型推理和训练?那已经是老刻板印象了,英特尔® 至强® 可扩展处理器搭配 AVX-512 指令集,单核一次能同时进行 128 次 BF16 浮点运算,这对于一般的深度学习模型不论在训练还是推理已经是足够的了。
869 0
现在都2202年了,用CPU做AI推理训练到底能不能行?
|
人工智能 边缘计算 物联网
CPU推理性能优化再上新台阶 阿里云斩获MLPerf最新榜单多项第一
CPU推理性能优化再上新台阶,阿里云斩获MLPerf2022榜单多项第一
CPU推理性能优化再上新台阶 阿里云斩获MLPerf最新榜单多项第一