큰 활성값의 문제
일부 활성값이 유난히 크면 같은 정수 표현 범위에서 작은 값의 해상도가 낮아질 수 있다. SmoothQuant는 채널별 스케일을 이용해 활성값의 부담 일부를 가중치 쪽으로 옮긴다. 값을 임의로 잘라 버리는 것과 달리 양자화 전 선형 계산을 유지하는 변환이다.
스케일 이동의 독립 예제
입력 두 채널이 20과 2이고 가중치가 각각 0.5와 3이면 출력은 16이다. 첫 입력을 5로 나누어 4로 만들고 대응 가중치를 5배인 2.5로 바꾸면 4×2.5+2×3=16이다. 다만 변환 후 반올림한 값으로 계산할 때에는 오차가 생길 수 있다.
난이도의 균형
활성값을 작게 만들수록 대응 가중치는 커질 수 있으므로 한쪽만 보고 스케일을 무한히 키울 수 없다. 보정 통계에 맞춰 두 쪽의 양자화 난이도를 조절한다. W8A8은 가중치와 활성값의 표현을 말하며 모든 중간 상태가 예외 없이 같은 정수 형식이라는 뜻은 아니다.
평가할 조건
8비트 행렬 연산을 활용하려면 실행 장치와 커널이 해당 구성을 지원해야 한다. 가중치만 압축하는 방식과 메모리 감소율 및 실행 비용이 다르다. 실제 사용 입력의 범위와 배치 크기를 맞춰 정확도와 처리 속도를 함께 확인한다.
관련 문서
AWQ 양자화 / GPTQ 양자화 / LLM int8 양자화 / 신경망 양자화 / 언어 모형 / 트랜스포머