논문 리뷰/Quantization
[Paper Review] Learned Step Size Quantization
hyeon827
2024. 11. 30. 01:55
논문 원본 : https://arxiv.org/abs/1902.08153
Learned Step Size Quantization
Deep networks run with low precision operations at inference time offer power and space advantages over high precision alternatives, but need to overcome the challenge of maintaining high accuracy as precision decreases. Here, we present a method for train
arxiv.org
Abstract
- 딥러닝 네트워크는 inference 시 계산 비용을 줄이고 효율성을 높이기 위해 저정밀도(ex. 2~4 bits) 연산을 사용
- 하지만 저정밀도로 인해 모델 정확도가 낮아지는 문제를 해결해야 함
- 본 논문은 Learned Step Size Quantization(LSQ) 제안
- LSQ는 step size를 학습 가능한 파라미터로 만들고, 훈련 과정에서 다른 weight와 함께 최적화
- 2~4 bits로 quantization된 모델이 ImageNet 데이터셋에서 최고 정확도 달성
- 특히 3 bits 모델이 고정밀도 모델과 동일한 수준의 성능을 발휘할 수 있음을 보여줌
- 2~4 bits로 quantization된 모델이 ImageNet 데이터셋에서 최고 정확도 달성
- 특히 3 bits 모델이 고정밀도 모델과 동일한 수준의 성능을 발휘할 수 있음을 보여줌
1. Introduction
- 딥러닝 네트워크는 이미지 인식, 음성 인식, 자율 주행 같은 기술에 사용
- 이런 네트워크가 성공하려면, 성능, 에너지 효율, 크기 (작고 효율적인 하드웨어)가 중요
- 딥러닝 계산량을 줄이고, 메모리 사용을 줄이기 위해 네트워크를 저정밀도 (8 bit 이하)로 만들어야 함
- 하지만 저정밀도로 인해 정확도가 떨어질 수 있으므로 이를 극복해야 함
- 기존의 방식은 step size를 고정하거나, quantization 오차만 줄이는데 초점을 맞춤
- 하지만, 이러한 방식은 실제 task 성능을 최대화하지 못할 수 있음
- LSQ는 각 layer의 step size를 학습 가능한 파라미터로 만들어 최적의 step size를 찾는 방법
- 기존 방식과 달리, step size를 업데이트할 때 quantization 상태 전환의 영향을 고려
- 또한, step size와 weight의 업데이트 비율을 맞춰 훈련 안정성과 성능 개선
- LSQ를 사용하면 3 bit 네트워크도 고정밀 네트워크와 동일한 수준의 정확도를 달성할 수 있음
2. Methods
- 딥러닝 네트워크는 weight와 활성화 값의 계산량을 줄이기 위해 저정밀도 정수 데이터를 사용
- 이 과정에서 원래 데이터를 quantization 해야 하며, 이를 정수로 표현하는 방법이 필요
- scaling v/s: 데이터를 step size로 나누어 정규화
- clip : 스케일링된 데이터가 정수 범위를 벗어나지 않도록 제한
- round: 클리핑된 값을 가장 가까운 정수로 변환
- 양자화된 데이터 vˉ를 step size s로 곱해, 원래 데이터 스케일로 복원
데이터 범위 설정
- 활성화 값 (unsigned)
- QN = 0, QP= 2b−1 (비트 수 b에 따라 범위 결정)
- ex) 8bit 데이터는 0~255 범위
- weight (signed)
- QN = −2b-1, QP = 2b-1 -1
- ex) 8bit 데이터는 -128~127 범위
Process
- Quantizer
- 입력 데이터 w와 x를 step size sw와 sx로 나눠 정수 값으로 변환 (wˉ,xˉ)
- 이 과정에서 clip 및 round 적용
- Matrix Multiplication Layer
- quantization된 정수 값 wˉ와 xˉ를 입력으로 받아, 저정밀도 정수 연산을 수행
- 이는 합성곱 또는 완전 연결 연산을 효율적으로 처리
- Multiplier
- 저정밀도 연산의 결과를 step size sw와 sx로 조정하여 원래 스케일로 복원합니다 (y).
- Output (y)
- 복원된 연산 결과. 이는 후속 레이어로 전달
2.1 Step Size Gradient
- LSQ는 quantization 과정에서 step size s를 학습 가능한 파라미터로 만들어, 데이터 손실을 최소화하고 정확도 유지
- 이를 위해 s에 대한 gradient 정의
- LSQ는 step size s가 데이터 v와 quantization 상태 전환 지점 간의 관계를 반영하도록 기울기 설계
- 데이터가 전환 지점에 가까울수록 gradient는 커짐
- 전환 지점 근처에서는 작은 s의 변화가 큰 영향을 주기 때문
- 데이터가 전환 지점 밖에 있으면 QN 또는 QP로 고정
- step size 초기화 공식
- step size s는 데이터의 분포와 quantization 가능한 최대값(QP)를 기반으로 설정
- <|v|> : 초기 weight 값 또는 첫 번째 활성화 배치에서 데이터 v의 절대값 평균
- 초기 값이 데이터 범위와 step size 간의 균형을 맞추도록 설계
2.2 Step Size Gradient Scale
- 훈련 과정에서 네트워크의 각 weight layer에 대해, 평균 업데이트 크기와 평균 파라미터 크기의 비율이 대체로 동일할 때 좋은 수렴 성능을 얻을 수 있음이 증명됨
- : step size s에 대한 손실 함수의 기울기
- ∇wL: weight w에 대한 손실 함수의 기울기
- ∥⋅∥: L2 Norm
- R 값을 평균적으로 1에 가깝게 설정하여, weight와 step size가 학습 과정에서 비슷한 비율로 업데이트되도록 유지
- 정밀도가 높아질수록 데이터가 더 작은 간격으로 표현되므로 step size s가 작아져야 함
- quantization된 데이터가 많아질수록 손실 함수 많은 영향을 주기 때문에 step size 기울기가 커질 가능성 높음
- 스케일링 g는 이 문제를 해결하여, layer의 데이터 수와 정밀도 차이에 관계없이 안정적으로 학습할 수 있게 함
- weight에 대한 스케일링 g
- NW : 해당 layer의 weight 개수
- QP : quantization 가능한 최대값
- 활성화 값에 대한 스케일링 g
- NF : 해당 layer의 활성화 feature 개수
- QP : quantization 가능한 최대값
3. Results
3.1 Weight Decay
- 모델의 정밀도를 줄이면 overfitting 경향도 줄어듦
- 따라서 좋은 성능을 내기 위한 필요한 weight decay도 줄어듦
- ResNet-18에서 weight decay를 다양한 값으로 실험한 결과, 정밀도가 낮아질수록 적은 weight decay로 더 높은 정확도를 얻을 수 있었음
- 3bit 네트워크는 기존보다 weight decay를 절반으로 줄였을 때 성능이 향상됨
- 2bit 네트웤는 weight decay를 1/4로 줄였을 때 더 좋은 성능을 보임
3.2 Comparison with Other Approaches
- LSQ를 사용해 여러 네트워크를 학습하고, 기존의 quantization된 네트워크와 정밀도 높은 모델과 비교
- LSQ는 2bit, 3bit, 4bit 네트워크에서 이전보다 높은 Top-1 및 Top-5 정확도를 달성
- 8bit 네트워크에서도 가장 높은 정확도를 기록
- 4bit에서 8bit로 정밀도를 올려도 대부분의 경우 성능 이점이 없음
3.3 Accuracy vs Model size
- 메모리 제한이 있는 경우, 사용할 수 있는 메모리 안에서 가장 성능이 좋은 모델을 선택해야 함
- 2bit ResNet-34와 ResNet-50은 작은 네트워크를 더 높은 정밀도를 사용하는 것보다 모델 크기 대비 성능 면에서 우위에 있음
3.4 Step Size Gradient Scale Impact
- step size gradient 스케일의 효과를 확인하기 위해, ResNet-18 모델에서 첫 번째 학습 epoch의 중간 500번 반복에서 R을 측정
- 스케일링 없이 학습한 네트워크는 초기 learning rate를 낮추지 않으면 수렴하지 않았음
- 초기 learning rate를 10배씩 낮추며 실험했을 때, learning rate가 0.0001일 때 가장 높은 Top-1 정확도 기록했으나, 이는 baseline보다 3.4 낮은 정확도
- 위에서 제안된 스케일링 방식을 적용했을 때, 가장 높은 Top-1 정확도를 달성
3.5 Cosine Learning Rate Decay Impact
- learning rate를 cosine 곡선 형태로 점진적으로 줄이는 방법이, 기존의 step 기반 learning rate decay보다 성능이 약간 더 우수함
- step 기반 learning rate도 좋은 성능을 냈지만, cosine 방식을 선호하는 이유는 하이퍼파라미터를 덜 조정해도 된다는 점
3.6 Quantization Error
- LSQ는 qunatization error를 직접적으로 줄이려 하지 않았지만, 실제로는 이러한 단순한 error 최소화보다 성능에 더 최적화된 해결책을 학습함
- quantization error : v와 quantizatione된 v^간 거리(오차)를 의미
3.7 Improvement With Knowledge-Distillation
- Knowledge Distillation을 통해, 낮은 정밀도의 네트워크가 높은 정밀도 모델의 정확도를 재현할 수 있는지 실험
- 동일한 구조를 가진 full precision teacher 모델로부터 low precision student 모델에 학습 정보 distillation
- Hinton et al. (2015)에서 제안한 distillation loss을 사용
- loss function = standard loss + distillation loss
- temperature 1로 설정
- standard loss와 distillation loss에 동일한 weight 부여
- top-1 정확도가 3bit ResNet-50에서 최대 1.1 향상
- 3bit 네트워크는 full precision 모델의 정확도에 도달
4. Conclusions
- LSQ는 기존의 모든 quantizatio보다 뛰어난 성능을 보였으며, 특히 ImageNet 데이터셋에 여러 네트워크 아키텍처에 걸쳐 좋은 결과를 냄
- step size loss gradient를 layer 크기와 정밀도 기준으로 재조정한 것이 성능 향상의 핵심 요소로 작용
- LSQ는 quantization error를 최소화하려는 명시적 목표를 가지고 있지 않음
- 그러나 quantization error 최소화보다 정확도와 성능 최적화에 초점을 맞추는 접근 방식으로 더 나은 결과 달성
- 2bit 네트워크는 full precision 네트워크에 비해 몇 퍼센트 낮은 정확도를 보였지만, 모델 크기 제한이 있는 상황에서는 여전히 최선의 선택
- 낮은 정밀도로도 높은 성능을 유지하려는 연구는 딥러닝 모델을 실제 환경에 효율적으로 배포하는 데 중요한 의미
- 이 연구는 생물학적 신경망의 효율성과 유사점을 강조하며, 낮은 bit 폭 데이터 표현의 가능성을 시사
- 네트워크 정밀도를 줄이면서도 정확도를 유지할 수 있다면, 모델 크기를 줄이고, 계산 속도를 높이며, 더 적은 자원으로 더 높은 처리량을 제공할 수 있음
- 이는 특히 메모리 및 계산 자원이 제한적인 환경(예: 모바일 기기, 임베디드 시스템)에서 큰 장점이 될 수 있음