Contents
- Symmetric vs. Asymmetric
- Symmetric Quantization
- Asymmetric Quantization
- Summary
- Example
1. Symmetric vs. Asymmetric
핵심: “zero-point를 어떻게 다루느냐” 차이
- “scaling factor”: 차이 X
-
“zero-point”: 차이 O
\(\rightarrow\) zero-point 개념이 붙느냐 vs. 안 붙느냐로 구분!
[복습]
- 양자화 (quantize)
- \(q = \text{round}\left(\frac{x}{\text{scale}} + \text{zero\_point}\right)\).
- 복원 (dequantize)
- \(\hat{x} = (q - \text{zero\_point}) \times \text{scale}\).
2. Symmetric Quantization
아이디어: 실수 값 분포를 0을 중심으로 대칭적 (symmetric)으로 정수 범위에 매핑.
- 즉, \([-max, +max]\) → \([-Q_{max}, +Q_{max}].\)
- 이때 zero-point = 0 (항상 원점이 정수 0에 매핑됨)
- 참고: 여기서 max는 “절대값 기준”
-
즉, \(max\) = **max( min , max )**
-
scaling factor:
- \(\text{scale} = \frac{\max(\mid x \mid)}{Q_{max}}\).
- e.g., INT8: \(Q_{max} = 127\)
장/단점
- 장점: 구현이 단순, 곱셈만 필요.
- 단점: 값 분포가 0에 치우쳐 있으면 범위를 낭비
3. Asymmetric Quantization
아이디어: 값 분포가 0을 중심으로 대칭적이지 않을 때, 범위를 [min, max] 전체로 매핑.
-
즉, \([min, max] → [0, Q_{max}]\)
-
zero-point ≠ 0 → “offset”이 들어감
scaling factor:
-
\(\text{scale} = \frac{\max - \min}{Q_{max} - Q_{min}}\).
-
zero-point:
- \(\text{zero\_point} = -\text{round}\left(\frac{\min}{\text{scale}}\right)\).
장/단점
- 장점: 분포에 더 잘 맞춰서 표현 손실 적음.
- 단점: 연산 시 (q - zero_point) 형태가 들어가서 계산이 조금 복잡.
4. Summary
Scaling factor 계산 방식은 케이스마다 조금 달라지지만,
- symmetric: min/max 절대값 기반
- asymmetric: 전체 min~max 범위 기반
scaling factor 자체는 둘 다 “실수 범위 ÷ 정수 범위”라는 뼈대는 같음.
- 차이는 zero-point를 두느냐(= asymmetric), 그냥 0으로 고정하느냐(= symmetric).
구분 | Symmetric | Asymmetric |
---|---|---|
매핑 범위 | [-max, +max] | [min, max] |
zero-point | 항상 0 | 0이 아닐 수 있음 |
장점 | 단순, 빠름 | 분포에 잘 맞음 |
단점 | 범위 낭비 가능 | 연산 복잡도 증가 |
5. Example
Setting
- 실수값: \([-2.0, -1.0, 0.0, 1.0, 3.0]\)
- 표현 방식: INT8 (0~255)
(1) Symmetric Quantization
-
(1) 범위: [-max, +max] = \([-3.0, +3.0]\)
-
(2) \(\text{scale} = \frac{3.0}{127} \approx 0.0236\).
-
(3) zero-point = 0
양자화:
- \(q = \text{round}\left(\frac{x}{\text{scale}}\right)\).
실수 값 | 정수 값 (q) | 복원 값 |
---|---|---|
-2.0 | -85 | -2.0 |
-1.0 | -42 | -1.0 |
0.0 | 0 | 0.0 |
1.0 | 42 | 1.0 |
3.0 | 127 | 3.0 |
요약
- 0이 항상 정수 0에 매핑
- 범위가 0을 중심으로 대칭.
(2) Asymmetric Quantization
-
(1) 범위: [min, max] = \([-2.0, +3.0]\)
-
(2) \(\text{scale} = \frac{3.0 - (-2.0)}{255} = \frac{5.0}{255} \approx 0.0196\).
-
(3) \(\text{zero\_point} = -\text{round}\left(\frac{-2.0}{0.0196}\right) \approx 102\).
양자화:
- \(q = \text{round}\left(\frac{x}{\text{scale}} + \text{zero\_point}\right)\).
실수 값 | 정수 값 (q) | 복원 값 |
---|---|---|
-2.0 | 0 | -2.0 |
-1.0 | 51 | -1.0 |
0.0 | 102 | 0.0 |
1.0 | 153 | 1.0 |
3.0 | 255 | 3.0 |
요약
- 0이 정수 0이 아닌 zero-point(102)에 매핑됨
- 분포가 비대칭일 때 더 효율적