AI学习者 · 2022年12月21日

量化部署篇 | Vision Transformer应该如何进行PTQ量化?这个方法或许可以参考!

image.png

最近,Transformer在各种计算机视觉应用上取得了显著的性能。与主流卷积神经网络相比,视觉Transformer通常采用复杂的架构来提取强大的特征表示,这在移动设备上更难开发。在本文中提出了一种有效的训练后量化(PTQ)算法,以减少视觉Transformer的存储和计算成本。量化任务可以被视为分别为权重和输入找到最佳低比特位量化间隔。

为了保持注意力机制的功能,作者在传统量化目标中引入了Ranking Loss,该损失旨在保持量化后自注意力结果的相对顺序。此外,作者还深入分析了不同层的量化损失与特征多样性之间的关系,并通过利用每个注意力图和输出特征的kernel范数来探索混合精度量化方案。

在多个基准模型和数据集上验证了所提出方法的有效性,其性能优于最先进的训练后量化算法。例如,可以在ImageNet数据集上使用DeiT-B模型,以大约8-bits量化获得81.29%的Top-1精度。

1、简介

随着在自然语言处理(NLP)任务中的应用,基于Transformer的模型在各种计算机视觉任务中显示出强大的能力,如图像分类、目标检测和图像超分辨率。经过大规模数据的预训练,这些模型通常具有数亿个参数。例如,在ViT-L模型中有307M参数和64GFLOP,这在推理过程中内存和计算都很昂贵。这给这些模型在诸如手机和智能汽车等资源受限的设备上运行带来了巨大挑战。此外,集成基于Transformer的模型的实时计算机视觉应用程序必须满足低延迟要求,以实现高质量的客户体验。因此,迫切需要基于Transformer的模型压缩技术,以便在工业环境中部署。

在诸如剪枝和权重分解的各种压缩方法中,量化方法通过使用较低的权重值比特宽度来压缩神经网络,而不改变模型架构,这对于精心设计的网络架构(如Transformer)特别有用。量化权重和输入可以通过将浮点运算调整为整数或位运算来加快推理速度。在NLP(例如BERT)中,已经有一些基于Transformer的模型的训练感知量化方法。然而,这些方法不是为计算机视觉任务设计的,通常需要额外的训练或微调。此外,在一些场景中,整个训练数据不可用于优化量化模型,边缘设备的训练成本是不可容忍的。

PTQ量化是一种有效的模型压缩技术,它可以直接量化神经网络模型,而无需进行微调。大多数现有的PTQ量化方法是为卷积神经网络或递归神经网络设计的。这些方法没有考虑视觉Transformer的特性,这不完全适合于量化视觉Transformer。然而,视觉Transformer在各种计算机视觉任务中表现出更强的性能。因此,我们有动机探索它们的PTQ量化,以降低存储和计算成本。

在本文中研究了具有较高压缩比和加速比的混合精度的视觉Transformer模型的训PTQ量化方法。Transformer中的量化过程被公式化为用于找到最佳量化间隔的优化问题。特别是,本文的目标是最大化视觉Transformer中全精度输出和量化输出之间的相似性。为了更好地保持注意力机制的功能,作者彻底分析了注意力层和传统层(如MLP)之间的差异。然后,引入Ranking Loss来保持注意力值的相对顺序。

此外,作者建议根据特征多样性(即,由注意力图和输出特征计算的kernel范数)来确定每个层的比特宽度。作者交替地搜索所有层中的权重和输入的量化间隔,以获得最佳量化结果。此外,引入了偏置校正以减小累积量化误差。在几个基准测试上的实验结果证明了本文的算法在实现比现有技术的PTQ量化方法更好的性能方面的有效性。

2、本文方法

在本节中,详细阐述了提出的混合精度PTQ量化方案。给出了线性层的相似度感知量化和自注意力层的Ranking感知量化。此外,还介绍了基于注意力图和输出特征的kernel范数的优化偏置校正方法和混合精度量化方法。

