LLM 양자화 비교: FP16, INT8, INT4와 GGUF·AWQ·GPTQ

4 분 소요

같은 모델을 더 작은 GPU에 올리는 첫 번째 수단이 양자화입니다. 가중치를 낮은 정밀도로 저장해 VRAM을 줄이는 대신 정확도를 조금 내주는 거래인데, “얼마 내주고 얼마 아끼나"가 방식마다 다릅니다. 결론을 먼저 적으면, GPU 다중 사용자 서빙은 AWQ, 로컬 실행은 GGUF, 대부분의 경우 4비트(INT4)면 충분하되 추론·코드가 핵심이면 INT8이나 FP16을 유지합니다. VRAM 규모 계산은 LLM 서버 규모에서 다뤘고, 이 글은 그 VRAM을 줄이는 방법의 선택입니다.

정밀도: VRAM은 비트 수에 비례합니다 #

양자화의 축은 가중치를 몇 비트로 저장하느냐입니다. 원본은 대개 16비트(FP16/BF16)이고, 여기서 비트를 반씩 줄이면 VRAM도 대략 반씩 줄어듭니다.

정밀도비트70B 모델 VRAM(가중치)품질
FP1616약 140GB원본
INT88약 70GB거의 동일
INT44약 35〜40GB대부분 유지, 일부 저하

읽는 법은 단순합니다. INT4로 내리면 FP16 대비 VRAM이 4분의 1이 되어, H100 한 장(80GB)에 70B 모델이 여유 있게 올라갑니다. FP16이면 두 장이 필요합니다. 실제 필요 VRAM은 가중치 외에 KV 캐시가 더해지므로 위 표에 여유를 얹어야 하지만, 방식 선택의 뼈대는 이 비례 관계입니다. 이 절감이 곧 손익분기의 GPU 원가를 낮춥니다.

세 형식: 같은 4비트라도 용도가 다릅니다 #

INT4까지는 “얼마나 줄이나"의 이야기이고, 실무 선택은 “어떤 형식으로 줄이나"입니다. 세 형식이 용도별로 갈립니다.

  • GGUF: llama.cpp와 Ollama가 쓰는 형식입니다. Q2_K부터 Q8_0까지 양자화 단계가 촘촘하고, CPU+GPU 혼합 실행을 지원해 VRAM이 부족한 로컬 환경에 강합니다. Q5_K_M·Q6_K는 원본에 가깝고 Q2_K는 눈에 띄게 떨어지므로, 로컬에서는 대개 Q4_K_M〜Q5_K_M이 균형점입니다.
  • AWQ(Activation-aware Weight Quantization): 활성값 기준으로 중요한 상위 1% 가중치를 보호하며 양자화합니다. FP16 품질의 약 95〜97%를 유지해 세 방식 중 정확도가 가장 좋은 편이고, GPU 서빙에서 처리량도 높습니다. vLLM 다중 사용자 서빙의 기본 선택입니다.
  • GPTQ: AWQ보다 먼저 널리 쓰인 GPU 양자화 방식으로, FP16의 약 90〜96%를 유지합니다. 지원 도구와 사전 양자화된 모델이 많다는 이점이 있지만, 정확도·속도에서 AWQ에 밀리는 구간이 있습니다.

INT4가 품질을 떨어뜨리는 지점 #

4비트가 “대부분 유지"라고 해서 항상 안전한 것은 아닙니다. 저하가 두드러지는 작업이 있습니다.

  • 수학·코드 생성·추론 중심 작업: 한 토큰의 오차가 결과 전체를 틀리게 만드는 작업에서는 INT4의 미세한 품질 저하가 실제 오답으로 드러납니다. 이런 워크로드는 INT8이나 FP16을 유지하는 편이 안전합니다.
  • 단순 채팅·요약·분류: 약간의 품질 저하가 체감되지 않는 작업이면 INT4로 내려 VRAM·원가를 아끼는 쪽이 이득입니다.

워크로드 성격이 정밀도 하한을 정합니다. 벤치마크 수치(perplexity, 정확도)만 보지 말고, 실제 태스크로 양자화 전후를 비교해 허용 가능한지 확인하는 것이 먼저입니다. AWQ가 INT4에서도 GPTQ보다 추론·지시 따르기에서 낫다는 결과가 있지만, 어느 쪽이든 4비트는 추론 작업에서 검증을 거칩니다.

서빙 프레임워크와 맞추기 #

형식 선택은 서빙 프레임워크 선택과 묶여 있습니다. 따로 고르면 어긋납니다.

  • Ollama·llama.cpp로 로컬 실행 → GGUF. 다른 형식은 안 받거나 제한적입니다.
  • vLLM·SGLang로 GPU 서빙 → AWQ 또는 FP8이 처리량에서 유리합니다. GPTQ도 되지만 신규 배포는 AWQ가 무난합니다.
  • FP8: 최신 GPU(Hopper 이상)에서 하드웨어 가속되는 8비트 부동소수점으로, INT8보다 품질 손실이 적으면서 서빙 처리량이 높아 프로덕션에서 자리를 넓히는 중입니다.

선택 순서 #

  1. 정밀도 하한부터 정합니다: 추론·수학·코드가 핵심이면 INT8 이상, 채팅·요약·분류면 INT4로 시작합니다.
  2. 실행 환경으로 형식을 좁힙니다: 로컬이면 GGUF, GPU 서빙이면 AWQ(또는 FP8)입니다.
  3. VRAM에 맞춥니다: 목표 GPU에 모델이 KV 캐시까지 얹어 들어가는 최소 정밀도를 고릅니다. 서버 규모 계산과 함께 봅니다.
  4. 실제 태스크로 검증합니다: 양자화 전후를 벤치마크가 아니라 실제 입력으로 비교해 품질 저하가 허용 범위인지 확인합니다.
  5. 처리량이 필요하면 서빙 최적화 형식으로: 다중 사용자면 AWQ·FP8이 GGUF보다 처리량이 높습니다.

정리 #

  • 양자화는 비트 수에 비례해 VRAM을 줄입니다. INT4는 FP16 대비 4분의 1로, 70B 모델이 140GB에서 35〜40GB로 내려갑니다.
  • 형식은 용도로 갈립니다. 로컬은 GGUF, GPU 서빙은 AWQ, 그 전 세대가 GPTQ입니다. AWQ가 FP16의 95〜97%로 정확도가 가장 좋은 편입니다.
  • INT4는 수학·코드·추론 작업에서 품질 저하가 두드러집니다. 이런 워크로드는 INT8이나 FP16을 유지합니다.
  • 형식은 서빙 프레임워크와 묶어 고릅니다. Ollama는 GGUF, vLLM은 AWQ·FP8입니다.
  • 방식 선택은 벤치마크가 아니라 실제 태스크의 품질 검증으로 마무리합니다.
X