QAT 개요 — fake quantization과 prepare·convert
QAT 개요 — fake quantization과 prepare·convert
QAT(Quantization-Aware Training) 은 훈련 또는 파인튜닝 중에 가짜 양자화를 적용해, 최종 양자화 모델이 더 높은 정확도와 더 낮은 perplexity를 내도록 하는 기법이에요.
PTQ와 QAT의 차이
- PTQ: 훈련 후 정적 양자화.
x_q = round(x/scale + zp).clamp(qmin,qmax)로 int8로 캐스팅. - QAT:
x_fq는 여전히 float. fake quantize가 '양자화+역양자화'의 수치를 시뮬레이션. 훈련 중에는 float로 유지돼 역전파로 파라미터가 업데이트돼요.
prepare와 convert
torchao에서 QAT는 두 단계로 이뤄져요.
- prepare: linear 레이어에 fake quantize 연산을 삽입.
- convert: 훈련 후 fake quantize를 실제 quantize/dequantize 연산으로 변환해 양자화 모델 생성(보통 linear와 융합).
두 단계 사이에는 기존처럼 훈련을 진행하면 돼요.
API
qat_quantizer.prepare(model) → train → convert(model) 흐름이에요. QATConfig는 PTQ config를 받아 대응하는 fake quantize config를 자동으로 추론해요.