这是北京大学和后摩智能联合发表的一篇论文,已经被2022年的cvpr收录。
github地址:https://github.com/hahnyuan/PTQ4ViT
文章创新点:
作者的idea来源于对ViT中激活值的分布的观察,以及对不同评估量化误差的指标对比的观察。
- softmax的激活值具有很不均匀的分布,大部分的值都接近于0 。其它大的值虽然数量很小,但是它们意味着两个patch之间具有很高的attention,在ViT中这些值是不能被忽略。而为了保留这些值,如果取大的scaling factor,其它大多数的小值会被压缩到0,会产生很大的量化误差。也就是说,小scaling factor和大的scaling factor都不能解决这个问题。
- GELU的激活值是具有很不对称的分布,正值的range很大,负值的range很小,所以很难被均匀地量化。但是,如果采用非均匀量化,大部分的硬件设备都无法有效支持。
所以,作者提出了一种同时采用两个scaling factor的方法: