bitsandbytes
bitsandbytes는 모델을 8비트 및 4비트로 양자화하는 가장 쉬운 방법이다.
1. 8bit 양자화
fp16의 이상치와 int8의 비이상치를 곱한 후, 비이상치 값을 fp16으로 다시 변환하고, 이들을 합산하여 fp16으로 가중치를 반환한다. 이렇게 하면 이상치 값이 모델 성능에 미치는 저하 효과를 줄일 수 있다.
2. 4bit 양자화
모델을 더욱 압축하며, QLoRA와 함께 사용하여 양자화된 대규모 언어 모델을 미세 조정하는데 흔히 사용되며, 모델 파라미터와 메모리 사용량을 크게 줄인다.
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.float16,
)
양자화 타입(bnb_4bit_quant_type)의 예로는 fp4, nf4가 있다.
bnb_4bit_use_double_quant
양자화된 데이터의 양자화 상수를 추가로 양자화하여 메모리 사용량을 줄인다. 이를 통해 파라미터당 평균 0.4비트를 추가로 절약할 수 있다.