AWQ는 영리하게 양자화하지 않습니다. 단지 반올림 오차를 안전한 곳으로 옮길 뿐입니다
요약
AWQ 양자화 방식의 수학적 원리를 분석하여, AWQ가 단순히 반올림 오차를 입력 활성화 값에 따라 재배치하는 방식임을 설명합니다. 재매개변수화를 통해 큰 활성화 값을 가진 채널의 오차를 줄이는 원리와 주의사항을 다룹니다.
핵심 포인트
- AWQ는 영리한 양자화가 아닌 반올림 오차의 재배치 방식임
- 오차는 입력 활성화 값(x)에 비례하여 발생함
- 재매개변수화를 통해 특정 채널의 양자화 오차를 감소시킴
- 과도한 스케일링은 그룹 내 공유 스텝 사이즈를 팽창시키는 부작용이 있음
- 반올림 함수는 미분값이 0이므로 그래디언트 최적화가 어려움
저는 오랫동안 AWQ 양자화 (AWQ-quantized) 모델을 실행해 왔지만, 그것이 작동하게 만드는 비결을 이해하지 못했습니다. 그래서 직접 수식으로 유도하여 정리해 보았습니다.
놀라운 점은 다음과 같습니다: AWQ는 영리하게 양자화하지 않습니다. 반올림 (Rounding)은 여전히 단순하게 유지됩니다. 레이어의 출력 오차를 분해해 보면, 이는 스텝 사이즈 (step size), 반올림 오차 (rounding error), 그리고 입력 활성화 값 (input activation) x로 인수분해됩니다. 하나의 그룹 내에서 앞의 두 요소는 기본적으로 고정되어 있으므로, 오차는 x에 비례합니다. 큰 활성화 값을 가진 몇몇 두드러진 채널들이 대부분의 손상을 입힙니다.
해결책은 재매개변수화 (reparameterization)입니다: 활성화를 s로 나누고, 가중치 (weight)에 s를 곱합니다. (Ws)(x/s) = Wx는 전체 정밀도 (full precision)에서 성립하지만, 이제 반올림이 스케일링된 가중치에 적용되어 해당 채널의 오차가 줄어듭니다.
이 포스트는 주의사항도 다룹니다: 너무 과하게 스케일링하면 다른 모든 가중치에 대해 그룹의 공유 스텝 사이즈를 팽창시킨다는 점, 왜 그래디언트 (gradients)가 도움이 될 수 없는지 (Round()는 미분값이 0임), 그리고 이를 해결하는 alpha에 대한 그리드 탐색 (grid search)에 대해 설명합니다.
제 GPTQ 작성글의 후속편입니다. 질문은 언제든 환영합니다.
https://sudhirpol522.github.io/blog/math-of-awq/
내용 재구성을 위해 LLM을 사용했습니다 😀
submitted by /u/No_Progress_5399
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기