가중치를 줄이고 추론을 빠르게
학습된 모델은 보통 가중치를 32비트 부동소수점으로 저장해. 양자화는 더 적은 비트로 같은 가중치를 표현하는 방법이야. float32 대신 int8을 쓰면 모델 크기가 약 4배 줄고, 정수 연산이 저렴하며 메모리로 옮길 바이트도 1/4이어서 추론이 빨라질 수 있어. 특히 원시 FLOP보다 메모리 대역폭과 초기 실행 크기가 중요한 가장자리 장치, 모바일, 서버리스 환경에서 가치가 커.
Keras 3에서는 한 번의 호출로
Keras 3는 별도 도구나 그래프 내보내기 없이 model.quantize('int8')로 모델을 제자리 변환해. Keras 3.11 이상의 'int4'는 품질이 견딜 수 있을 때 약 8배 압축까지 노릴 수 있고, type_filter=['Dense']를 사용하면 안전한 레이어 유형만 양자화하고 민감한 부분은 전체 정밀도로 남길 수 있어.
PTQ와 QAT
quantize()는 이미 학습된 가중치만 바꾸고 다시 학습하지 않는 학습 후 양자화(PTQ)를 수행해. 비용이 거의 없고 int8에서는 정확도 손실이 보통 약 0.5% 미만이야. 특히 int4에서 손실이 너무 크다면 학습 중 저정밀도 반올림을 흉내 내 모델이 적응하도록 하는 양자화 인식 학습(QAT)으로 넘어가. PTQ에서 시작하고 측정값이 요구할 때만 QAT를 사용해. 손실은 고정된 수치가 아니라 자료와 과제에 따라 달라지므로 직접 평가해야 해.