【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers

这是北京大学和后摩智能联合发表的一篇论文,已经被2022年的cvpr收录。

github地址:https://github.com/hahnyuan/PTQ4ViT

文章创新点:

作者的idea来源于对ViT中激活值的分布的观察,以及对不同评估量化误差的指标对比的观察。

  1. softmax的激活值具有很不均匀的分布,大部分的值都接近于0 。其它大的值虽然数量很小,但是它们意味着两个patch之间具有很高的attention,在ViT中这些值是不能被忽略。而为了保留这些值,如果取大的scaling factor,其它大多数的小值会被压缩到0,会产生很大的量化误差。也就是说,小scaling factor和大的scaling factor都不能解决这个问题。
  2. GELU的激活值是具有很不对称的分布,正值的range很大,负值的range很小,所以很难被均匀地量化。但是,如果采用非均匀量化,大部分的硬件设备都无法有效支持。

所以,作者提出了一种同时采用两个scaling factor的方法:

【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers_第1张图片

  

但是如何来决定scaling factor的大小呢?

 

根据观察可知MSE、余弦距离与Pearson correlation来描述ViT的任务损失(cross-entropy)都是不准确的。更精确一点的是最后一层的output在量化前后的差值。但是,用这个差值去决定中间层的scaling factor大小是不实际的,因为如果这样做,需要不停地执行模型去计算output,这样太耗时了。

所以,作者提出了海森矩阵来衡量的方法,这里作者用的不是严格的海森矩阵,所以他们给这个指标起的名字叫Hessian guided metric。如上图所示,这个指标的distance与task loss是最接近的。因为它(H)就是从task loss来的:

 

最小化量化前后的task loss的差值也就是:

 

 

综合以上的两个创新点,作者提出了PTQ4ViT的框架:

【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers_第2张图片

 【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers_第3张图片

 

共有两个阶段:

阶段一用calibration的数据集来收集每一层的output与梯度;阶段二为每一层搜索可以使式6最小的scaling factor。

实验结果:

【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers_第4张图片

 

消融实验:

【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers_第5张图片

 

值得注意的是,由于twin量化多了一个scaling factor,量化后的data format有所改变,如果需要硬件支持,只需要对其算子的硬件代码作一定的修改,但这比让其支持非均匀量化会简单很多。以矩阵乘为例:

【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers_第6张图片

 

你可能感兴趣的:(深度学习,算法,论文笔记,深度学习,人工智能,算法,量化)