양자화(Quantization)는 쉽고 강력하지만 만능은 아닙니다. **지식 증류(KD)**나 **가지치기(Pruning)**가 더 좋은 결과를 낸 대표적인 사례와 이유를 알려드릴게요!
1️⃣ 사례 1: 무거운 모델을 가벼운 아키텍처로 바꿀 때 (지식 증류 승! 🏆)
양자화는 모델의 **덩치(구조)**는 그대로 두고 **무게(비트 수)**만 줄이는 기술이에요. 하지만 뚱뚱한 모델을 아무리 압축해도 날씬한 모델을 못 따라갈 때가 있죠.
- 상황: 거대 모델인 BERT-Base (110M 파라미터)를 모바일에서 돌리고 싶음.
- 양자화 접근: BERT를 INT8로 양자화. 용량은 1/4로 줄지만, 연산량 자체는 여전히 많음.
- 지식 증류 접근 (DistilBERT):
- BERT(선생님)의 지식을 DistilBERT(학생, 레이어 수가 절반)에게 가르칩니다.
- 결과: 용량 40% 감소, 속도 60% 향상! 🚀
- 승리 포인트: 단순히 숫자를 줄이는 게 아니라, 모델의 레이어를 덜어내서 연산 횟수 자체를 줄였기 때문에 실질적인 추론 속도는 지식 증류가 훨씬 빠를 수 있습니다.
2️⃣ 사례 2: 하드웨어가 INT8 가속을 지원하지 않을 때 (가지치기 승! ✂️)
오래된 CPU나 특정 임베디드 보드는 INT8 연산 가속기가 없을 수 있어요. 이럴 때 양자화를 하면 오히려 속도가 느려지기도 합니다(변환 비용 발생).
- 상황: 구형 하드웨어에서 추론 속도를 높여야 함.
- 양자화 접근: INT8로 바꿨는데 하드웨어가 지원을 안 해서 다시 FP32로 풀어서 계산함. (더 느려짐 🐢)
- 구조적 가지치기 (Structured Pruning):
- 필터(Channel) 자체를 통째로 잘라냅니다.
- 결과: 채널 수가 64개에서 32개로 줄어듦 -> 행렬 곱셈 자체가 작아짐 -> 순수 연산량이 1/4로 감소!
- 승리 포인트: 하드웨어 특성을 타지 않고, 순수한 수학적 연산량을 줄여서 속도를 높임.
3️⃣ 사례 3: "로또 복권 가설" (The Lottery Ticket Hypothesis) 🎟️
엄청난 희소성(Sparsity)이 필요할 때입니다.
- 상황: 모델 용량을 90% 이상 줄여야 함.
- 양자화 접근: INT4 이하로 내려가면 정확도가 급격히 붕괴됨(Accuracy Drop). 📉
- 가지치기 + 재학습:
- 중요하지 않은 가중치 90%를 0으로 만듦(Pruning) + 다시 학습(Retraining).
- 결과: 10%의 파라미터만 남겼는데도 원본 성능을 거의 유지함.
- 승리 포인트: 양자화로는 도달할 수 없는 극단적인 압축률에서는 가지치기 후 재학습이 정확도 방어에 더 유리합니다.
📊 기술별 장단점 비교표 (Battle Card)
| 특징 | 🧊 양자화 (Quantization) | 🧪 지식 증류 (Distillation) | ✂️ 가지치기 (Pruning) |
| 핵심 원리 | 데이터 정밀도 낮추기 (FP32 -> INT8) | 똑똑한 선생이 멍청한 학생 가르치기 | 불필요한 가지 치기 (0으로 만들기) |
| 모델 구조 | 그대로 유지됨 | 완전히 바꿀 수 있음 (MobileNet 등) | 구조가 듬성듬성해짐 (Sparse) |
| 장점 | 적용이 제일 쉽고 빠름 | 구조 변경을 통한 근본적 속도 향상 | 극한의 용량 압축 가능 |
| 단점 | INT4 이하에서 성능 급락 | 학생 모델을 처음부터 다시 학습해야 함 (오래 걸림) | 하드웨어 가속 받기가 까다로움 |
| 최고의 상황 | 일반적인 배포 상황 | 아키텍처를 경량화 모델로 갈아탈 때 | 메모리가 극도로 부족할 때 |
💡 쉽고 정확한 비유: "책 가방 줄이기" 🎒📚
- 양자화 (Quantization) 👉 "글씨 작게 쓰기" ✍️
- : 책의 내용은 그대로 두고, 글씨 크기만 아주 작게 줄여서 페이지 수를 줄이는 거예요. 내용은 다 있지만, 너무 작게 쓰면(INT4) 읽기가 힘들죠.
- 지식 증류 (Distillation) 👉 "요약 노트 만들기" 📝
- : 서울대생 과외 선생님(Teacher)이 핵심만 뽑아서 얇은 요약 노트(Student)를 만들어 주는 거예요. 책 두께는 1/10인데 시험 점수는 비슷하게 나오죠! (구조적 혁신)
- 가지치기 (Pruning) 👉 "안 읽는 페이지 찢기" 📃✂️
- : 책에서 "서론", "감사의 말", "부록" 처럼 시험에 안 나오는 페이지를 과감하게 찢어버리는 거예요. 가방이 확실히 가벼워지죠!
👑 결론: "사실은 셋 다 섞어 씁니다!" (The Holy Trinity)
현업에서 최고의 성능을 내는 방법은 **"셋 다 섞는 것"**입니다.
**"가지치기(Pruning)"**로 불필요한 연결을 끊고,
**"지식 증류(Distillation)"**로 성능을 복구하면서,
마지막에 **"양자화(Quantization)"**로 포장한다.
'AI 엔지니어준비' 카테고리의 다른 글
| ONNX INT8 양자화 코드 분석하기 (0) | 2026.01.29 |
|---|---|
| BentoML 맛보기! (1) | 2026.01.27 |
| 현업에서 많이 사용하는 양자화 기법에 대해 (0) | 2026.01.24 |
| 성능 보존이 잘된다면 int8, onnx화는 반드시 필요한가? (0) | 2026.01.24 |
| PyTorch 모델 양자화 실습 (1) | 2026.01.24 |