赶上最新的AI论文

I-ViT:以整数类型计算 ViT!此外,还提供由 I-BERT 技术发展而来的 Shiftmax 和 ShiftGELU!

I-ViT:以整数类型计算 ViT!此外,还提供由 I-BERT 技术发展而来的 Shiftmax 和 ShiftGELU!

Transformer

三个要点
✔️ 拟议的 I-ViT 采用整数类型的所有视觉变换器计算
✔️ Softmax 和 GELU(带位移)可进一步提速
✔️ 与不量化相比,提速 3.72~4.11 倍

I-ViT: Integer-only Quantization for Efficient Vision Transformer Inference
written by Zhikai LiQingyi Gu
(Submitted on 4 Jul 2022 (v1), last revised 7 Aug 2023 (this version, v4))
Comments: ICCV 2023

Subjects: Computer Vision and Pattern Recognition (cs.CV)

code: 

本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。

介绍

视觉转换器(ViT)是一种在各种计算机视觉任务中实现最高精度的模型。

然而,面临的挑战是存储和计算开销相当大,使得边缘设备的开发和高效推理变得困难。


视觉转换器[1]

因此,ViT 也在进行模型量化的研究,通过降低权重和激活参数的表示精度来提高效率。

FasterTransformer成功地将非线性运算量化为整数类型,并提高了推理速度。不过,非线性运算部分仍有提高效率的余地,而且整数运算和浮点运算之间的交换会产生成本。

因此,本文提出了I-ViT,允许以整数形式处理 ViT 中的所有计算

拟议方法:I-ViT

大画面

所提出的I-ViT方法是一种只能完全使用整数类型进行处理的 ViT。

浮点数到整数的量化是通过对称均匀量化实现的,用下面的公式表示。

R是浮点数值,I是量化后的整数数值,S是量化时的缩放因子,m是剪切值,k是量化位精度,[]是取整函数。

下图显示了拟议方法 I-ViT 的全貌。

线性运算,如内积(MatMul)和全结合层(Dense),通过应用二元运算以整数形式实现。

另一方面,它不能直接应用于 Softmax、GELU 和 LayerNorm 等非线性运算

因此,对整数类型的运算分别由提议的ShiftmaxShiftGELUI-LayerNorm来实现。

I-LayerNorm 与之前介绍的 I-BERT 采用的方法相同,而 Shiftmax 和 ShiftGELU 则是 I-BERT 所用方法的更高级版本。

I-BERT 曾在 AI-SCHOLAR 中介绍过,请结合这篇文章查看:I-BERT:只能对整数类型进行推理的 BERT

线性的二项式算术

二元运算是一种在比例因子中使用整数位移实现浮点运算的方法,它允许只在整数类型上实现线性运算。

最初是为 CNN 设计的,但也可用于 ViT 中的线性运算。(嵌入层中的卷积层、变换层中的内积、全组合层)。

本节以内积为例,介绍内积的计算方法。

如果,那么内积可以表示如下。

在本例中,属于 int32 类型,因此将其转换为 int8 类型。

其中是预先计算的输出活动比例系数。

此外,由于是浮点类型,因此要使用以下公式将其转换为二元数 (DN)。
总结到此为止的操作,仅 int 类型的内积可通过位移计算如下

仅整数 Softmax:Shiftmax

在 ViT 中,Softmax用于将注意力分数转换为概率。

由于 Softmax 是非线性的,因此不能直接应用上述的二元运算。因此,本文提出了Shiftmax

首先,Softmax 用缩放因子和量化整数值表示如下。

为平滑数据分布并防止溢出,使用了以下范围限制

接下来,为了进行位移计算,将指数函数的基数从 e 转换为 2,如下所示:e = 1,2 = 1,3 = 1,4 = 1,5 = 1,6 = 1。这里使用的是以下近似值。

此外, 不是整数类型,因此它被分成
整数部分 () 和小数部分 () 如下。

为了降低计算复杂度,我们用一个线性函数对 在 (-1, 0] 范围内进行近似计算,如下所示。

到目前为止,Softmax 中指数函数的计算可以用缩放因子和量化整数类型 ( ) (ShiftExp)的形式表示。

使用 ShiftExp,可以得到 Softmax 的整数运算 Shiftmax 的最终表达式如下。

是一个执行 int 类型除法的函数,其中是要除的整数,是要除的整数,是输出位宽。

最后,Shiftmax 算法总结如下。

