본문 바로가기
AI 논문 리뷰/Compression

[논문 리뷰] A Survey Of Quantization Methods for Efficient neural Network Inference (Advanced concepts)

by donghunai 2023. 1. 5.

지난 포스팅에 이어 Quantization survey 논문에서 Advanced concept 내용을 다루고자 한다.

 

 

IV. Advanced Concepts: Quantization Below 8 Bits

 

 A. Simulated and Integer-only Quantization 

그림 1. 왼쪽 그림은 full-precision inference, 가운데는 int를 floating point로 다시 변환하여 multiplication등 연산 진행 후 다시 quantization (simulated quantization), 오른쪽은 integer only quantization.

  quantization이 돼서 integer로 저장되어 있는 값을 다시 floating point로 변환해 floating point 연산을 진행하는 것이 simulated quantization (aka fake quantization)이고 이러한 변환 과정 없이 integer 연산을 그대로 적용하는 것이 integer-only quantization이다. 

 

  중간에 floating point로 바꾸어 연산하면 정확도가 올라가긴 하지만 dequantize 및 requantize의 overhead 때문에 quantization의 장점을 백프로 누릴 수 없다. 

그림 2. bit수와 int/float 형태에 따른 연산량, energy cost, area cost

  위의 그림에서 볼 수 있듯이 INT8 addition 연산은 FP32 addition 연산보다 30배 더 energy efficient하고 116배 더 area efficient하다. 

 

  따라서 integer only quantization 방식이 simulated quantization보다 속도가 더 빠른것이 맞으나 실행 속도의 barrier가 compute-bound가 아니라 bandwidth-bound인 경우에 메모리에서 값을 가져오는 것 자체는 simulated quantization 방식에서도 INT 형으로 값을 가져오므로 parameter loading 관점에서 속도에서 이득을 볼 수 있기 때문에 simulated quantization 방법도 사용될 수 있다.  

 

  또한 다른 방식으로 Dyadic quantization 방식이 있는데 integer-only quantization 방식이나 값을 2의 지수승으로 저장하는 방식이다. 이는 integer division을 단순 bit shifting으로 대체 가능하게 해줘서 연산 관점에서 이득을 볼 수 있게 해준다. (HAWQ-V3: Dyadic Neural Network Quantization 논문 참고)

 

 

 B. Mixed-Precision Quantization 

그림 3. Mixed Precision quantization

   위의 그림처럼 Layer(or channel, parameter) 마다 다른 bit수로 quantization을 적용하는 방법이다. 하지만 이는 layer 수에 따라 exponential하게 search space가 커진다는 것 때문에 huge search space를 다루는 다양한 방법들이 존재한다. 

  Reinforment learning (RL)을 이용하는 방법, Neural Architecture Search (NAS)를 이용하는 방법, Differentiable NAS (DNAS)를 이용하는 방법등 다양하게 있다. 하지만 모두 resource가 크고 hyperparameter나 initialization에 크게 영향을 받는 다는 한계점들이 존재한다. 

 

   이외에도 periodic function regularization을 이용하는 방법 (On periodic functions as regularizers for quantization of neural networks 논문 참고), HAWQ, HAWQv2, HAWQv3 등등의 다양한 연구들이 이 문제를 해결하고자 하고 노력하고 있다. 

 

 

 C. Hardware Aware Quantization

 

  Quantization은 hardware와 밀접한 연관이 있는 방법이다. hardware가 어떻게 구성되어있냐에 따라 quantization으로 이득을 볼 수 있는 정도가 달라지고 on-chip memory, bandwidth 그리고 cache hierarcy 등등의 하드웨어 요소들이 모두 quantization으로 인한 속도 향상에 영향을 끼친다. 따라서 이러한 하드웨어 구조에 따라 latency를 측정해 최적의 quantization bit수를 정하는 방법이 hardward aware quantization 방식이다. 

 

 

 D. Distillation-Assisted Quantization 

 

  Quantization 이전의 full precision 네트워크를 teacher 네트워크로 사용해 quantization 된 네트워크에 정보를 전달하여 학습시키는 것이 distillation-assited quantization 방식이다. 많은 논문에서 이러한 방식을 적용해서 quantization 된 네트워크의 정확도를 올리는 것 같다. 

 

 

 E. Extreme Quantization 

 

  기존에는 quantization을 적용해도 4 bit, 8 bit 등을 주로 적용했는데 극단적으로 더 줄여 1 bit (binary) or 2 bit (ternary) 만을 사용해 quantization을 적용하기도 한다. 1 bit로 줄이는 경우에는 +1, -1로 quantization을 하는데 주로 sign function을 적용해 부호를 그대로 가져오는 경우가 많다. 이 때, 부호를 가져오는 과정이 당연히 미분 불가능하므로 이전의 basic concept 에서 얘기했던 STE 방식을 주로 사용한다.

 

  여기에 activation 까지 binary로 변환하면 네트워크의 연산을 XNOR 연산으로 바꿔 bit-counting 만으로도 연산이 가능해져 속도를 상당히 높일 수 있다. +1, -1 대신에 scaling factor를 적용해 +알파, -알파를 적용하는 경우도 있다. 이렇게 binary로 변환하고 기존 값과 최대한 유사하게 만드는 optimization 문제로도 바꿔서 해결할 수 있다. 

