bitsandbytes는 bitsandbytes 재단에서 관리하는 오픈 소스 Python 라이브러리로, k비트 양자화 기술을 통해 대규모 언어 모델에 대한 접근성과 배포 용이성을 높이는 데 특화되어 있습니다. 이 프로젝트는 CUDA 사용자 정의 함수를 기반으로 하는 경량 Python 래퍼이며, 특히 8비트 옵티마이저, 행렬 곱셈(LLM.int8()), 8비트 및 4비트 양자화 기능에 중점을 둡니다.
프로젝트 주소: https://github.com/bitsandbytes-foundation/bitsandbytes
공식 문서: https://huggingface.co/docs/bitsandbytes/main
bitsandbytes.optim
모듈을 통해 다양한 8비트 옵티마이저를 제공합니다.bitsandbytes는 양자화 기술을 통해 모델 메모리 점유율을 크게 줄입니다. 예를 들어, 10억 개의 파라미터를 가진 모델의 경우 기존 Adam 옵티마이저는 옵티마이저 상태를 저장하는 데 8GB의 메모리가 필요하지만, 8비트 양자화를 사용하면 이러한 요구 사항을 크게 줄일 수 있습니다.
프로젝트는 더 많은 하드웨어 백엔드를 지원하기 위해 노력하고 있습니다.
bitsandbytes의 4비트 양자화 기술은 QLoRA(Quantized Low-Rank Adaptation)와 함께 사용되어 다음과 같은 효과를 얻습니다.
bitsandbytes는 블록 단위 동적 양자화 기술을 채택하여 가중치 행렬을 작은 블록으로 분할하고 각 블록을 독립적으로 양자화합니다. 이 방법은 정확도를 유지하면서 효율적인 압축을 구현합니다.
이는 bitsandbytes의 핵심 알고리즘 중 하나로, 대규모 언어 모델을 위해 특별히 설계된 8비트 행렬 곱셈 구현으로 모델 성능을 유지하면서 메모리 사용량을 크게 줄일 수 있습니다.
특정 핵심 레이어(예: 특히 민감한 주의 레이어)의 경우 라이브러리는 혼합 정밀도 처리를 지원하여 양자화와 전체 정밀도 사이에서 최적의 균형을 찾습니다.
pip install bitsandbytes
import bitsandbytes as bnb
from transformers import AutoModelForCausalLM
# 4비트 양자화 모델 로드
model = AutoModelForCausalLM.from_pretrained(
"model_name",
load_in_4bit=True,
device_map="auto"
)
프로젝트는 bitsandbytes 재단에서 유지 관리하며 여러 스폰서의 지원을 받아 프로젝트의 지속적인 발전과 개선을 보장합니다.
bitsandbytes는 AI 분야의 중요한 도구로, 고급 양자화 기술을 통해 대규모 언어 모델의 배포 및 사용을 더욱 쉽고 경제적으로 만듭니다. 연구원, 개발자 또는 기업 사용자 모두 이 라이브러리를 통해 리소스가 제한된 환경에서 최첨단 AI 모델을 효율적으로 사용할 수 있습니다. 오픈 소스 특성과 활발한 커뮤니티 지원은 양자화 기술 분야에서 최고의 솔루션 중 하나로 자리매김하게 합니다.