仅整数 GELU: ShiftGELU

众所周知,GELU在 ViT 中是一个非线性激活函数,可以用 sigmoid 函数 () 进行近似,如下所示。

因此, 可以通过位移计算如下。

正余弦函数也可以表示如下。

从这个表达式可以看出,Shiftmax 中描述的 ShiftExp 和 IntDiv 可用于仅使用整数类型计算 sigmoid 函数。

最后,对 ShiftGELU 算法总结如下。

I 层规范

LayerNorm将隐藏层特征标准化如下。

BatchNorm 还在推理中使用训练获得的固定值,而 LayerNorm 还需要在推理中计算平均值和标准偏差。

在整数运算中,数据的均值和方差很容易计算,但标准差的平方根运算却无法进行。

为此,我们提出了一种使用位移的改进型轻量级整数迭代法。

重复以下递增公式,最多迭代 10 次,直到

试验

实验程序

为了测试 I-ViT 的优越性,我们在大规模分类任务 ImageNet (ILSVRC-2012)上对准确率和延迟进行了比较

除了 FP 基准线(未量化)外,还使用了 Faster Transformer 和 I-BERT 进行比较。还使用了 ViT、DeiT 和 Swim 模型。详细设置见补充资料[2]。

实验结果

下表总结了实验结果。

首先,我们来看看准确率(Top-1 Acc.)

I-ViT 的准确度与 FP 基线相近或略高于 FP 基线,DeiT-S 的准确度提高了 0.27%。

它的性能也优于 FasterTransformer 和 I-BERT。

特别是,与 FP 基线相比,I-BERT 在 Swim-S 中的准确率低了 1.34%。这可能是由于 I-BERT 是为语言模型开发的,其近似方式并不适合图像识别任务。

接下来,我们看看延迟。

I-ViT 实现了 3.72~4.11 倍的速度提升,均高于 FasterTransformer 和 I-BERT。

FasterTransformer 将非线性运算作为浮点类型处理,这可能会导致与 I-ViT 相比结果较差。

在 I-BERT 中,非线性运算也是通过整数类型进行的,但 I-ViT 最大限度地利用了硬件逻辑的位移,这被认为能比 I-BERT 更快地进行推理。

消融研究

实验程序

作为一项消融研究,比较了 I-ViT 提出的 Shiftmax、ShiftGELU 和 I-LayerNorm 在分别被现有方法取代后的准确性和延迟时间。

Shiftmax与 I-BERT 采用的平方多项式近似 (Poly.) 和 FQ-ViT 采用的 LIS 进行了比较。

ShiftGELU与 I-BERT 中使用的平方多项式近似值 (Poly.) 进行了比较,I-LayerNorm 与 Fully-8bit 中使用的 L1 LayerNorm 进行了比较。

实验结果

下表总结了消融研究的实验结果。

对于 DeiT-B 和 Swin-S,可以看出用现有方法替换 Shiftmax 和 ShiftGELU 分别会导致精度下降和延迟时间增加。其中,ShiftGELU→Poly.的准确度下降幅度尤其大,分别为 0.86% 和 0.96%。这一结果表明,只逼近特定区间的多项式 GELU 不能很好地应用于 ViT。

速度降低的原因还在于,与平方多项式 (Poly.) 和 LIS 相比,Shift-* 能更有效地利用硬件逻辑。

I-LayerNorm→L1 LayerNorm 的准确率显著下降(2.49% 和 3.32%),而延迟时间则减少了 0.02 毫秒。

与 I 层矩阵相比,L1 层矩阵简化了计算,因此这一结果证实,虽然 L1 层矩阵速度更快,但并不能保持精确度。

摘要

在这篇文章中,我们介绍了 i-ViT,这是一种可实现所有整数计算的视觉转换器。

与 I-BERT 一样,它的主要优点是速度提高了 3.72~4.11 倍,精度几乎没有降低。

此外,I-BERT 使用平方多项式近似来实现整数形式的 Softmax 和 GELU,但我很好奇,如果将 I-ViT 中使用的 Shiftmax 和 ShiftGELU 应用于自然语言处理模型 BERT,会发生什么情况。

未来,高精度模型将更容易运行。

补贴

[1] Vision Transformer 原文:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
[2] Optimizer: AdamW
Learning rate: (2e-7, 5e-7, 1e-6, 2e-6) 用于调整
batchsize: 8
GPU: RTX 2080 Ti
*初始值为已学习的量化权重。微调。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们