Post

[LLM 추론 최적화] Day 2: 양자화 - INT8, GPTQ, AWQ

[LLM 추론 최적화] Day 2: 양자화 - INT8, GPTQ, AWQ

서론: 가중치를 줄이면 무엇이 달라지나

LLaMA-3 70B 모델의 FP16 가중치는 약 140GB다. A100 80GB GPU 2장이 필요하다. 이를 INT4로 양자화하면 약 35GB, A100 1장에 들어간다. 메모리가 절반으로 줄면 GPU 수가 줄고 비용도 줄어든다.

양자화는 고정밀도 부동소수점 가중치를 낮은 비트 정수로 변환하는 기술이다.

1. 양자화의 원리

1
2
3
4
5
6
FP32 (32비트) → INT8 (8비트): 4배 압축
FP16 (16비트) → INT4 (4비트): 4배 압축

변환 공식:
  quantized = round(value / scale) + zero_point
  dequantized = (quantized - zero_point) × scale

scale과 zero_point를 얼마나 정밀하게 결정하느냐가 정확도 손실을 결정한다.

2. 양자화 방식 비교

2.1 Post-Training Quantization (PTQ)

학습 이후 가중치를 그대로 양자화한다. 캘리브레이션 데이터셋을 소량 사용해 스케일을 결정한다.

1
2
장점: 재학습 불필요, 빠른 적용
단점: 낮은 비트(INT4 이하)에서 정확도 손실 가능

LLM.int8(): Hugging Face bitsandbytes 라이브러리. 이상값(outlier) 행에는 FP16, 나머지는 INT8을 적용하는 혼합 방식.

2.2 GPTQ

그래디언트 기반 2차 최적화로 각 레이어의 양자화 오차를 최소화한다.

1
2
3
4
특징:
  - 레이어별로 순서대로 최적화
  - GPU에서 직접 실행 (빠른 양자화 속도)
  - INT4에서도 FP16 대비 약 1-2% 정확도 손실

GPTQ는 추론 시 가중치를 실시간으로 역양자화해 연산한다. 별도의 양자화 커널 지원이 필요하다.

2.3 AWQ (Activation-aware Weight Quantization)

활성값(activation) 분포를 분석해 중요한 가중치 채널을 보호한다.

1
2
3
4
핵심 아이디어:
  - 활성값이 큰 채널 = 중요한 채널
  - 중요한 채널의 가중치는 스케일을 키워 양자화 오차 최소화
  - 나머지는 INT4로 공격적으로 압축

GPTQ 대비 동등하거나 더 나은 정확도를 보이면서 추론 속도가 빠른 경향이 있다.

3. FP8: 새로운 선택지

NVIDIA H100부터 FP8(8비트 부동소수점) 하드웨어 가속을 지원한다.

형식비트표현 범위특징
FP1616±65504기준
INT88-128~127정수 연산
FP88FP16보다 좁음부동소수점, H100+ 전용

FP8은 INT8 대비 정확도 손실이 적고, 하드웨어 가속으로 INT8과 비슷한 속도를 낸다. H100 환경에서는 FP8이 점점 표준이 되고 있다.

4. 실무 선택 가이드

1
2
3
4
5
6
7
8
9
10
11
GPU 메모리 여유 있음 (< 4비트 불필요)
  → INT8 PTQ 또는 FP8 (H100+)

GPU 메모리 부족, 정확도 우선
  → GPTQ INT4 또는 AWQ INT4

추론 속도 최우선
  → AWQ + 전용 커널 (AutoAWQ, vLLM 통합)

H100 환경
  → FP8 우선 검토

5. 정확도 손실 평가

양자화 후 반드시 정확도를 평가해야 한다.

1
2
3
4
5
6
7
8
평가 지표:
  - Perplexity: 언어 모델링 기본 지표 (낮을수록 좋음)
  - 태스크별 벤치마크: MMLU, HellaSwag 등
  - 도메인 특화 골든 셋: 실제 서비스 시나리오

허용 기준 예시:
  FP16 대비 Perplexity 증가 < 2%
  태스크 정확도 하락 < 1%p

6. Day 2 체크리스트

  1. 현재 모델의 GPU 메모리 점유율을 측정하고 양자화 필요성을 판단했다.
  2. 사용 환경(GPU 세대)에 따라 INT8/INT4/FP8 중 적합한 형식을 선택했다.
  3. 양자화 후 Perplexity 및 태스크 벤치마크로 정확도를 검증했다.
  4. 양자화 커널을 지원하는 추론 프레임워크(vLLM, AutoAWQ)를 확인했다.

다음 글 예고

Day 3에서는 KV 캐시와 Continuous Batching을 다룬다. PagedAttention이 KV 캐시 단편화를 어떻게 해결하는지, 연속 배치가 GPU 활용률을 어떻게 높이는지 살펴본다.

This post is licensed under CC BY 4.0 by the author.