Quantization 기본기 다지기
Uniform vs Non-uniform 🙌
Calibration
[Calibrating Activations]
Activation의 Calibration은 상당히 까다롭다.
Input은 Offline에서 알 수 없는 변수라서 input 이후 Calibration이 진행되어야 한다.
- Input 개수 ↑, 학습/추론 이미지의 분포 유사도 ↑ \(\rightarrow\) Calibration 효율 ↑.
Calibration 피벗값을 고르는 방법 중, Entropy
접근법이 가장 일반화적인 방법이다
Max
: 원소값중 가장 큰 값의 절대값
Entropy
: 양자화된 값과 기존 FP 값의 차이를 최소로 만드는 값
Percentile
: 입력값의 분포를 백분위수로 나타내서 0.01% 등 사용자가 설정한 값
Uniform(균일 양자화)
- FP Input, 가중치를 INT, 고정소수점 형태로 변환
- step size 균일
- 대칭적 양수/음수 구조
Round-off Error
: 양자화 스텝 크기 절반- 짝수 or 홀수 step 양자화
(1) Affine Transfrom
- 비대칭(Asymmetric)
(2)
보다 정확도 ↑, Cost 효율 ↓
\(z\): zero-point, 변환 전 0의 위치가 변환 후 어느 점으로 대응되는지 표현
\(s\): scaling factor
\[quantize(x,b,s,z)=clip(round(s\times x+z),-2^{b-1},2^{b-1}-1)\] \[dequantize(x_q,s,z)=\frac{x_q-z}{s}\]
Fake Image/Quantization
: 양자화 변환 후 값들이다.
(2) Scale Transform
- 대칭(Symmetric)
(1)
보다 정확도 ↓, Cost 효율 ↑
Non-uniform(비균일 양자화)
- step size 비균일
- 입력 신호 레벨 ↓ \(\rightarrow\) 양자화 계단 간격 ↓
-
Code Book
: 맵핑 방식을 결정하는 사용자가 정해놓은 Rule음수: 0 0~1: 1 >= 1: 2
Post Training Quantization ✏
학습이 완료된 기학습 모델을 이용해서 양자화를 진행하기 때문에, Offline에서 Weights, 학습 파라미터들이 모두 설정된 상태이다.
Max
, Entropy
, Percentile
등 다양한 calibration 적용하여 best 찾는다.
Quantization Aware Training 💜
- 학습이 진행되기 전 양자화를 진행하는 방법으로, XNOR-Net 같은 네트워크가 QAT에 해당.
- 일반적으로 QAT 성능 » PTQ.
- PTQ: Global Minimun에 최적화된 가중치를 덜 최적화된곳으로 보내져
Deep Convex
에 빠지게 된다. - QAT: 학습 진행 도중 최적화를 진행 \(\rightarrow\) 가중치가
Deep Convex
에 빠지기 어렵다.
- PTQ: Global Minimun에 최적화된 가중치를 덜 최적화된곳으로 보내져
- Fake Quantization: Low-precision 타입 변환 후 행렬연산 진행 \(\rightarrow\) 연산비용 ↓.
- 역전파가 불가능한 문제는 STE 방법으로 해결 (여전히 한계 존재).
Partial Quantization 🥰
- 신경망의 각 Layer를 Sensitive 기준으로 내림차순하여 하나씩 양자화를 죽여나가는 방법
- Sensitive를 선정 기준 부재
- 정확도를 보존 가능.
Conclusion 🎄
- PTQ 방법을 우선적으로 고려한다. 앞서 학습했던 Max, Entropy, Percentile Calibration에 대해서 다양하게 적용해가며 성능을 확인한다.
- Partial Quantization: PTQ 방법이 조금 아쉬울때 적용해본다. Sensitive 기준으로 내림차순하여 하나씩 양자화를 죽여나가며 성능을 확인한다.
- QAT: 위 두가지 방법으로도 성능이 개선되지 않을때 사용한다.
Reference
Quantization Granularity
- Activation: tensor quantization.
- Weights: tensor or chennel quantization.
댓글남기기