ML 머신러닝/Quantization 양자화

[ML] 모델 경량화 방법 3가지: Pruning, Weight Quantization, Low-Rank Matrix/Tensor Decomposition

수현리 2024. 7. 28. 18:30

from "Deep neural networks compression: A comparative survey and choice recommendations"

 

Intro


DNN은 하드웨어와 대규모 데이터셋의 발전으로 image processing, financial forecasting 등의 문제를 이전보다 잘 해결하고 있다.

특히 CNN이 중요한 역할을 했는데 모델들은 보통 overparameterized 하고 상당한 메모리를 차지한다.

예를 들어 VGG16는 500MB, T5는 11 B 개의 총 20GB 메모리를 차지하는 파라미터를 가진다.
따라서 space-conscious models들의 필요성이 강조되고 있다.

 

 

lecture slides from MIT: TinyML and Efficient Deep Learning Computing

 

 


지난 10년 동안 다양한 모델 압축 방법들이 제안되었지만, 대부분은 특정 응용이나 모델에 특화되어 있어, 주어진 문제와 신경망 모델에 가장 적합한 압축 방법을 선택하기 어렵다.

이 논문에서는 사전 학습된 CNN 모델의 압축 방법을 살펴본다. 
pre-trained CNN은 항상 쓰이지만 모델들은 are frequently heavily redudant하다.
관건은 computational resouces 를 줄이면서 정확도를 유지하는 것이다. 

 


여기서 structure-preserving compression methods 구조 유지 압축 방법에 집중한다.

그래서 knowledge distillation 과 skeletonization 같이 network 의 topology 를 바꾸는 접근법들은 소개하지 않는다.

 

1. Connection Pruning 프루닝, 가지치기
2. Weight Quantization 가중치 양자화
3. Low-Rank Matrix/Tensor Decomposition 저순위 행렬/텐서 분해

 

 



Connection Pruning


pruning은 가장 일반적이면서 가장 오래된 테크닉이다.


1) 가장 간단한 pruning 방법은 절대값이 특정 임계값보다 낮은 가중치를 가진 연결을 제거하는 것이다.
- 이 임계값은 레이어별로 또는 전체 네트워크에 대해 전역적으로 설정할 수 있다.
- 이 방법은 보통 magnitude-based pruning 절대값 기반 프루닝이라고 하며 남은 가중치를 fine-tuning 하는 과정이 필요하다. 

 

2) regularization terms를 사용해 학습 알고리즘이 가중치를 죽일 수 있다. 

 

3) optimization strategies 최적화 기법 중에 genetic algorithm 유전 알고리즘, particle swarm optimization 입자 군집 최적화를 사용할 수도 있다. 
- 이 방법의 장점은 처음에 제거된 가중치를 나중에 다시 도입할 수 있다는 점이지만 복잡하기 때문에 제한된 크기의 CNN에만 적용할 수 있다.

 

 

 

Weight Quantization


가중치 양자화는 weight, activation, gradient values를 나타내기 위한 사용되는 비트 수를 고정해 공간을 절약하는 것이다.
- 예를 들어 FP64 대신 FP32를 사용하면 공간이 절반으로 줄어든다.
- 더 짧은 정수 INT8, INT4, INT2, 1-bit 까지 더 작은 precision 정밀도를 사용하는 것이 고려된다. 

 

1-bit의 경우 binarization 이진화라고 하며 가중치와 활성화 값이 1 bit로 표환되고 부동 소수점 연산이 이진 게이트로 변환된다.

 

32 bit보다 적은 비트를 사용하는 것은 심각한 decay를 초래할 수 있다.
- 이런 경우 추가적인 훈련 단계를 거친다. 

 

하이브리드 접근법은 value 중에 좁은 범위에 집중된 값들에만 양자화를 적용하고 나머지 값들은 더 높은 정밀도로 표현해 오류를 줄인다. 
또 손실 함수에 포함된 penalty term 을 최소화하는 방법도 있다.
기본 아키텍처와 독립적이고 복잡도가 낮기 때문에 가중치 공유 양자화는 널리 적용된다.  

 

 

 

Low-Rank Matrix/Tensor Decomposition

 

weight matrix를 더 낮은 차수의 행렬들로 분해해 압축할 수 있다
- 예를 들어 $W \in \mathbb{R}^{n \times m}$  은 $W \simeq AH$ 로 분해할 수 있다. 이는 $A \in \mathbb{R}^{n\times r}$,  $H \in \mathbb{R}^{r\times m}$ 로 공간 복잡도 $O(nm)$에서 $O(r(n+m))$으로 바뀐다. 이 과정에서 어느 정도의 근사 오류는 희생한다. 
- 특이값 분해 Singular Value Decomposition SVD은 이런 분해를 달성하기 위해 널리 사용된다.