신경망 양자화 기법
IT 위키
- 상위 문서: 신경망 양자화
양자화 기법(Quantization Techniques)은 딥러닝 모델을 경량화하고 연산 효율을 높이기 위해 사용되며, 다양한 기준에 따라 여러 방식으로 분류된다.
가중치 vs 활성화 양자화[편집 | 원본 편집]
양자화는 대상에 따라 크게 가중치 양자화와 활성화 양자화로 나눌 수 있다.
- 가중치 양자화 (Weight Quantization):
- 모델의 학습된 파라미터(가중치)를 정수 또는 저비트 정밀도로 변환하는 방식이다. 일반적으로 정적이며, 학습 이후 적용된다.
- 활성화 양자화 (Activation Quantization):
- 신경망의 중간 계산 결과(활성화값)를 양자화하는 방식이다. 입력 데이터에 따라 값의 분포가 달라지므로, 일반적으로 동적 방식이 요구된다. 양자화 및 역양자화 연산이 반복되며 연산량이 증가할 수 있다.
양자화 인지 학습 vs 사후 양자화[편집 | 원본 편집]
학습 시점을 기준으로 양자화는 다음과 같이 분류된다.
- 양자화 인지 학습 (Quantization-Aware Training, QAT):
- 학습 중에 양자화 효과를 시뮬레이션하여 모델이 양자화 오차에 적응할 수 있도록 하는 방식이다. 정확도 손실이 적으나, 학습 비용이 증가한다.
- 사후 양자화 (Post-Training Quantization, PTQ):
- 학습이 완료된 모델에 대해 양자화를 적용하는 방식이다. 빠르고 간단하며 학습 데이터 없이도 가능하지만, 정확도 손실이 발생할 수 있다.
텐서/벡터/그룹 기반 양자화[편집 | 원본 편집]
양자화 적용 범위의 크기(그레인 크기)에 따라 다음과 같이 구분된다.
- 텐서 기반 양자화 (Tensor-based Quantization):
- 전체 텐서에 대해 하나의 스케일을 사용하는 방식이다. 구현이 단순하고 빠르나, 오차가 크다.
- 벡터 기반 양자화 (Vector-based Quantization):
- 행 또는 열 단위로 서로 다른 스케일을 사용하는 방식이다. 정확도는 향상되지만 구현 복잡도가 증가한다.
- 그룹 기반 양자화 (Group-based Quantization):
- 텐서를 일정한 크기의 그룹으로 나누고, 각 그룹마다 스케일을 설정하는 방식이다. 정밀도와 효율의 균형을 추구한다.
추론용 vs 학습용 양자화[편집 | 원본 편집]
양자화를 적용하는 연산 단계에 따라 다음과 같이 나눌 수 있다.
- 추론용 양자화 (Quantization for Inference):
- 학습이 완료된 모델에 양자화를 적용하여 추론 속도와 메모리 효율을 높이는 방식이다.
- 학습용 양자화 (Quantization for Training):
- 학습 과정 중에 양자화를 적용하는 방식으로, 그래디언트 연산까지 양자화되어야 하므로 높은 정밀도가 요구된다.
결정론적 vs 확률적 양자화[편집 | 원본 편집]
양자화 값의 선택 방식에 따라 다음과 같이 분류된다.
- 결정론적 양자화 (Deterministic Quantization):
- 입력값에 대해 항상 같은 양자화 값을 출력하는 방식이다. 구현이 간단하고 재현성이 뛰어나다.
- 확률적 양자화 (Stochastic Quantization):
- 입력값이 양자화 경계 근처에 있을 때, 확률적으로 상하 양자화 중 하나를 선택하는 방식이다. 평균적 오차를 줄일 수 있으며, 학습 중에 유용하다.
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Chmiel et al., Neural gradients are near-lognormal: improved quantized and sparse training, arXiv:2006.08173
- Li et al., Training quantized nets: A deeper understanding, NeurIPS 2017
- Choi et al., PACT: Parameterized Clipping Activation, arXiv:1805.06085