딥러닝 모델의 경량화 및 최적화를 위해 사용되는 양자화(Quantization)에 대한 정리

AIMET의 Post-training Quantization, PTQ 방식 알아보기

  • 퀄컴 이노베이션 센터의 오픈소스 AIMET를 통해서는 AIMET을 사용한 양자화의 두 범주(아래 참고)에 관한 광범위한 상세 정보와 실용적인 가이드를 제공함

1. 학습 후 양자화 (Post-training Quantiztion, PTQ)

  • 32비트 부동 소수점 값(FP32 네트워크 및 FP 모델)을 사용하는 기학습된 신경망을 분석해, 모델의 재훈련이나 미세 조정 없이 최적의 양자화 매개변수를 찾아 추천함.
  • PTQ 방식은 데이터가 필요하지 않을 수도 있고(즉, 데이터 세트가 필요하지 않음), 소규모 보정 데이터 세트(calibration dataset)를 활용해 양자화된 추론에 모델을 최적화할 수도 있다.

2. 양자화 인식 훈련 (Quantization-aware Training, QAT)

  • QAT는 사전 훈련된 FP32 모델을 사용해 적정한 위치에 양자화 작업을 삽입, 양자화 노이즈를 시뮬레이션하고, 모델 매개변수를 미세 조정해 양자화 노이즈를 방지하여 결국 양자화 추론에 적합한 모델을 생성함.

PTQ 워크플로우 및 방식

  • 크로스 레이어 균등화 (Cross-layer Equalization, CLE)
  • 편향 보정 (Bias Correction)
  • AdaRound

사전 훈련된 FP 모델이 있는 경우 워크플로우에는 아래의 내용이 포함된다.

  • AIMET의 크로스 레이어 균등화(CLE)가 FP 모델을 전처리하여 양자화 친화적으로 만듭니다.
  • 그다음, 양자화 효과를 시뮬레이션하고 성능을 평가하기 위해 양자화 작업이 모델에 추가됩니다. 양자화 작업은 여러 요소(대상 하드웨어 등)에 기반합니다.
  • 반올림 오차를 줄이는 동안, 클리핑 임계 값을 명시하기 위해 양자화기(quantizer)를 위한 가중치 범위가 선택됩니다.
  • 데이터가 있는 경우, AIMET의 AdaRound를 실행하면 일반적인 반올림(rounding-to-nearest) 접근법을 수행하는 대신 가중치 반올림을 최적화할 수 있습니다.
  • 데이터가 없는 경우, 분석 편향 보정(Analytical Bias Correction)을 사용할 수 있습니다. 편향 보정은 레이어의 편향 매개변수를 조정해 양자화를 통해 발생한 노이즈의 편향을 보정합니다. 편향 보정은 CLE와 함께 DFQ(Data-Free Quantization)에 상세히 설명되어 있습니다.

크로스 레이어 균등화 (CLE)

  • CLE 는 활성화 함수의 scale-equivariance 속성을 활용해 네트워크 가중치 범위를 균등화 한다 (즉, 채널간 진폭 변화를 줄이기 위해 가중치 텐서를 균등화함).
  • 이는 여러 일반적인 컴퓨터 비전 아키텍처에서 양자화 정확도 성능을 향상해 주며, 특히 깊이별 분리 가능한 컨볼루션 레이가 있는 모델에 유용함
  • 아래의 코드 예시와 같이 pytorch용 equalize_model() 함수를 비롯해 CLE용 API가 포함되어 있다.
from torchvision import models
from aimet_torch.cross_layer_equalization import equalize_model
  
model = models.resnet18(pretrained=True).eval()
input_shape = (1, 3, 224, 224)_  
 
# Performs batch normalization folding, Cross-layer scaling and High-bias absorption
  
# It must be noted that above API will equalize the given model in-place.
equalize_model(model, input_shape)

편향 보정 (Bias Correction)

  • 편향 보정은 양자화 결과 발생하는 레이어 출력의 이동을 수정한다. 가중치 양자화로 인해 발생한 노이즈가 편향되면 이동이 발생함(레이어 활성화에서의 편향).
  • 근본적인 원인은 대게 예상 분포를 이동시키는 고정된 아웃라이어 값
  • 편항 보정은 보정 항(correction item)을 사용해 노이즈의 편향을 보정하는 레이어의 편향 매개변수를 조정하므로 기존 모델의 정확도 일부는 복원할 수 없다.
  • AIMET은 두 가지의 편향 보정 접근법을 지원한다.
경험 편향 보정(Empirical Bias Correction)

추가 처리 시간을 들여 양자화된 여러 FP모델의 활성화를 비교하여 데이터 세트를 이용해 정확한 항을 계산함

분석 편향 보정 (Analytic Bias Correction)

데이터가 없어도 분석을 통해 편향 오차를 계산함. 배치 정규화 (batch normalization)와 ReLU 활성화 함수가 있는 네트워크에는 배치 정규화의 평균 및 표준 편차가 사용됨. AIMET은 편향 보정을 수행하는 모델에서 관련한 배치 정규화 통계를 통해 후보 컨볼루션 레이어를 자동으로 감지함.

AdaRound

  • Up or Down? Adaptive Rounding for Post-Training Quantization
  • 양자화는 보통 큰 영역에 있는 값을 그리드라고 알려진 더 작은 영역의 값으로 표현합니다. 그리고 아래 그림에서 보이는 바와 같이 값을 가장 근접한 그리드 포인트(정수 등)로 반올림한다.
  • AdaRound는 소규모 데이터를 사용해 반올림 여부를 결정하고 더 나은 양자화 성능을 위해 가중치를 조정하는 방법을 정하는 효과적이고 효율적인 방법. AdaRound는 학습 후 접근법을 취하는 (4비트 정수 등) 낮은 비트 너비로 양자화하는 데 특히 유용하다.

참고