megvii-research / FQ-ViT

[IJCAI 2022] FQ-ViT: Post-Training Quantization for Fully Quantized Vision Transformer
Apache License 2.0
301 stars 48 forks source link

LN的计算不是整型的 #22

Closed zysxmu closed 2 years ago

zysxmu commented 2 years ago

你好,LN的均值和方差是整数值嘛?公式如下: image

首先$\hat X_Q$是整数不代表它的均值和方差是整数,也就是说,µ和σ的结果不一定是整数​。

如果µ和σ不是整数,那么LN层的计算也不是整数计算。

其次,14公式似乎有问题,其中s提取出来的时候,需要变成s^2,也就是s^2σ(XQ)

PeiqinSun commented 2 years ago
  1. 首先, 定点数运算都是有round到整数的操作, 我们用int16或更高int表示的话, 实际上精度已经不低了.
  2. 14式计算是标准差, 不是方差符号. 所以, 公式没有问题.
  3. 如有任何问题, 可以查看代码具体实现.
linyang-zhh commented 2 years ago

@zysxmu 另外可以看一下文章的补充材料A.1

zysxmu commented 2 years ago
  1. 首先, 定点数运算都是有round到整数的操作, 我们用int16或更高int表示的话, 实际上精度已经不低了.
  2. 14式计算是标准差, 不是方差符号. 所以, 公式没有问题.
  3. 如有任何问题, 可以查看代码具体实现.

1, 这个round到整数的操作、或者用int16表示,精度不低,我理解是也就是这里的均值和标准差需要比$\hat X_Q$更高的比特位?例如,$\hat X_Q$是8bit,那么这里的均值和标准差需要16bit或者更高? 2,OK,是我的问题,谢谢指导

zysxmu commented 2 years ago

@zysxmu 另外可以看一下文章的补充材料A.1

按照这个补充材料,均值和方差的计算实际上都是需要近似的,而且后面的LN操作也需要用整型数近似一下?

linyang-zhh commented 2 years ago

@zysxmu 另外可以看一下文章的补充材料A.1

按照这个补充材料,均值和方差的计算实际上都是需要近似的,而且后面的LN操作也需要用整型数近似一下?

是的,round的地方会引入近似

zysxmu commented 2 years ago

@zysxmu 另外可以看一下文章的补充材料A.1

按照这个补充材料,均值和方差的计算实际上都是需要近似的,而且后面的LN操作也需要用整型数近似一下?

是的,round的地方会引入近似

所以,如果希望对于$\hat X_Q$要无损做LN,那么首先它的均值和方差的计算就不应该近似而是保存全精度,其次,在LN操作(减去均值除方差)的时候,也不能近似,而是保存全精度。对吧?

现有的这几种都是牺牲了精度换低比特位运算的?

PeiqinSun commented 2 years ago
  1. 文章的目标是将LN放在整数域上执行, 从而达到硬件友好.
  2. 量化作为一种将full-precision转成fix-point进行计算的方式, 本来就存在量化误差. 但量化误差在8bit的掉点是可接受的.
zysxmu commented 2 years ago
  1. 文章的目标是将LN放在整数域上执行, 从而达到硬件友好.
  2. 量化作为一种将full-precision转成fix-point进行计算的方式, 本来就存在量化误差. 但量化误差在8bit的掉点是可接受的.

抱歉,我还是没有理解。这里均值和标准差是不是需要比$\hat X_Q$更高的比特位?或者至少和$\hat X_Q$一样的比特位。无论如何,这个均值和标准差都需要近似,也会有一定误差?

linyang-zhh commented 2 years ago

@zysxmu 求均值方差的时候会有平方、求和等操作,所以肯定会更高比特位。同时,因为round等量化操作,是近似的,量化本身就是一个近似的过程。