HAQ-ViT:一种基于硬件感知的训练后量化技术,用于提升视觉Transformer推理的效率
《Knowledge-Based Systems》:HAQ-ViT: A Hardware-Aware Post-Training Quantization for Efficient Vision Transformer Inference
【字体:
大
中
小
】
时间:2026年03月30日
来源:Knowledge-Based Systems 7.6
编辑推荐:
Vision Transformer(ViT)的量化加速研究通过混合量化、动态稀疏和早退出机制提升效率,在ImageNet上保持84.6%精度,能耗降低至10.91 mJ。
赵世琦|王正杰|孙浩祖|王思博|陈志涵|傅长增|杨杰|穆罕默德·萨万
中国沈阳东北大学,110819
摘要
近年来,视觉变换器(ViTs)在计算机视觉领域取得了卓越的性能。然而,它们自注意力机制的二次复杂度导致模型存储需求和计算开销显著增加,这已成为阻碍其广泛应用的关键瓶颈。因此,压缩ViTs已成为研究的主要焦点,其中ViTs量化是一个突出的方向。本文系统地分析并确定了现有INT8量化ViT模型中的三个关键优化机会:1)注意力矩阵中查询-键向量的数值分布有40.66%的概率出现连续3位相同的值;2)不同网络层之间的激活稀疏性存在显著差异;3)浅层特征已经能够提供可靠的分类置信度。基于这些发现,我们提出了HAQ-ViT,一个考虑硬件的训练后量化加速框架。首先,我们引入了一种基于改进的Booth算法的混合量化方案。通过设计一种适合硬件的位序列跳过策略,我们能够在标准8位量化的基础上省略涉及连续相同位模式的乘法操作。其次,我们提出了一种动态层稀疏化策略。通过分析层间激活分布的差异,我们构建了一个自适应阈值选择函数,从而将稀疏化决策的复杂度从O(n^2)降低到O(kn^2),其中k ∈ (0, 1)是一个预定义的缩放因子。最后,我们引入了一个全局量化自适应提前退出机制,通过策略性地插入多个轻量级分类头来实时监控置信度熵。当熵超过定义的阈值时,计算提前终止。实验结果表明,在ImageNet数据集上评估的HAQ-ViT框架在76%的稀疏率下保持了推理准确性(比基线模型提高了0.068%)。通过集成提前退出头,准确性仅降低了0.004%,而在94%的稀疏率下,单次推理的能耗从64.6 mJ显著降低到10.91 mJ。
引言
Transformer架构以其建模全局依赖关系的卓越能力而闻名,已成为众多自然语言处理(NLP)任务中的主导方法。与之前的模型相比,基于Transformer的架构[1]、[2]、[3]在自然语言理解和生成方面表现出显著的优势,特别是在处理长序列数据时,它们在效率和性能上都有显著提升。利用ViTs[4]的结构设计,Transformer在计算机视觉中也展现了出色的性能。ViTs[6]中的自注意力机制[5]能够捕捉图像不同区域之间的全局依赖关系,有效解决了传统卷积神经网络(CNN)在建模全局特征方面的局限性。
尽管Transformer架构带来了显著的进步,但其较高的计算成本[7]和对大规模计算资源的依赖仍然是一个主要挑战,尤其是在资源受限的边缘设备上部署时,这些限制严重阻碍了其更广泛的应用。例如,标准的ViT-B/224模型处理224×224分辨率的图像大约需要17.6 GFLOPs的计算能力。在ViTs中,自注意力机制通常占总计算成本的60%–80%,其固有的O(n^2)复杂度使得查询和键矩阵的乘法成为训练和优化过程中的一个关键瓶颈。
为了降低ViTs的高计算成本,模型压缩已成为一种必要的策略,量化是最有效的技术之一[8]。量化通过将浮点值转换为低位数表示(如将32位浮点数转换为16位或8位整数)来减少存储和计算需求。广义上,量化方法可以分为量化感知训练(QAT)和训练后量化(PTQ)。对于边缘设备来说,QAT对硬件和计算要求较高,因此不太实用。相比之下,PTQ使用数据集对预训练模型进行校准,允许快速部署且几乎没有额外的计算开销。以ViT-B/224为例,将全精度浮点数据量化为8位整数可以将推理速度提高约3.72倍,同时理论上将存储成本和计算负载降低约75%。
尽管量化有效地降低了计算成本和存储需求,但ViTs的推理速度提升仍然有限。这主要是因为量化后的位序列和计算过程尚未得到充分优化,从而无法有效加速ViTs的推理。因此,如何进一步提高量化ViTs的推理速度成为一个关键挑战。为了解决这个问题,我们分析了量化ViTs中的位序列,发现自注意力机制中的二进制位序列表现出连续一致性。基于这一观察,我们提出了一种基于Booth的混合量化方案,通过跳过连续相同位模式的冗余二进制加法操作来简化二进制乘法。这种方法理论上可以实现高效的推理加速。
此外,我们观察到量化矩阵包含大量冗余信息,特别是在自注意力机制中,许多矩阵元素对最终输出的贡献很小。因此,通常不需要进行耗时的计算。实际上,不同层之间的稀疏性差异很大,并且在不同输入下可能表现出不同的模式。因此,一个关键挑战是如何根据每层的具体稀疏性动态调整计算和存储策略,有效消除冗余同时优化计算效率和存储利用率。为了解决这个问题,我们提出了一种动态的逐层稀疏计算策略。通过分析每层的数据分布,我们的方法进行动态剪枝,仅保留对模型性能至关重要的矩阵元素。这显著降低了计算和存储开销,同时保持了模型的准确性和效率。
在将稀疏矩阵方法应用于某些层时,推理速度的提高仍然有限。特别是在深度网络中,一些层产生的输出具有高置信度,意味着模型的预测已经很稳定。因此,尽管后续层继续计算,它们对最终结果的贡献很小。继续这些计算不仅浪费计算资源,还会增加推理延迟。为了解决这个问题,我们在提出的方法中加入了一个全局提前退出[9]机制。在这种机制下,当模型的置信度超过预定义的阈值时,计算提前终止。这种方法不仅提高了推理效率,还根据输入数据的复杂性动态调整计算工作负载,进一步减少了推理延迟并提高了整体计算效率。所提出的方法如图1所示。
我们工作的主要贡献包括:
1.基于Booth算法的混合量化方案:为了解决传统量化方法在加速ViTs方面的局限性,我们将改进的Booth算法与8位量化相结合。通过分析注意力矩阵中的位模式,我们观察到QK向量中连续3位相同模式的概率高达40.66%。基于此,我们设计了一种适合硬件的位操作优化策略,以利用这种规律性并提高计算效率。
2.动态层稀疏计算策略:我们提出了一种基于层间稀疏性差异的自适应剪枝算法。通过分析不同网络层之间的激活分布,我们构建了一个阈值选择模型来捕捉层间的差异。当平均稀疏度为k(其中0 < k < 1)时,计算复杂度可以从O(n^2)降低到O(kn^2)。
3.全局自适应提前退出机制:我们设计了一个多级置信度评估模块,并在ViTs中插入了轻量级分类头。当中间层输出的置信度熵超过阈值
时,计算过程可以提前终止。这种机制在ImageNet数据集上将平均推理延迟降低了16.7%,同时Top-1准确率仅降低了0.1个百分点。实验结果表明,结合上述方法的HAQ-ViT框架在INT8量化下实现了以下效果:模型存储需求降低了49.29%(从112MB降至56.8MB),Top-1准确率达到84.604%(与基线模型的84.54%相比)。消融实验展示了每个模块对加速的贡献:Booth混合量化优化贡献了71.9%,动态稀疏化贡献了45.7%,提前退出机制贡献了16.7%。
章节片段
视觉变换器
在深度学习领域,CNN在图像分类、对象检测和语义分割等任务中取得了显著的成功,这得益于它们的局部感受野和分层特征提取能力。然而,CNN本质上依赖于局部卷积操作[11],这使得它们在捕捉全局依赖关系(特别是长距离空间关系)时面临挑战。
Transformer架构的出现显著
方法
本节介绍了HAQ-ViT框架的详细实现,该框架通过基于Booth的混合量化方案、动态稀疏策略和全局提前退出机制提高了模型在资源受限环境中的推理效率和适应性。所提出的Booth混合量化方案增强了位序列编码并重构了矩阵乘法过程,有效降低了与全零相关的计算成本
评估
在本节中,我们系统地评估了HAQ-ViT在Transformer架构上的加速效果、分类准确性和整体性能指标。为了评估所提出方法的有效性,我们在ImageNet-1k数据集上进行了实验,并评估了各种ViT变体模型。
结论
在本文中,我们系统地探讨了ViT模型在压缩过程中面临的关键挑战。研究表明,自注意力矩阵中存在大量冗余信息,这不仅阻碍了关键特征的有效提取,还显著增加了矩阵乘法操作的计算资源消耗。此外,简单地采用量化方法可能会导致模型准确性的下降。
CRediT作者贡献声明
赵世琦:写作——审稿与编辑,撰写——初稿,方法论,资金获取,概念化。王正杰:写作——审稿与编辑,撰写——初稿,验证,软件,调查。孙浩祖:写作——审稿与编辑,撰写——初稿,验证,软件。王思博:软件,方法论,概念化。陈志涵:写作——审稿与编辑。傅长增:方法论。杨杰:监督,项目管理。穆罕默德·萨万:
利益冲突声明
作者声明他们没有已知的竞争性财务利益或个人关系可能会影响本文报告的工作。
致谢
本工作得到了中国国家自然科学基金(编号62404037)、河北省自然科学基金(编号F2024501017)和中央高校基本科研业务费(编号Z2024-043)的支持。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号