양자화 가이드 (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).

활용 흐름

  1. 모델을 4-bit/8-bit로 로드.
  2. 필요한 경우 PEFT LoRA 어댑터를 붙여 QLoRA 학습.
  3. 추론·학습 시 메모리 사용량 관찰.

더 알아보기