dev.Log

모델 양자화(Quantization)란? 본문

인공지능

모델 양자화(Quantization)란?

초코푸딩 2025. 4. 22. 23:46

Llama 3.1 8B Q2_K.gguf 파일 크기 계산해보기

LLM을 직접 서빙하거나 llama.cpp 기반 추론을 해보다 보면
다음과 같은 파일을 자주 접하게 된다.

 
Meta-Llama-3.1-8B-Instruct-Q2_K.gguf

이런 모델을 쓰다 보면 자연스럽게 궁금해진다.

“8B 모델을 2비트로 양자화했는데,
왜 파일 크기는 정확히 이 정도가 나오는 걸까?”

이 글에서는

  • 모델 양자화(Quantization)의 개념
  • GGUF 포맷과 Q2_K의 의미
  • LLM 양자화 모델 파일 크기 계산 방법
    실제 Llama 3.1 8B 기준으로 정리한다.

1. 모델 양자화(Quantization)란?

모델 양자화(Quantization)는
딥러닝 모델의 가중치(Weights)와 연산을 더 적은 비트 수로 표현하는 기법이다.

일반적으로 학습된 모델은 다음과 같은 정밀도를 사용한다.

  • FP32 (32비트 부동소수점)
  • FP16 / BF16 (16비트)

양자화는 이를 다음과 같이 줄인다.

  • INT8
  • 4bit
  • 3bit
  • 2bit 계열

즉,

같은 모델 구조를 유지한 채
가중치 표현 방식만 바꿔
메모리 사용량과 연산 비용을 줄이는 것

이 핵심이다.


2. 왜 LLM에서 양자화를 할까?

대규모 언어 모델(LLM)에서는 양자화가 거의 필수다.

1️⃣ 모델 크기 축소

  • 8B, 70B 같은 모델은 FP16 기준으로도 수십~수백 GB
  • 양자화 없이는 개인 서버나 단일 GPU에서 실행 불가

2️⃣ 메모리 사용량 감소

  • GPU VRAM / 시스템 RAM 요구량 감소
  • 온프렘, 엣지, 단일 노드 환경에서 중요

3️⃣ 추론 속도 개선 (환경에 따라)

  • 메모리 대역폭 병목이 큰 경우 효과적
  • 특히 CPU 추론에서 체감 큼

4️⃣ 전력·운영 비용 절감

  • 더 작은 인스턴스로 서비스 가능

3. 파일명으로 보는 Llama 양자화 모델 구조

예시 모델:

 
Meta-Llama-3.1-8B-Instruct-Q2_K.gguf
항목의미
Meta-Llama-3.1 Meta에서 공개한 LLaMA 3.1 모델
8B 파라미터 수 약 80억 (8 Billion)
Instruct 사용자 질문 응답용으로 fine-tuning된 모델
Q2_K llama.cpp의 K-quant 계열 2bit 양자화
.gguf GGUF 포맷 (llama.cpp 추론용 포맷)

4. GGUF와 Q2_K 양자화의 실제 의미

여기서 가장 많이 오해되는 부분이 있다.

❌ “Q2_K = 모든 가중치를 2비트로 저장”

“블록 단위 2bit 압축 + 메타데이터 포함”

Q2_K는 llama.cpp의 K-quant 계열 중 하나로,

  • 가중치를 블록 단위로 묶고
  • 각 블록마다
    • 스케일(scale)
    • 보정 값
    • 클러스터 정보
      를 함께 저장한다.

즉,

가중치 자체는 2bit 수준으로 줄이지만
품질을 유지하기 위한 부가 정보가 반드시 포함된다.

그래서 “2bit × 파라미터 수”로 계산한 값보다
실제 파일 크기는 항상 더 커진다.


5. Llama 3.1 8B Q2_K 모델 파일 크기 계산

5-1. 이론적 최소 크기 (비현실적인 값)

  • 파라미터 수: 8B
  • 2bit 가정 시:
 
8,000,000,000 × 2bit = 16,000,000,000 bit = 약 2,000,000,000 byte1.86 GiB

👉 이 값은 이론적 최저치다.
실제 GGUF 모델에는 해당되지 않는다.


5-2. 현실적인 계산 방식 (실무 기준)

실제 모델 크기는 이렇게 생각하는 게 정확하다.

 
모델 크기 ≈ 파라미터 수 × (실제 BPW / 8) + 오버헤드
  • BPW (Bits Per Weight):
    실제 가중치 1개당 평균 비트 수
  • Q2_K는 “2bit 계열”이지만
    실제 BPW는 2보다 크다
  • 이유: 블록 스케일, 클러스터, 메타데이터

그래서 결과적으로:

Q2_K 8B 모델은
대략 2GB 초반 ~ 3GB 전후 크기가 되는 것이 정상

(정확한 값은 모델 구조/텐서 분해 방식에 따라 달라진다)


6. 파일 크기 ≠ 실행 시 메모리 사용량

이건 반드시 짚고 가야 한다.

✔ 모델 파일 크기

  • 디스크에 저장된 GGUF 파일 크기
  • 가중치 + 메타데이터

✔ 실행 시 메모리 사용량

  • 모델 로드 메모리
  • KV Cache
  • 런타임 버퍼 / 워크스페이스

특히 LLM에서는:

  • 컨텍스트 길이 (8k / 16k / 32k)
  • 동시 세션 수
  • batch size

에 따라 KV Cache 메모리가 급격히 증가한다.

그래서 흔히 이런 상황이 발생한다.

“모델 파일은 3GB인데
실행하면 10GB 이상 메모리를 사용한다”

이는 정상이다.


7. 정리

  • Q2_K는 “단순 2bit 모델”이 아니다
  • 실제 파일 크기는
    • 파라미터 수
    • 실제 BPW
    • 블록 메타데이터
      영향을 받는다
  • 모델 파일 크기와 실행 메모리는 완전히 다른 개념
  • LLM 운영에서는 KV Cache까지 포함해 메모리를 설계해야 한다

마무리

LLM 양자화 모델의 크기를 이해하면

  • 어떤 양자화 레벨을 선택할지
  • 어떤 하드웨어에서 운영 가능한지
  • 성능과 품질의 트레이드오프를 어디서 가져갈지

를 훨씬 명확하게 판단할 수 있다.

'인공지능' 카테고리의 다른 글

RAG 캐시  (0) 2025.11.21
임베딩 생성과 모달 정렬의 차이 (RAG와 LLM-ASR 관점에서)  (0) 2025.07.14
프롬프팅 확장 테크닉  (2) 2024.12.14
프롬프팅테크닉  (1) 2024.11.19
CTC (Connectionist Temporal Classification)  (2) 2024.11.18
Comments