AI 모델의 몸무게(용량)를 줄이는 기술, 양자화!
원래 AI는 아주 정밀한 소수점 숫자(FP32, 32비트)로 계산하는데, 이걸 정수(Integer)로 대충(?) 퉁쳐서 계산하는 방식입니다.
그중에서도 8비트로 줄이냐(INT8), **4비트로 더 줄이냐(INT4)**가 요즘 핫한 주제죠! 🔥
1️⃣ INT8 (8-bit Integer): "국민 경량화 옵션" 🥓
숫자 하나를 표현하는 데 **8개의 비트(0 또는 1)**를 사용합니다.
- 표현 가능한 수의 개수: $2^8 = 256$개 🔢
- 범위: -128 ~ 127
- 특징:
- 안정성 갑: 원래 모델(FP32/FP16)과 비교했을 때 성능(정확도) 저하가 거의 없습니다. 👍
- 표준: 대부분의 하드웨어(CPU, GPU, 모바일 NPU)가 INT8 연산을 아주 잘 지원해요.
- 용량: 원래(FP32) 대비 1/4, FP16 대비 1/2로 줄어듭니다.
2️⃣ INT4 (4-bit Integer): "극한의 다이어트" 🥗
숫자 하나를 고작 4개의 비트로 표현합니다. 이게 가능해? 싶을 정도죠!
- 표현 가능한 수의 개수: $2^4 = 16$개 😱 (숫자를 딱 16가지 종류로만 구분!)
- 범위: -8 ~ 7
- 특징:
- 초고효율: 용량이 INT8의 절반입니다. 메모리 대역폭 문제 해결사! 🚀
- 정확도 손실 위험: 표현할 수 있는 숫자가 너무 적어서, 그냥 변환하면 멍청해질 수 있어요. 🤪
- 기술 필요: 그래서 GPTQ, AWQ, QLoRA 같은 고급 보정 기술이 꼭 같이 쓰여야 성능을 유지할 수 있습니다.
⚔️ 한눈에 보는 비교 (VS)
| 구분 | FP16 (원본) 💎 | INT8 (적당함) 🥓 | INT4 (가벼움) 🪶 |
| 비트 수 | 16 bit | 8 bit | 4 bit |
| 표현 단계 | 65,536개 | 256개 | 16개 |
| 모델 용량 | 100% (기준) | 50% | 25% |
| 정확도 | 최상 | 거의 동일함 (99%) | 살짝 떨어짐 (95~98%) |
| 필요 VRAM | 큼 (서버급 GPU) | 보통 | 작음 (일반 GPU 가능) |
예시: Llama-3-70B 모델을 돌리려면?
- FP16: 약 140GB VRAM 필요 (A100 여러 장 필요 💸)
- INT4: 약 35GB VRAM 필요 (RTX 3090/4090 2장이나 Mac Studio로 가능! 🏠)
💡 쉽고 정확한 비유: "화가와 붓" 🎨🖌️
AI 모델이 그림을 그리는 화가라고 생각해 보세요.
- FP32 (원본) 👉 "1600만 컬러 팔레트" 🌈
- : 세상의 모든 미세한 색깔을 다 써서 그림을 그려요. 엄청 정밀하지만, 물감 통이 너무 커서 들고 다닐 수가 없어요.
- INT8 👉 "256색 색연필 세트" 🖍️
- : 미세한 그라데이션은 좀 어렵지만, 빨강, 파랑, 노랑 등 웬만한 색은 다 있어서 그림 퀄리티가 거의 똑같아 보여요.
- INT4 👉 "16색 크레파스" 🖍️ (유치원용)
- 하지만! 화가 실력이 엄청 좋아서(GPTQ/AWQ 기술), 크레파스 16개만 가지고도 명화를 그려내는 경지에 이른 상태입니다.
- : 색깔이 16개밖에 없어요! 😱 "연한 살구색" 같은 건 없어서 그냥 "주황색"으로 칠해야 해요.
'AI 엔지니어준비' 카테고리의 다른 글
| PyTorch 모델 양자화 실습 (1) | 2026.01.24 |
|---|---|
| 🧩 PyTorch로 배우는 양자화: QuantizableCNN 완전 정복! (0) | 2026.01.23 |
| (PyTorch/TF)도 triton을 사용하면성능이 올라가나? (0) | 2026.01.20 |
| 🔱 Streamlit + FastAPI + Triton: 고성능 AI 서빙 아키텍처 설계 🏛️🚀 (0) | 2026.01.20 |
| 🕸️ Docker Network: 컨테이너들의 소통 창구! 🗣️ (1) | 2026.01.20 |