bitsandbytes 라이브러리 개요

bitsandbytes 라이브러리 개요

bitsandbytes는 bNB(Bit & Bytes) 라는 이름에서 유래한 PyTorch용 k-bit 양자화 라이브러리예요. 대형 언어 모델을 싸고 가볍게 돌리기 위한 핵심 도구로 자리 잡았어요.

핵심은 "몇 비트로 표현하냐"를 조절해 메모리를 아끼는 거예요. 추론·학습 양쪽에서 큰 폭의 메모리 절감을 얻을 수 있고, MIT 라이선스라 자유롭게 쓰고 수정할 수 있어요.

출처: https://huggingface.co/docs/bitsandbytes/main/en/index

세 가지 핵심 기능

1. 8-bit Optimizers (8-bit 옵티마이저)

블록 단위(block-wise) 양자화로 32-bit 성능을 유지하면서 메모리 비용은 아주 작게 유지해요. AdamW·Adam·Lion 등을 8-bit로 로드할 수 있고, 큰 배치·큰 모델 학습을 저메모리로 가능하게 해요.

2. LLM.int8() (8-bit 양자화)

대형 언어 모델 추론을 필요한 메모리의 절반만 쓰고 성능 저하 없이 수행해요. 벡터 단위 양자화로 대부분 피처를 8-bit로 바꾸고, outlier는 별도로 16-bit 행렬 곱으로 처리해 정확도를 지켜요.

3. QLoRA / 4-bit 양자화

4-bit로 모델을 양자화한 뒤 그 위에 학습 가능한 저랭크 어댑터(LoRA) 가중치를 끼워 넣어 학습을 가능하게 해요. 성능을 해치지 않으면서 여러 메모리 절감 기법을 결합한 방식이에요.

더 알아보기