SmoothQuant

IT 위키

SmoothQuant(스무스퀀트, 영어: SmoothQuant)은 대규모 언어모델(LLM, Large Language Model)을 대상으로 한 사후(Post-Training) 양자화 기법으로, 정확도 손실을 최소화하면서 모델의 추론 속도와 메모리 효율을 향상시키는 방법이다. 이 기법은 2022년 구글 리서치(Google Research)와 MIT 공동 연구진이 발표한 논문 「SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models」에서 제안되었다.[1]

개요[편집 | 원본 편집]

대형 언어모델은 수십억 개의 파라미터를 가지며, 이를 효율적으로 배포하기 위해 양자화(Quantization)가 활용된다. 그러나 활성화(activation)는 분포 내 이상치(outlier) 때문에 양자화 과정에서 손실이 발생하기 쉽다. SmoothQuant은 활성화의 분포를 부드럽게(smooth) 만들어 양자화가 용이하도록 조정하고, 가중치(weight)와 활성화의 스케일링을 동시에 조정하여 양자화 난이도를 균형 있게 분산시킨다.

원리[편집 | 원본 편집]

SmoothQuant은 선형 연산 \(y = xW\) 에 대해 다음과 같은 변환을 적용한다.

x' = x / s
W' = s × W

여기서 s는 스케일링 계수(scaling factor)이며, 활성화의 최대값과 가중치의 최대값을 이용해 계산된다. 이 변환은 \(y = xW = x'W'\) 관계를 유지하므로 모델의 결과값은 동일하다. 즉, 활성화의 분포 폭을 줄여 양자화 시 손실을 감소시키고, 그 부담을 일부 가중치 쪽으로 이동시킨다.

수식적 정의[편집 | 원본 편집]

SmoothQuant의 스케일링 계수는 다음과 같이 정의된다.

s = (max(|x|) / max(|W|))^α

여기서 α(알파)는 0에서 1 사이의 값을 가지는 하이퍼파라미터이며,

  • α가 클수록 활성화 쪽의 스케일링이 커지고
  • α가 작을수록 가중치 쪽으로 부담이 이동한다.

절차[편집 | 원본 편집]

SmoothQuant은 다음 단계를 거쳐 수행된다.

  1. 모델의 각 레이어에서 활성화와 가중치의 통계값을 수집한다.
  2. 스케일링 계수 s를 계산한다.
  3. 가중치와 활성화를 각각 s에 따라 변환한다.
  4. 변환된 모델을 INT8 정밀도로 양자화한다(W8A8).
  5. 양자화된 모델을 INT8 연산을 지원하는 런타임에서 추론한다.

특징[편집 | 원본 편집]

  • 훈련 불필요: 기존 모델에 직접 적용 가능한 사후(Post-Training) 방식이다.
  • 정확도 유지: 기존 양자화 기법보다 정확도 손실이 적다.
  • 효율성 향상: 메모리 사용량을 절반 가까이 줄이고 추론 속도를 높인다.
  • 범용성: OPT, BLOOM, GPT-NeoX 등 다양한 LLM에 적용 가능하다.[2]

한계[편집 | 원본 편집]

  • 하이퍼파라미터 α 값이 모델에 따라 다르며, 최적값 탐색이 필요하다.
  • 활성화를 과도하게 평탄화하면 일부 레이어의 표현력이 저하될 수 있다.
  • INT8 연산을 효율적으로 지원하지 않는 하드웨어에서는 성능 향상이 제한된다.
  • 비선형 연산(예: Softmax, LayerNorm 등)은 SmoothQuant 변환에 직접 적용하기 어렵다.

관련 기술[편집 | 원본 편집]

  • SmoothQuant+: SmoothQuant을 기반으로 한 확장 기법으로, INT4 정밀도(W4A16) 양자화까지 적용한다.[3]
  • AWQ(Activation-aware Weight Quantization): 활성화 기반 가중치 양자화 방식으로, SmoothQuant의 영향을 받아 개발되었다.
  • ZeroQuant: 통계 수집 및 스케일 계산을 자동화한 후속 연구이다.

실제 적용[편집 | 원본 편집]

  • PyTorch 및 ONNX Runtime에서 INT8 추론용 SmoothQuant 기능을 지원한다.
  • AMD Quark SDK 및 Intel Neural Compressor 등 주요 양자화 도구에 통합되어 있다.
  • Hugging Face Transformers 프레임워크에서 일부 LLM(LLaMA, Mistral 등)에 적용되어 있다.[4]

성능 예시[편집 | 원본 편집]

모델 FP16 정확도 INT8(SmoothQuant) 정확도 속도 향상
OPT-175B 67.1 66.9 약 1.8배
BLOOM-176B 64.5 64.4 약 1.7배
GPT-NeoX-20B 68.3 68.2 약 1.9배

결론[편집 | 원본 편집]

SmoothQuant은 대형 언어모델을 추가 학습 없이 효율적으로 양자화할 수 있는 실용적 기법으로, 가중치와 활성화 간의 스케일 조정을 통해 정확도를 유지하면서도 추론 효율을 극대화한다. 현재 LLM 배포 과정에서 널리 사용되는 대표적인 포스트 트레이닝 양자화 기술 중 하나이다.

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]

  • Xiao, G. 외 (2023). SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models. ICML 2023.
  • Lu, Y. 외 (2024). Effective Post-Training Quantization for LLMs with Enhanced SmoothQuant Approach. Intel Analytics Blog.

각주[편집 | 원본 편집]