양자화 가이드 (8-bit·4-bit 로드)
양자화 가이드 (8-bit·4-bit 로드)
bitsandbytes의 양자화는 실제로는 하드웨어에 최적화된 양자화(dynamic quantization)를 사용하면서 메모리 효율을 극대화하는 방식이에요. 단순히 저비트로 저장하는 게 아니라, 연산 시점에 효율을 고려해요.
구체적인 엔진 설정은 실제 하드웨어·모델·목표에 따라 달라질 수 있어서, 도입 전 현재 환경과 라이브러리 버전의 공식 가이드를 확인하는 게 좋아요.
출처: https://huggingface.co/docs/bitsandbytes/main/en/quantization
8-bit로 모델 로드
Transformers 통합을 쓰면 BitsAndBytesConfig로 로드 방식을 제어할 수 있어요.
from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
load_in_8bit=True, # 8-bit 로드
)
4-bit로 모델 로드 (QLoRA용)
import torch
from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
load_in_4bit— 4-bit 로드.bnb_4bit_quant_type="nf4"— 정규분포 기반(normal float) 4-bit.bnb_4bit_use_double_quant— 이미 양자화된 가중치를 다시 양자화하는 중첩 방식.bnb_4bit_compute_dtype— 연산 시 자료형(고속용 bfloat16).
활용 흐름
- 모델을 4-bit/8-bit로 로드.
- 필요한 경우 PEFT LoRA 어댑터를 붙여 QLoRA 학습.
- 추론·학습 시 메모리 사용량 관찰.