양자화 (int4 메모리 절감)

양자화 (int4 메모리 절감)

큰 모델은 파라미터를 낮은 정밀도로 표현하면 메모리 부담을 크게 줄일 수 있어요. SigLIP도 bitsandbytes로 int4 양자화를 적용할 수 있어요.

bitsandbytes int4 양자화

import requests
import torch
from PIL import Image

from transformers import AutoModel, AutoProcessor, BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(load_in_4bit=True)
model = AutoModel.from_pretrained("google/siglip-base-patch16-224", quantization_config=bnb_config, device_map="auto", attn_implementation="sdpa")
processor = AutoProcessor.from_pretrained("google/siglip-base-patch16-224")

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)

BitsAndBytesConfig(load_in_4bit=True)를 만들어 quantization_config로 넘기면, 가중치를 int4로 양자화한 채 모델을 로드해요. 이렇게 하면 동일 모델을 더 적은 메모리로 다룰 수 있죠.

양자화 백엔드

Transformers의 Quantization 개요 문서를 보면 사용 가능한 여러 양자화 백엔드(bitsandbytes 외 GPTQ, AWQ 등)를 확인할 수 있어요. 상황에 맞는 백엔드를 고르면 돼요.

더 알아보기