NeurIPS 2022 | 模型轻量化部署!?根源分析异常值对Transformer的影响(含源码)

2022-12-06 15:07:22 浏览数 (1)

引言

目前,Transfomer结构可以说是已经成为自然语言处理(NLP)模型的基本元素。随着大型NLP模型的发展趋势,不断增加的内存和计算成本阻碍了它们在低资源设备上的部署。最近研究工作发现结构化异常值是量化性能的关键瓶颈,但目前方法增加了计算开销并且仍然存在异常值。今天给大家分享的这篇文章,从根源入手,提出了一个异常值抑制框架,该框架有效地抑制了异常值,不仅支持即插即用,而且首次将BERT的6位训练后量化(PTQ)和4位量化感知训练(QAT)精度推到全精度水平。

背景介绍

Transformer与许多流行的自监督模型一起成为自然语言处理中最常见的架构之一,例如 BERT、RoBERTa、XLNet和BART。虽然这些预训练模型在性能上表现出显著优势,但内存和计算开销一直是一个普遍关注的问题,尤其是在实际应用中。因此,模型压缩引起了学术界和工业界的广泛关注。其中,量化(低精度计算),是压缩大型模型并将其拟合到轻量级设备中的关键方法之一。

如今,研究人员更多地关注基于 Transformer 的模型的量化。 有专家为类BERT模型提出了一种8 bit量化方案,还有专家提出了一种分组量化技术,并使用二阶 Hessian 信息分析混合精度;也有专家将蒸馏与量化相结合,近似非线性操作以实现整数量化。尽管如此,很少有研究深入分析量化基于Transformer的模型的固有瓶颈。最近,一些论文表明,基于Transformer的模型具有非常大的异常值(甚至接近100),并且这些极端异常值表现在结构化模式中(主要聚集在几个嵌入维度上,甚至在独特的Token上变得更大)。这些特殊的异常值会给量化性能带来极大影响(例如,即使是8 bit量化方案性能也会下降12%)。为了应对这一挑战,现有方法选择绕过解决方案,例如更精细的量化粒度。然而,这种方案导致计算成本增加,并且不可避免地阻碍了加速效果。

为了抑制异常值而不是绕过异常值,本文对异常值的诱因和裁剪异常值的影响进行了深入的分析。首先对于诱因研究,发现LayerNorm结构中的缩放参数γ作为一个异常值放大器,放大了输出中的异常值。对于量化来说,通过提取它,激活会变得更稳健。然后进一步研究剪切影响,发现剪切异常值时对最终性能的影响差异很大,一些覆盖面积较大的影响较强的异常值可以被安全剪切而不影响精度,但当重要的异常值被剪切时,精度会突然下降。更有趣的是,尽管那些不太重要的异常值可能以长尾形式出现,但它们只由少数标记提供。

模型方法

在以上分析基础上,本文提出了一个异常值抑制框架来突破低比特Transformer语言模型的极限。该框架包含两个关键组件:Gamma迁移和Token-Wise裁剪。即首先,采用Gamma迁移技术,通过将Gamma迁移到后续的模块中,获得一个更加量化友好的模型。其次token-wise裁剪通过利用token范围的较大差异,进一步有效地找到合适的剪切范围。其中:

在对异常值的诱因研究的基础上,发现不经过缩放参数的激活提供了较小的量化误差。通过这种方法,本文对LayerNorm函数进行了拆分,将γ迁移到后续结构中,并对非缩放LayerNorm的输出进行了量化。这样就产生了一个更有利于量化的模型,并在没有额外计算负担的情况下为量化带来更健壮的激活。这种转换对于全精度FP模型是等效的,对于低位的模型具有更强的激活能力。整个流程如图下所示:

Gamma迁移技术在其它模型结构上的应用如下图示:

在对异常值裁剪研究的基础上,本文提出了token-wise裁剪方法,该方法在从粗到细的过程中进一步有效地找到合适的裁剪范围,最终量化损失最小。粗粒度阶段利用那些不太重要的异常值仅属于少数token的事实,可以以token-wise的方式快速获得初步的裁剪范围。然后细粒度阶段对其进行优化。我们提出的框架可以应用于不同的模型和任务,并与现有的方法相结合。更重要的是,异常值抑制的思想将为自然语言处理的量化研究提供新的思路。。

实验结果

本文进行了两组实验来验证异常值抑制框架的有效性。在BERT、RoBERTa和BART模型上评估GLUE基准、SQuAD、XSum和CNN/DailyMail。

下表展示了每个组件的效果。作为一个通用的插件模块,Gamma迁移能够提高MinMax和Token-Wise裁剪的效果。其中Token-Wise性能裁剪也大大超过了基线模型。

与其他现有方法在文本分类、问题回答和摘要任务中的比较结果,如下图所示:

论文&&源码

Paper:https://arxiv.org/pdf/2209.13325.pdf

Code:https://github.com/wimh966/outlier_suppression

0 人点赞