Hugging Face Transformers 양자화 개요

Hugging Face는 Transformers 라이브러리에서 bitsandbytesauto-gptq라는 두 가지 주요 양자화 방식을 기본적으로 지원합니다. 이러한 통합을 통해 사용자는 더 작은 하드웨어에서 대규모 모델을 실행하고 어댑터를 사용하여 매개변수 효율적 미세 조정(PEFT)을 수행할 수 있습니다.

bitsandbytes와 auto-gptq 비교

bitsandbytes와 auto-gptq 중 무엇을 선택할지는 주요 목표가 설정 및 미세 조정의 용이성인지, 아니면 텍스트 생성을 위한 최대 추론 속도인지에 따라 달라집니다.

bitsandbytes: 사용 편의성 및 미세 조정

Bitsandbytes는 접근성과 유연성을 위해 설계되었으며 다음과 같은 몇 가지 주요 장점을 제공합니다:

  • Zero-shot 양자화: 보정(calibration) 데이터셋이 필요하지 않으므로, torch.nn.Linear 모듈을 포함하는 모든 모델은 모델 로드 시 즉시 양자화할 수 있습니다.
  • 교차 모달리티 상호 운용성: 선형 레이어를 대상으로 하므로 Whisper, ViT, Blip2와 같은 모델을 지원하며 다양한 모달리티에서 작동합니다.
  • 어댑터 통합: 양자화된 베이스 모델에서 훈련된 어댑터는 추론 성능 저하 없이 배포를 위해 베이스 모델 또는 역양자화된 모델로 다시 병합될 수 있습니다.

한계: bitsandbytes 4-bit 모델은 텍스트 생성 시 GPTQ보다 느리며, 현재 4-bit 가중치 직렬화를 지원하지 않습니다.

auto-gptq: 최적화된 추론

Auto-gptq는 배포 및 고처리량 텍스트 생성에 최적화되어 있습니다:

  • 생성 속도: GPTQ 양자화 모델은 텍스트 생성 시 bitsandbytes 모델보다 훨씬 빠릅니다.
  • N-bit 지원: 이 알고리즘은 2비트까지 양자화를 지원하지만, 품질을 위한 권장 트레이드오프는 4비트입니다.
  • 직렬화: GPTQ 모델은 모든 비트 수에 대해 직렬화를 지원하여, 사전 양자화된 모델(예: TheBloke의 모델)을 쉽게 로드할 수 있습니다.
  • 하드웨어 지원: AMD GPU에서도 즉시 사용 가능합니다.

한계: GPTQ는 양자화를 위해 보정 데이터셋이 필요하며, 이는 몇 시간(예: 175B 파라미터 모델의 경우 4 GPU 시간)이 걸릴 수 있습니다. 또한, 현재 API는 언어 모델을 위해 특별히 설계되었으며 멀티모달 모델을 기본적으로 지원하지 않습니다.

성능 및 속도 벤치마크

Hugging Face는 NVIDIA A100, T4, Titan RTX GPU에서 meta-llama/Llama-2-7b-hfmeta-llama/Llama-2-13b-hf를 사용하여 벤치마크를 수행했습니다.

추론 및 생성 속도

  • Forward Pass (Prefill): prefill 단계에서 bitsandbytes와 GPTQ는 유사한 성능을 보이지만, 큰 배치 크기에서는 GPTQ가 약간 더 빠릅니다.
  • 텍스트 생성: GPTQ는 다양한 하드웨어(A100, T4, Titan RTX) 및 생성 길이에서 bitsandbytes보다 일관되게 빠릅니다. 배치 크기 4에서 어텐션 캐싱(use_cache=True)을 사용할 경우, GPTQ는 bitsandbytes보다 두 배 더 빠를 수 있습니다.

어댑터 미세 조정 속도

Low Rank Adapters (LoRA)를 사용하여 어댑터를 미세 조정할 때, bitsandbytes가 GPTQ보다 빠릅니다. GPTQ 미세 조정의 경우, 훈련 시 지원되지 않는 exllama 커널을 비활성화해야 함에 유의하십시오.

모델 품질 저하

Open-LLM 리더보드의 벤치마크에 따르면 양자화로 인한 성능 저하는 미미하며, 이러한 저하는 모델의 크기가 클수록 덜 두드러집니다.

Llama-2-7b 성능 (평균 점수):

  • FP16: 54.32
  • bnb-4bit: 53.4
  • GPTQ: 53.23

Llama-2-13b 성능 (평균 점수):

  • FP16: 58.66
  • GPTQ (actorder_True): 58.03
  • GPTQ: 57.56
  • bnb-4bit: 56.9

최적화된 모델을 위한 권장 워크플로우

미세 조정의 유연성과 배포 성능 사이의 최적의 균형을 달성하기 위해 Hugging Face는 다음과 같은 파이프라인을 제안합니다:

  1. bitsandbytes를 사용하여 베이스 모델을 양자화하여 zero-shot 양자화를 수행합니다.
  2. 양자화된 베이스 모델 위에 어댑터를 미세 조정합니다.
  3. 훈련된 어댑터를 베이스 모델 또는 역양자화된 모델에 병합합니다.
  4. 생성 속도를 극대화하기 위해 최종 배포를 위해 GPTQ를 사용하여 결과 병합 모델을 양자화합니다.

Sources