The Beautiful Future
Quantization and Training of Neural Networks for EfficientInteger-Arithmetic-Only Inference 본문
Quantization and Training of Neural Networks for EfficientInteger-Arithmetic-Only Inference
Small Octopus 2020. 8. 25. 20:57Quantization scheme
affine mapping of integers q to real numbers r
r = S(q-Z),

r: real value, q: quantized value, S: scale, Z: zero point
S는 양의 실수 이다, Z는 q와 같은 타입의 콴타이즈되어있는 수이고 q = Z 이면 real value 0이다.
weight는 8bit integer로 퀀타이즈되고 bias는 32bit로 콴타이즈된다.
Integerarithmeticonly matrix multiplication




(4)에서 M 만 int가 아니다. M을 int로 바꾸고 fixed-point mul을 한다.

실험적으로 S1, S2, S3는 항상 (0,1)사이에 있다는 것을 찾았다. M0 는 [0.5, 1) 사이 값이다.
M0 는 이제 fixed-point multiplier로 표현된다. 2^-n은 비트 쉬프트로 표현된다. (정확도?? appendix B참고)
M0를 int32로 표현하면 2^31M0로가 되고 M0는 0.5보다 크기때문에 int32로 표현된 M0값은
2^30 보다는 항상 크고 30 bit의 정확도를 가지게 된다. M0의 곱은 fixed-point multiplication으로 구현 될수 있다.
Efficient handling of zeropoints
(4)에서 Z 빼기는 2N^3 번 이루어진다. 빼기 연산으로 인해 16bit로 확장되는 것을 막자.
(4)에서 곱을 분배하면 아래 (7)과 같이 된다.

(8)은 계산에 오직 N번의 합만 필요하다. 총 2N^2 합연산이 필요하다. 그럼 주요한 계산은 (9)만 남게된다.

결론적으로는 수식을 정리해서 약간 연산량을 줄인것이다.
Implementation of a typical fused layer
'DNN > Quantization' 카테고리의 다른 글
gemmlowp (0) | 2020.08.24 |
---|---|
TF Quantize function (0) | 2020.08.23 |
Pytorch Quantization (0) | 2020.08.16 |