그림 4. binary quantization을 optimization 문제로 변환.

  또한 2bit를 사용해 +1, 0, -1 값을 사용하는 경우도 있고 이를 이용해 아래 그림처럼 만들어 속도를 올리는 경우도 있다. (TBN: Convolutional Neural Network with Ternary Inputs and Binary Weights 논문 참고)  

그림 5. TBN: Convolutional Neural Network with Ternary Inputs and Binary Weights 논문 그림 인용

  하지만 이러한 1 bit or 2 bit quantization은 상당한 정확도 손실을 가져온다. 이를 해결하기 위해 주로 사용되는 방법이 

  1. Quantization Error Minimization : multiple binary marices의 합으로 표현 (HORQ, ABC-Net ..)

  2. Improved Loss function : Knowledge distillation을 적용해 loss term을 추가, 좋은 성능을 보임

  3. Improved Training Method : STE 사용의 한계 --> differentiable sign function을 만들어 이용(BNN+), 또한 Bi-Real Net (activation 끼리 연결해 32 bit actvation이 back propagated 되도록 만듦), DoReFa-Net (gradient도 quantization 적용) 등의 연구들이 있다.

 

  모델 사이즈들이 굉장히 큰 최근 NLP 모델에서 강력한 tool로 여겨지고 있다고 한다 (BERT, GPT 등등). 다른 방법에 비해 큰 정확도 손실을 유발하지만 정확도 손실이 덜 중요한 분야에서는 유용하게 사용될 수 있다. 

 

 

 F. Vector Quantization 

    여러 weight들을 다른 그룹들로 clustering을 하고 각 그룹의 centroid 값을 사용하는 방법이 있다. 

그림 6. Vector Quantization 방식

  위의 식에서 w가 weight, c가 각 weight 그룹의 centorid 값일 때  각각의 group 의 centroid 값이 위의 식대로 만들어 지도록 하여 inference 속도를 높이는 방법이다. 

 

 

 이후 hardware processor와 연관시켜 설명하는 내용이 있으나 quantization 방식보다는 각 hardware processor를 설명하는 느낌이 강해 생략하였다. 

 

 

VI. Future Directions For Research In Quantization.

 

 Quantization을 더 발전시킬 수 있는 방법에 대해 제시한다. 간단하게 요약하면 

  1. 더 많고 디테일한 quantization 알고리즘

  2. hardware와 co-designing

  3. pruning, knowledge distilation 등 다른 방법들과 함께 적용 

  4. training 에 quantization을 적용해서 더 빠르게 학습 

 등이 있다.