같은 모델인데 다운로드 용량이 다른 이유
LLM을 내려받으려다 보면 같은 모델 이름 뒤에 FP16, INT8, Q4_K_M 같은 표기가 붙어 있는 것을 볼 수 있다. 같은 파라미터 수를 가진 모델인데 파일 크기는 크게 다르다.
이 차이를 이해하려면 모델의 크기와 숫자를 저장하는 정밀도를 구분해야 한다. 8B는 대략 80억 개의 파라미터가 있다는 뜻이고, 4bit는 숫자를 표현하는 데 사용하는 비트 수에 관한 정보다. 8B 모델을 4bit로 양자화해도 파라미터 수가 4B로 줄어드는 것은 아니다.
앞선 LLM용 GPU 용량 산정 글에서는 가중치의 저장 형식에 따라 필요한 메모리가 달라지는 것을 살펴봤다. 이번에는 양자화가 무엇을 바꾸고, 모델을 선택할 때 무엇을 확인해야 하는지 정리한다.
1. 양자화는 숫자를 더 적은 비트로 표현하는 것
양자화는 가중치나 활성값을 더 적은 비트로 표현해 저장·연산 비용을 줄이는 기술이다. 대신 원래 값과의 차이가 생길 수 있어, 자원 절감과 답변 품질을 함께 확인해야 한다. Hugging Face 양자화 개요
직관적으로는 촘촘한 눈금으로 기록한 숫자를 더 성긴 눈금으로 옮기는 것과 비슷하다. 다만 실제 양자화는 단순히 소수점 몇 자리를 잘라내는 방식은 아니다.
예를 들어 정수 양자화에서 다음처럼 값을 대응시킬 수 있다.
1
2
3
4
원래 값 x → 정수 q → 복원한 근삿값 x̂
q = clip(round(x / scale) + zero_point, q_min, q_max)
x̂ = scale × (q - zero_point)
설명을 위해 scale=0.1, zero_point=0이라고 가정해보자.
| 원래 값 | 저장할 정수 | 복원한 값 | 절대 오차 |
|---|---|---|---|
| 0.26 | 3 | 0.30 | 0.04 |
| -0.43 | -4 | -0.40 | 0.03 |
| 0.71 | 7 | 0.70 | 0.01 |
위 숫자는 원리를 보여주기 위한 예시다. 실제 모델에서는 값의 분포에 맞춰 스케일을 정하고, 텐서 전체 또는 채널·그룹별로 다른 값을 사용할 수 있다. 정수 이외에도 낮은 비트의 부동소수점이나 코드북 기반 형식이 있다. Hugging Face 양자화 개념
2. 메모리는 얼마나 줄어들까?
가중치만 생각하면 계산은 간단하다.
1
가중치 저장 용량 ≈ 파라미터 수 × 비트 수 ÷ 8
| 가중치 표현 | 값당 이론 용량 | 8B 모델 | 70B 모델 |
|---|---|---|---|
| FP32 | 4바이트 | 32GB | 280GB |
| FP16 / BF16 | 2바이트 | 16GB | 140GB |
| 8bit | 1바이트 | 8GB | 70GB |
| 4bit | 0.5바이트 | 4GB | 35GB |
단위는 10억 바이트를 1GB로 계산했다. 16bit와 비교하면 4bit의 가중치 저장량은 이론적으로 4분의 1이다. 원본 정밀도가 무엇인지에 따라 감소 비율도 달라진다. FP32와 비교할 때는 8분의 1이다.
실제 파일 크기와 실행 메모리는 이 표보다 커질 수 있다. 스케일 같은 부가 정보가 필요하고, 일부 텐서는 더 높은 정밀도로 유지될 수 있기 때문이다. 특히 추론에는 KV Cache와 연산용 공간도 필요하다.
1
2
3
4bit 모델 파일이 약 4GB
≠
4GB VRAM에서 전체 서비스가 동작한다는 보장
파일 크기는 저장 용량을 확인하는 출발점이다. 실제로는 모델을 로드하고 원하는 입력 길이와 동시 요청 수로 실행했을 때의 최대 메모리를 확인한다.
3. 같은 4bit라고 모두 같은 방식은 아니다
양자화 모델을 고를 때는 비트 수 외에 무엇을 줄였는지, 어떤 방법으로 줄였는지, 어떤 엔진에서 실행할지를 구분한다.
가중치와 계산 정밀도
W4A16은 가중치(Weight)는 4bit, 활성값(Activation)은 16bit로 다루는 구성을 나타낸다. W8A8은 둘을 8bit로 다루는 표기다. 누산이나 일부 연산의 정밀도는 별도일 수 있다.
가중치를 4bit로 저장해도 계산할 때 더 높은 정밀도를 사용하는 구성이 있다. 예를 들어 bitsandbytes는 4bit 로딩과 계산 데이터 형식을 별도로 설정한다. 따라서 4bit 모델이라는 말이 모든 계산을 4bit로 한다는 뜻은 아니다. bitsandbytes 문서
학습 후 적용할지, 학습 과정에 반영할지
| 구분 | 의미 |
|---|---|
| PTQ · Post-Training Quantization | 학습된 모델에 양자화를 적용 |
| QAT · Quantization-Aware Training | 학습 과정에서 양자화 효과를 반영해 적응하도록 구성 |
PTQ 중에는 대표 입력으로 보정하는 과정이 필요한 방법도 있다. 보정에 사용한 데이터와 방법이 다르면 같은 비트 수라도 결과가 달라질 수 있다. 양자화 기법 설명
4. GGUF, Q4_K_M, AWQ는 어떻게 읽어야 할까?
이름들이 같은 목록에 등장해도 의미하는 층위는 다르다.
| 이름 | 의미 |
|---|---|
| GGUF | 텐서와 모델 관련 메타데이터를 담는 파일 형식 |
| Q4_K_M | llama.cpp에서 사용하는 4bit 계열 양자화 프리셋 |
| AWQ / GPTQ | 양자화 방법을 가리키는 이름 |
| bitsandbytes | 저정밀도 연산과 모델 양자화 등을 지원하는 라이브러리 |
GGUF 자체는 4bit를 뜻하지 않는다. GGUF 안에는 여러 데이터 형식의 텐서를 저장할 수 있다. GGUF 형식 명세
Q4_K_M도 모든 텐서가 정확히 4bit라는 뜻으로 읽으면 안 된다. 텐서별 형식과 부가 정보 때문에 전체 평균 비트 수와 파일 크기가 단순 계산값과 다를 수 있다. 양자화 프리셋은 사용하려는 llama.cpp 버전의 지원 항목과 모델 설명을 함께 확인한다. llama.cpp 양자화 도구 문서
모델 파일을 고를 때는 다음 순서로 확인하면 된다.
- 원본 모델과 버전이 무엇인지 확인한다.
- 실행 엔진이 해당 모델 구조와 양자화 형식을 지원하는지 확인한다.
- 가중치 비트 수, 파일 크기, 양자화 방법을 확인한다.
- 실제 업무 입력으로 품질과 속도를 비교한다.
5. 4bit로 줄이면 무조건 빨라질까?
메모리를 덜 쓴다는 것과 응답이 빨라진다는 것은 별도로 판단해야 한다.
읽어야 할 가중치가 줄면 메모리 전송 부담이 감소한다. 메모리 대역폭이 병목인 경우에는 속도 향상으로 이어질 수 있다. 반면 압축된 값을 풀거나 정밀도를 변환하는 처리도 필요하다. 하드웨어와 커널이 해당 형식을 효율적으로 지원하는지가 중요하다. 양자화와 연산 비용
비교 상황도 구분해야 한다.
| 비교 상황 | 해석할 부분 |
|---|---|
| 원본은 CPU로 일부 오프로딩, 양자화본은 GPU에 모두 적재 | 전송 경로와 배치가 달라진 효과까지 포함 |
| 둘 다 GPU에 적재, 한 요청씩 처리 | 메모리 전송과 변환 비용 등을 비교 |
| 여러 요청을 동시에 처리 | 배치 크기·캐시·스케줄링까지 영향을 받음 |
첫 토큰까지 걸리는 시간과 이후 토큰 생성 속도를 각각 기록하면 어느 단계가 달라졌는지 파악하기 쉽다. GPU 이름과 모델 크기만 같게 맞추고 나머지 설정이 다르면 양자화 효과만 비교한 실험이 되지 않는다.
6. 답변 품질은 무엇으로 비교할까?
양자화로 생긴 수치 오차가 실제 업무 답변에 얼마나 영향을 주는지는 직접 확인해야 한다. 몇 개의 자연스러운 답변만으로 전체 품질을 판단하기는 어렵다.
아래는 업무용 모델을 비교할 때 사용할 수 있는 평가 항목 예시다. 실제 실험 결과는 아니다.
| 업무 | 확인할 항목 |
|---|---|
| 문서 요약 | 핵심 조건과 예외를 빠뜨리지 않는가 |
| 정보 추출 | 날짜·금액·식별자를 원문대로 반환하는가 |
| 분류 | 정답이 있는 평가 데이터에서 정확도가 유지되는가 |
| 코드 작성 | 생성된 코드가 테스트를 통과하는가 |
| Tool Calling | 적절한 Tool을 선택하고 올바른 인자를 만드는가 |
| 구조화된 출력 | JSON 스키마를 지키며 값도 맞는가 |
비교할 때는 원본 모델 버전, 프롬프트, 채팅 템플릿, 입력·출력 길이, 생성 설정을 맞춘다. 정밀도와 무관한 설정 차이로 답변이 달라지지 않도록 하기 위해서다.
검토용 결과표는 다음처럼 준비할 수 있다.
| 후보 | 최대 메모리 | 첫 토큰 지연 | 생성 처리량 | 업무 평가 점수 |
|---|---|---|---|---|
| FP16 / BF16 기준 모델 | 측정 | 측정 | 측정 | 평가 |
| 같은 모델의 8bit 버전 | 측정 | 측정 | 측정 | 평가 |
| 같은 모델의 4bit 버전 | 측정 | 측정 | 측정 | 평가 |
메모리 때문에 기준 모델을 같은 장비에 올릴 수 없다면, 그 제한을 기록하고 별도 환경에서 얻은 품질 기준과 비교한다. 다른 장비의 속도 수치를 양자화만의 효과로 해석하지 않는다.
7. 자주 혼동하는 세 가지
가중치 4bit와 KV Cache 4bit는 별개다
가중치를 양자화해도 KV Cache는 다른 형식으로 유지될 수 있다. 긴 입력이나 동시 요청이 많을 때는 가중치 외에 캐시가 차지하는 메모리도 확인해야 한다. 캐시 양자화 역시 엔진의 지원과 성능 영향을 따로 살펴본다. KV Cache 전략 문서
양자화와 작은 모델 선택은 다른 결정이다
큰 모델의 4bit 버전과 작은 모델의 BF16 버전은 파라미터 수, 학습 내용, 실행 비용이 모두 다르다. 어느 쪽이 더 좋은지는 사용할 업무와 장비에서 비교해야 한다. 파일 크기가 비슷하다는 이유만으로 품질이나 속도가 같다고 볼 수는 없다.
QLoRA는 4bit 추론의 다른 이름이 아니다
QLoRA는 고정된 4bit 양자화 기반 모델을 사용하면서 저랭크 어댑터를 학습하는 파인튜닝 접근이다. 양자화된 모델을 내려받아 추론만 하는 것과 구분한다. QLoRA 논문
모델을 선택할 때 가져갈 기준
양자화는 제한된 메모리에서 모델을 활용할 수 있는 선택지를 넓혀준다. 먼저 엔진과 하드웨어가 지원하는 후보를 고르고, 필요한 Context와 동시 요청을 감당하는지 확인한다. 그다음 업무 품질과 응답 속도를 비교한다.
결국 선택 기준은 가장 작은 파일이 아니라, 주어진 자원 안에서 필요한 품질과 속도를 만족하는 모델 구성이다. GPU 수량까지 고민하고 있다면 GPU 메모리와 서비스 부하 산정을 함께 살펴보면 연결해서 이해하기 좋다.