(六) 量化研究

1、基本概念

量化就是将浮点型实数量化为整型数(FP32->INT8)

反量化就是将整型数转化为浮点型实数(INT8->FP32)

2、量化操作

比如有一个FP32的浮点型数字x=5.234,将这个数变为整型。这个数字乘以一个量化系统s,比如s=100,那么量化后的值x_{q}=x*s=5.234*100=523.4,然后对这个数字进行四舍五入(round操作)

x_{q}=round(x*s)=round(5.234*100)=523

整型INT8的范围是[-128,127],无符号INT8的范围也才[0,255]。所以需要进行截断,假设INT8范围是[-2^{b-1},2^{b-1}-1], b=8,那么上述可以变为:

x_{q}=clip(round(x*s),-2^{b-1},2^{b-1}-1)=clip(round(5.234*100),-128,127)=127

这样计算方式不对

3、基于线性量化的对称量化和非对称量化

可以看上图,左边是非对称量化,右边是对称量化。对称量化的实数0也对应着整数的0,而非对称量化的实数0不一定对应着整数0,而是z。对称量化实数的范围是对称的[-a,a],而非对称量化的则不对称[-\beta ,\alpha ]。对称量化整数的范围是对称的[-127,127],而非对称量化的则不对称[-128,127]。

需要说明一点,不论是非对称还是对称量化,是基于线性量化的一种。线性量化将FP32映射到INT8数据类型,每个间隔是相等的,而不相等的就称为非线性量化。

4、对称量化

量化系数s需要根据实际数据分布来计算。

s=\frac{2^{b-1}-1}{a}

x_{q}=quantize(x,b,s)=clip(round(s*x),-2^{b-1}+1,2^{b-1}-1)

a代表当前输入数据分布中的实数最大值,因为是对称,因此实际范围是[-a,a]。对于对称量化,假设当前根据权重分布,选取的a为4,那么s=127/a=127/4=31.75。

在反量化的时候需要反向操作一番,将量化后的结果乘以1/s重新变为浮点型。

\hat{x}=dequantize(x_{q},s)=\frac{x_{q}}{s}

一般量化过程中,有pre-tensor和pre-channel两种方式,pre-tensor对于同一块输入(比如某个卷积前的输入tensor)采用一个scale,该层所有的输入数据共享一个scale值;pre-channel一般是作用于权重,比如一个卷积的权重维度[64,3,3,3](输入通道为3,输出通道为64,卷积核3x3),pre-channel会产生64个scale值,分别作用于该卷积权重参数的64个通道。

5、卷积操作量化

矩阵相乘可表示Y=XW,X为输入,W为权重,Y为输出。偏置bias一般可以去掉,对精度影响也不大,所以就先不考虑了。

 注意看上图输入X的维度为[m,p],而W的维度为[p,n],因此i的范围为[0,m),k的范围为[0,p)。这里的输入和权重都是FP32精度,也就是实数。把矩阵公式细粒度拆成一个一个计算,也就是行和列每个元素相乘然后求和。

y_{ij}=\sum_{k=1}^{p}x_{ik}*w_{kj}=\sum_{k=1}^{p}dequantize(x_{q,ik},s_{q,ik})*dequantize(w_{q,kj},s_{w,kj})=\sum_{k=1}^{p}\frac{x_{q,ik}}{s_{x,ik}}\frac{w_{q,kj}}{s_{w,kj}} =\frac{1}{s_{x,i}*s_{w,j}}\sum_{k=1}^{p}x_{q,ik}*w_{q,kj}

首先是最左边,x_{ik}w_{kj}分别代表浮点型的输入和权重,i代表第i行,k代表第k行,因此x_{ik}代表第i行,第k列的元素,w_{ki}同理。两者相乘求和可以得到y_{ij},可以看到这里求和的范围是p,k从1到p变化。s_{x,i}s_{w,j}分别代表输入的第i行的scale和权重的第j列的scale值,这样输入的每一行必须共享scale,而权重的每一列也必须共享scale。下图左边的kernel矩阵,每一行代表一个输出通道的kernel集合(这里因为输入图像是三通道的,因此kernel有三个,不同颜色代表一个kernel)

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《计算机体系结构量化研究方法 第版 pdf 英文》是一本关于计算机体系结构研究方法的书籍,是第版的PDF版本,语言为英文。 该书主要介绍了计算机体系结构的量化研究方法,这是一门涉及计算机硬件和软件的学科。计算机体系结构是指计算机硬件和软件之间的接口,它以了解计算机在硬件和软件层面上的相互作用为目的。 量化研究方法是一种科学方法,通过数据收集、统计分析和推断来研究问题。该书介绍了一些常用的量化研究方法,如实验设计、数据采集、数据分析和建模等。它还介绍了一些计算机体系结构领域的经典实验和研究案例,使读者能够更好地理解和应用这些方法。 通过学习该书,读者可以了解计算机体系结构的基本概念和相关研究方法,了解如何设计和实现计算机体系结构实验,以及如何通过数据分析和建模来评估和改进计算机体系结构。 总之,《计算机体系结构量化研究方法 第版 pdf 英文》是一本介绍计算机体系结构研究方法的书籍,适合对计算机体系结构感兴趣的读者阅读。它可以帮助读者了解计算机体系结构的基本概念和研究方法,并通过实例和案例学习如何应用这些方法。 ### 回答2: 计算机体系结构量化研究方法是计算机科学领域中的重要研究方向之一。该方法旨在通过量化分析计算机体系结构中的各个方面,以便更好地理解和优化计算机体系结构的性能和效能。 计算机体系结构量化研究方法的第版是一本英文PDF书籍,它对该方法进行了全面深入的介绍和讨论。该书涵盖了计算机体系结构量化研究方法的基本原理、常用指标和技术,以及如何应用这些方法进行关键性能参数的测量和分析等内容。 该书的目的是帮助读者了解计算机体系结构量化研究方法的基础理论和实践方法,并在实际计算机系统中应用这些方法来提高性能和效能。同时,该书还介绍了当前计算机体系结构量化研究领域的最新研究成果和发展趋势,以便读者了解该领域的最新动态。 总结来说,计算机体系结构量化研究方法第版是一本涵盖了该方法的基本原理和实践方法的英文PDF书籍。它对于计算机科学领域的研究者和工程师来说,是一本重要的参考资料,可以帮助他们进行计算机体系结构的性能和效能优化工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值