끄적/모델 최적화 및 경량화

Quantization 1 : 개요

uvumbu 2024. 12. 26. 16:59

 

 

Quantization이란?

숫자의 정밀도를 낮추는 최적화 및 경량화 기법이다.

 

이때 정밀도란?

무리수가 있을 때 그 무리수를 얼마나 정확하게 표현할지

 

예를 들어 π를 표현할 때 

  • 정밀도가 높으면 : 3.141592
  • 정밀도가 낮으면 : 3.14

 

낮은 정밀도의 특징

  • 계산 속도 향상
  • 오차 발생
  • 메모리 사용량 감소

 

Quantization의 목표

높은 정밀도로 표현된 것들을 낮은 정밀도로 바꾸되, 오차를 최소화하는 방법을 찾는 것이다.

 

Quantization의 개요

높은 정밀도의 값을 적절한 정밀도 값에 맵핑하는 함수가 필요하다.

이를 Quantization Mapping라고 한다.

 

Quantization의 에러가 커질수록 성능 저하

이유 :

(1) 누적 오차 :

  • 작은 오차들이 층을 거치면서 누적되고 증폭

(2) 비활성화 :

  • ReLU함수의 특징이 음수의 경우 0으로 치환한다는 특성이 있다. 이는 뉴런을 비활성화한다는 의미다.
  • 예를 들어 작은 양수로 표현된 뉴런이 있다고 가정할 때, Quantization 기법을 거치다가 음수로 바뀌면 비활성화되기도 한다.
  • 이런 정밀도가 중요한 부분에서는 Quantization의 기법이 매우 중요하다.

 

 

Model Quantization

이제 Quantization을 잘 할 수 있는 방법들에 대해 알아보자.

 

Quantization Mapping

앞서 말했듯, 높은 정밀도 데이터를 낮은 정밀도로 대응시키는 Quantization계산식을 의미한다.

 

이는 대상이 되는 데이터와 파라미터 묶음들이 있는데, 이들을 각각의 단위로 mapping을 생성한다.

  • 데이터의 경우 전체 데이터 단위로 mapping을 생성
  • 파라미터의 경우, 레이어 단위로 mapping을 생성

 

Quantization Mapping 기법들

  • Absmax Quantization (symmetric)(대칭) :
    • 0 을 기준으로 범위가 좌우 대칭이 되도록
    • 0을 항상 0으로 보내는 것이 효과적인 경우 사용한다.( ex Tanh )
  • Zero-point Quantization (asymmetric)(비대칭) :
    • 0 을 고려하지 않고 전체 범위를 균일하게 반환
    • 데이터 분포가 비대칭이거나 평균값이 아닌 경우 사용한다. ( ex ReLU)

Quantization 저장과 사용

그럼 Quantization 을 진행했을 때, 어떤 값들이 저장되고 쓰일까?

  • 양자화된 값들, 정수로 저장
  • 그리고 그와 관련해서 복원을 하는데 필요한 수식들과 관련된 변수들을 저장
  • 위 둘을 통해서 역 양자화를 통해 원본값으로 복원하는 계산을 하고, 그 결과를 활용하는 식으로 사용한다.

정리하자면 저장하는 요소들은 다음과 같다.

  • Quantized value (X_quant) : 양자화를 거쳐 나온 값
  • Scale factor (S) : 기울기 값
  • Zero - point (Z) : 0의 양자화 후 위치

위 값들은 역양자화에 쓰인다.

 

범용적으로 쓰이는 수식은 다음과 같다.

 

 

 

 

 

 

 

 

'끄적 > 모델 최적화 및 경량화' 카테고리의 다른 글

PEFT 1 : 개요  (0) 2024.12.27
Quantization 2 : Quantization Mapping 기법들  (0) 2024.12.27
KD 4 : Imitation Learning  (3) 2024.12.26
KD 3 : Feature - based KD  (0) 2024.12.26
KD 2 : Logit based KD  (0) 2024.12.26