1. Concept of Quantization
1.1 What is Quantization?
Quantization (양자화)이란, 숫자의 정밀도(precision)를 낮추는 최적화 및 경량화 기법
정밀도란, 의도한 숫자를 얼마나 정확하게 표현할 수 있는지를 타나내는 것으로
ex) π의 값을 나타낼때,
3.141592가 3.14보다 더 높은 정밀도의 값을 가진다고 볼 수 있다.
낮은 정밀도의 특징
- 계산 속도 향상 (최대 약 2.3배)
- 오차 발생 (성능 감소)
- 메모리 사용량 감소 (최대 약 ¼배)
Left and Right Images
Objective of Quantization
👉 오차를 최소화하는 낮은 정밀도 표현을 찾는 것
Oveview of Quantization
높은 정밀도의 값을 적절한 낮은 정밀도 값에 mapping 하는 함수가 필요
이를 Quantization Mapping이라고 함.

1.2 Numbers in Computer
컴퓨터가 숫자를 기록하는 방법(feat.부동소수점)
우리는 여기서 컴퓨터가 어떻게 소수점을 저장하는지를 기억해야 한다. 컴퓨터는 메모리의 한계때문에 모든 무한으로 이어지는 소수(0.3333...)나 이진수체계에 알맞지 않은 소수를 저장하는 방법으로 부동소수점(floating number)방식을 쓰고 있다.
cf1)부동소수점
메모리를 부호비트/지수비트/가수비트 로 나뉘어서 소수점을 저장하는 방식

기호 | 의미 | 설명 |
---|
S | 부호(Sign bit) | 0이면 양수, 1이면 음수 |
E | 지수부(Exponent) | 부호 있는 정수로 표현. 지수의 범위는 -127 ~ 128 (float), -1023 ~ 1024 (double) |
M | 가수부(Mantissa) | 실제값을 저장하는 부분. 10진수로 최대 7자리(float), 15자리(double)의 정밀도로 저장 가능 |
계산은
±(1.m)×2(e−127)

-118.625를 바꾸어보자.
1.음수이기에 최상위 비트를 1로 설정해준다.
2.절대값 118.625 를 이진법으로 변환해준다.
118
= 1110110(2)
소수부 변환
0.625
= 0.625 x 2 = 1.250 → 정수부 1
= 0.250 x 2 = 0.500 → 정수부 0
= 0.500 x 2 = 1.000 → 정수부 1
= 101(2)
결과
118.625
= 1110110.101
-
소수점을 이동시켜 정수부가 한자리가 되도록 변환해준다. (그러면 지수 6이 만들어진다)
1110110.101 → 1.110110101 x 2^6
-
가수부 비트에 실수값 그대로를 넣는다 (점 무시)
-
지수에 바이어스 값(127)을 더하고 지수부 비트에 넣는다.
6 + 127
= 133
= 100000101
결과적으로 -118.625는 이런식으로 표현할 수 있다.

Quantization의 에러가 커질수록 성능 저하
누적 오차 (Error propagation):작은 오차들이 층을 거치면서 누적되고 증폭
뉴런 비활성화: 작은 양수를 음수로 오변환 후 ReLU 함수는 뉴런을 비활성화

2. Model Quantization
2.1 Mapping
Quantization Mapping이란, 높은 precision 데이터를 낮은 prevision으로 대응시키는 quantization 계산식을 지칭
이는 대상이 되는 데이터, 파라미터 묶음마다 각각 존재
Quantization mapping에는 3가지의 종류가 있다.
Absmax Quantization (대칭형)
1. 개요
- 0을 기준으로 변환한 뒤, 변환 후 값들의 범위가 좌우 대칭이 되도록 만드는 방식.
- 0을 항상 0으로 매핑하는 것이 유리한 경우(예: Tanh 활성화 함수 등)에 활용.
- 절댓값의 최댓값(
absmax
)을 활용하여 스케일링하며, zero-point = 0
인 형태.
2. 알고리즘 요약
-
데이터에서 absmax
확인
absmax=max(∣X∣)
-
스케일 팩터(Scale factor, s
) 계산
s=127absmax
- 8비트(−128 ~ 127 ) 정수 범위를 커버하도록 설정
-
양자화(Quantize) 공식
Xquant=round(sX+z)단, z=0
-
복원(Dequantize) 공식
Xdequant=s×(Xquant−z)단, z=0
3. 예시
- 예시 데이터:
[5.47, 3.08, -7.59, 0, -1.95, -4.57, 10.8]
absmax
: 10.8
- 스케일 팩터
s=12710.8
- 양자화 결과
Xquant=[64,32,−89,0,−23,−54,127]
- 복원 결과
Xdequant≈[5.44,3.06,−7.57,0,−1.96,−4.59,10.8]
- 오차
4. Absmax Quantization 파라미터
- 양자화된 데이터:
[64, 32, -89, 0, -23, -54, 127]
- 스케일 팩터:
12710.8
- Zero-point:
0
- 대칭 방식에서는 항상
0
이므로 별도 저장 불필요
Zero-point Quantization (비대칭형)
1. 개요
- 0을 굳이 기준으로 잡지 않고 데이터 전체 최솟값~최댓값 범위를 균일하게 맵핑하는 방식.
- 데이터 분포가 비대칭적이거나 평균이 0이 아닌 경우(예: ReLU 등)에 유리.
- 8비트 정수 범위(
-128
~ 127
)를 최대한 활용하기 위해 스케일 팩터와 제로 포인트를 둘 다 사용.
2. 알고리즘 요약
-
데이터의 최솟값(minX)과 최댓값(maxX) 확인
-
스케일 팩터(s
) 계산
s=255maxX−minX
- 8비트 정수 범위에서 총 256개의 구간이므로, 분모로
255
를 사용.
-
제로 포인트(z
) 계산
z=−128−round(sminX)
-
양자화(Quantize) 공식
Xquant=round(sX+z)
-
복원(Dequantize) 공식
Xdequant=s×(Xquant−z)
3. 예시
- 예시 데이터:
[5.47, 3.08, -7.59, 0, -1.95, -4.57, 10.8]
- 최솟값:
-7.59
, 최댓값: 10.8
- 스케일 팩터
s=25510.8−(−7.59)=25518.39
- 제로 포인트
z=−128−round(s−7.59)≈−23
- 양자화 결과
Xquant=[53,20,−128,−23,−50,−86,127]
- 복원 결과
Xdequant≈[5.44,3.06,−7.57,0,−1.96,−4.59,10.8]
- 오차
4. Zero-point Quantization 파라미터
- 양자화된 데이터:
[53, 20, -128, -23, -50, -86, 127]
- 스케일 팩터:
25518.39
- 제로 포인트:
-23
Clipping
극단적인(outlier) 값의 영향을 줄이기 위한 기술로써, 일정 범주를 넘어가면 같은 값으로 취급하는 기술.

이 좋은 범주(range)를 찾는 과정을 calibration이라고 함
2.2 Summary
Quantization
정의: 높은 정밀도 숫자를 낮은 정밀도 숫자로 변환
예) FP32를 INT8로 변환
특징: 메모리 및 저장공간 효율, 연산 속도 향상
Quantization Mapping 방법
- Absmax (symmetric)
- Zero-point (asymmetric)
- Clipping
3. 참고사항
Dynamic Quantization
https://pytorch.org/tutorials/recipes/recipes/dynamic_quantization.html
Quantization 추가 설명
https://gaussian37.github.io/dl-concept-quantization/#qat-quantization-aware-training-%EB%B0%A9%EB%B2%95-1