Hugging Face 4비트 양자화 및 QLoRA 출시

TL;DR

Hugging Face는 4비트 양자화(bitsandbytes)와 QLoRA 파인튜닝 기법을 통합하여 대부분의 Transformer 모델을 단일 소비자 등급 GPU에서 최소 메모리 오버헤드로 실행하고 적응시킬 수 있게 했습니다.

4비트 양자화 개요

  • 4비트 양자화는 모델 가중치를 4비트로 압축하면서 연산은 더 높은 정밀도(보통 bfloat16 또는 float16)로 유지합니다.
  • bitsandbytes 라이브러리는 두 가지 4비트 포맷을 제공합니다: NF4(Normalized Float‑4, 기본값)와 FP4(원시 4비트 부동소수점). NF4가 더 높은 정확도를 위해 권장됩니다.
  • 이중 양자화(bnb_4bit_use_double_quant=True)는 두 번째 양자화 단계를 추가하여 파라미터당 약 0.4비트를 절감합니다.
  • 양자화된 가중치는 4비트로 저장되지만 행렬 곱셈은 16비트 또는 32비트로 수행되므로 특수 GPU 하드웨어가 필요하지 않으며 CUDA ≥ 11.2만 있으면 됩니다.

QLoRA: 양자화 모델의 효율적인 파인튜닝

  • QLoRA는 4비트 양자화된 사전학습 모델을 고정하고 Low‑Rank Adapters(LoRA)를 유일한 학습 가능한 파라미터로 삽입합니다.
  • 학습 중에는 그래디언트가 고정된 4비트 모델을 통해 LoRA 레이어로 흐르고, 해당 레이어는 16비트 bfloat16으로 업데이트됩니다.
  • 메모리 사용량이 크게 감소하여 65 B 파라미터 모델을 단일 48 GB GPU에서 전체 16비트 성능과 동일하게 파인튜닝할 수 있습니다.
  • 논문에서는 메모리 급증을 최소화하기 위해 NormalFloat‑4 (NF4), 이중 양자화, 페이지 기반 옵티마이저를 소개합니다.
  • 결과적으로 Guanaco 모델군은 단일 GPU에서 24시간 파인튜닝 후 ChatGPT의 Vicuna 벤치마크 점수의 99.3 %에 도달합니다.

지원되는 모델 및 모달리티

  • acceleratedevice_map 인자로 로드할 수 있는 모든 모델은 4비트로 양자화할 수 있습니다.
  • 지원되는 아키텍처(출시 시점)는 LLaMA, OPT, GPT‑Neo, GPT‑NeoX, BLOOM, CodeGen, 비전 모델(예: BLIP‑2, ViT) 등이며 전체 목록은 블로그 게시물에 있습니다.
  • 이 접근법은 텍스트, 비전, 멀티모달 모델에 모두 적용됩니다.

빠른 시작 가이드

pip install -U bitsandbytes
pip install -U git+https://github.com/huggingface/transformers.git
pip install -U git+https://github.com/huggingface/peft.git
pip install -U git+https://github.com/huggingface/accelerate.git
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch

config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",          # NF4 quantization
    bnb_4bit_use_double_quant=True,      # nested quantization
    bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(
    "facebook/opt-350m",
    quantization_config=config,
    device_map="auto"
)
  • load_in_4bit=True(또는 위에 보여진 BitsAndBytesConfig)를 사용하여 모델을 로드합니다.
  • 로드 후 수동으로 디바이스를 지정하지 마세요; device_map이 이를 처리합니다.
  • 더 빠른 학습을 위해 bnb_4bit_compute_dtype를 조정하세요(예: torch.bfloat16).

QLoRA로 훈련하기

  • PEFT 라이브러리를 설치하고 고정된 4비트 모델 위에 LoRA 어댑터를 사용합니다.
  • Hugging Face가 제공하는 예제 노트북은 무료 Google Colab 인스턴스에서 GPT‑Neo‑X(20 B)를 파인튜닝하는 방법을 보여줍니다.
  • 벤치마킹에는 TRL 라이브러리의 SFTTrainer를 사용했으며, 스크립트는 연결된 GitHub gist에서 확인할 수 있습니다.

벤치마크 및 메모리 영향

모델 FP16 크기 GPU (VRAM) 양자화 연산 dtype Gradient 체크포인팅 시퀀스 길이 OOM?
LLaMA‑7B 14 GB 1 × T4 (16 GB) 4‑bit NF4 + bfloat16 bfloat16 No 512 ✅ OOM 없음
LLaMA‑7B 14 GB 1 × T4 (16 GB) 4‑bit NF4 + bfloat16 bfloat16 Yes 1024 ✅ OOM 없음
LLaMA‑13B 27 GB 1 × T4 (16 GB) 4‑bit NF4 + fp16 fp16 Yes 512 ✅ OOM 없음
LLaMA‑13B 27 GB 1 × T4 (16 GB) 4‑bit NF4 + fp16 fp16 Yes + Nested Quant 1024 ✅ OOM 없음
  • 이 표는 이중 양자화와 선택적 Gradient 체크포인팅을 적용한 4‑bit NF4가 8‑bit 또는 FP16 기준에서 발생하는 메모리 초과(OOM) 오류를 방지한다는 것을 보여줍니다.

자주 묻는 질문

  • 하드웨어 요구사항 – CUDA 호환 GPU만 필요하며, 4‑bit 추론에 대한 CPU 지원은 없습니다.
  • 모델 지원acceleratedevice_map과 호환되는 모든 아키텍처를 양자화할 수 있습니다.
  • 훈련 – 순수 4‑bit 훈련은 지원되지 않으며, 파인튜닝은 QLoRA 논문에서 보여준 바와 같이 LoRA와 같은 PEFT 방식을 사용해야 합니다.
  • 사용 사례 – 단일 4‑bit 기반 모델이 저사양 하드웨어에서도 여러 어댑터(보상 모델, 정책 등)를 호스팅할 수 있게 하여 RLHF 파이프라인을 가능하게 합니다.

리소스

시사점

  • 추론 및 어댑터 파인튜닝에 필요한 하드웨어 요구사항을 낮춤으로써 대형 언어 모델에 대한 접근성을 민주화합니다.
  • 대규모 GPU 클러스터가 없는 연구 그룹도 30 B 이상 모델을 실험할 수 있는 길을 엽니다.
  • 소비자 기기나 저비용 클라우드 인스턴스에 강력한 챗봇을 배포할 실용적인 경로를 제공합니다.

감사의 말: 이번 릴리스는 워싱턴 대학교 팀, Pedro Cuenca(리뷰), Olivier Dehaene, Omar Sanseviero의 통합 지원에 대한 기여를 인정합니다.


SUMMARY: Hugging Face는 bitsandbytes를 통한 4비트 양자화 지원과 QLoRA 방식을 발표하여, 소비자용 GPU에서 대형 언어 모델의 추론 및 어댑터 파인튜닝을 가능하게 했습니다.

TITLE: Hugging Face 4비트 양자화 및 QLoRA 출시

Sources