2.1、准备工作

image.png

image.png
除了这些权重之外,作者还量化了所有线性层和矩阵乘法运算的输入。按照之前的工作中的方法不量化softmax操作和层的归一化,因为这些操作中包含的参数可以忽略不计,并且量化它们可能会带来显著的精度下降。

2.2、PTQ的优化

对于PTQ量化,需要将浮数限制为一个有限的Value集。量化间隔的选择对于量化是至关重要的,一个流行的选择是使用一个统一的量化函数,其中数据范围是等分的:

image.png

1、线性操作的相似性感知量化

image.png

2、对Self-Attention的Ranking感知量化

自注意力层是Transformer的关键组成部分,因为它可以计算出特征的全局相关性,这使得Transformer唯一地来自于卷积神经网络。用于自注意力的计算,作者通过发现,量化后的注意力图的相对顺序发生了变化,如图1所示,这可能会导致显著的性能下降。因此,在量化过程中引入了一个Ranking Loss来解决这个问题:

image.png

3、偏置修正值

为了进一步减少量化引起的输出的偏置误差,在每次搜索迭代后都引入了偏置校正方法。假设权值和输入的量化误差定义为:

image.png

如果对输出的误差的期望不是零,那么输出的平均值将会改变。这种分布的变化可能会导致以下几个层的有害行为。可以通过看到以下情况来纠正这个变化:

image.png

因此,从偏置输出中减去输出的期望误差可以确保每个输出单元的平均值保持不变。为了实现,期望的误差可以使用校准数据来计算,并从层的偏置参数中减去,因为期望的误差向量与层的输出具有相同的形状。

2.3、ViT的混合精度量化

不同的Transformer层关注不同的结构,预计它们表现出不同的灵敏度。因此,为所有层分配相同数量的位宽度是次优的。因此,作者探索了混合精度量化,其中更多的位被分配给更敏感的层,以保持性能。考虑到Transformer层的独特结构,将MSA或MLP模块中的所有位宽分配给相同的操作。这对硬件实现也很友好,因为权重和输入被分配了相同的位宽。

奇异值分解(SVD)是线性代数中一种重要的矩阵分解方法。它取一个基因表达数据的矩形矩阵,其公式可写为:

image.png

在本文中提出用MSA模块的注意力图的核范数和MLP模块的输出特征来估计Transformer层的灵敏度。核范数可以用来减少混合精度设置的搜索空间,而对更敏感的层使用更高的位宽,反之亦然。受Hawq-v2方法的启发,使用帕累托边界方法来确定位宽。其主要思想是根据每个候选位宽配置引起的总二阶扰动,根据以下度量进行分类:

image.png

给定一个目标模型的大小,根据它们的值对候选的位宽配置进行排序,并选择具有最小的位宽配置。各Transformer层的注意图的核规范和输出特征如图1所示。

image.png

正如所看到的,它们是针对不同的Transformer层而有所不同的。

3、实验

3.1、消融实验

image.png

在本节中评估了所提出的相似度感知量化模块、排序感知量化模块、偏差校正方法和混合精度方法的效果。实验结果如表3所示,实验是在采用ViT-B模型的ImageNet数据集上进行。可以看到,仅使用相似度感知量化的Top-1精度为75.42%,低于全精度模型,使用排序感知量化损失和偏差校正方法可以提高性能0.52%和0.39%。值得注意的是,基于核范数的混合精度可以进一步提高量化模型的性能,因为它考虑了不同层的变化灵敏度。

结果还表明,采用相似度感知混合精度量化的Top-1精度为76.26%。在这种情况下,排名感知量化和偏差校正仍然可以提高性能。此外,采用所有所提方法建立的8比特位量化模型的性能均为76.98%,与全精度模型相当。

3.2、图像分类

image.png

3.3、目标检测

image.png

4、参考

[1].Post-Training Quantization for Vision Transformer.

作者: 小书童
文章来源:集智书童

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
18838
内容数
1371
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息