오늘 배운 내용은 경량화의 한 방법인 Quantization!
학습 정리로 월~금 동안 매일
복습, 과제, 피어세션, 회고 정리했고 아래 링크 달았습니다.
딥러닝 모델의 연산 비용과 메모리 사용량을 줄이기 위해 가중치와 활성화 값의 정밀도를 낮추는 기법
ex) 32비트 부동소수점(FP32)을 8비트 정수(INT8)와 같은 낮은 정밀도로 변환해 메모리 사용량을 줄임 (32비트->8비트로 1/4)
정밀도(precision)
의도한 숫자를 얼마나 정확하게 표현할 수 있는지
정밀도가 낮으면 오차는 발생할 수 있지만 연산 속도가 빨라지고 메모리 사용량이 감소한다.
일반적으로 Quantization을 통해 저장하고, 이를 복원하는 Dequantization을 거친 후 연산한다.
Quantization Mapping
높은 정밀도의 데이터를 낮은 정밀도로 대응시키는 계산 식
absmax Quantization : 0을 기준으로 변환 후 값의 범위가 좌우대칭
이 되게 변환
Tanh를 쓸 때 사용, 극단값에 예민
zero-point Quantization : 0을 고려하지 않고 전체 범위를 균일하게 변환
ReLU를 쓸 때 사용, 기준점이 비정상이면 성능 저하
양자화 후 값(), 양자화에 쓰이는 기울기(scale factor, S)와 zeropoint(0의 양자화후 위치, z)를 저장해야 한다.