Hugging Face AutoGPTQ 및 Transformers 통합

Hugging Face는 AutoGPTQ 라이브러리를 Transformers 라이브러리에 통합하여, 사용자가 대규모 언어 모델(LLM)을 8, 4, 3 또는 2비트 정밀도로 양자화하고 실행할 수 있도록 했습니다. 이 통합은 LLM 배포를 위한 하드웨어 요구 사항을 크게 줄여주며, 4비트 양자화 시 정확도 저하를 무시할 수 있는 수준으로 유지하면서 작은 배치 크기에서는 float16 (fp16) 기준과 유사한 추론 속도를 가능하게 합니다.

GPTQ 양자화 기술 개요

GPTQ는 캘리브레이션 데이터셋과 몇 시간의 계산을 사용하여 사전 학습된 모델을 압축하는 사후 학습 양자화(Post-Training Quantization, PTQ) 방법입니다. 학습 중에 발생하는 양자화 인식 학습(Quantization-Aware Training, QAT)과 달리, GPTQ는 비용이 많이 드는 전체 모델 재학습 없이도 거대 모델의 압축을 가능하게 합니다.

혼합 정밀도 스킴

GPTQ는 혼합 int4/fp16 양자화 스킴을 활용합니다. 이 아키텍처에서 가중치(weights)는 int4로 양자화되는 반면, 활성화(activations)는 float16 상태를 유지합니다. 추론 중에 가중치는 GPU 글로벌 메모리가 아닌 연산 유닛 근처의 융합 커널(fused kernel) 내에서 즉석에서 역양자화(dequantized)됩니다. 이는 두 가지 주요 이점을 제공합니다:

  • 메모리 절감: Int4 양자화는 약 4배에 가까운 메모리 절감 효과를 제공합니다.
  • 추론 속도: 낮은 비트 너비의 가중치 덕분에 데이터 통신에 소요되는 시간이 줄어들어 잠재적인 속도 향상을 달성할 수 있습니다.

양자화 알고리즘

GPTQ는 Optimal Brain Quantization (OBQ) 프레임워크를 기반으로 구축되었습니다. 이는 각 레이어의 압축을 원래 가중치 행렬과 양자화된 버전 사이의 평균 제곱 오차(MSE)를 최소화하는 문제로 취급합니다. 채널별 양자화(per-channel quantization)를 채택함으로써, GPTQ는 가중치를 하나씩 양자화하고 나머지 비양자화 가중치를 헤시안 행렬(Hessian matrices)을 사용하여 오차를 보정하며 업데이트합니다.

GPTQ는 이 프로세스를 OBQ보다 훨씬 빠르게 최적화했습니다. 예를 들어, Bloom 모델(176B)은 4 GPU-시간 미만으로 양자화할 수 있는 반면, BERT 모델(336M)은 OBQ를 사용하여 2 GPU-시간이 소요되었습니다.

AutoGPTQ 및 Transformers 통합

AutoGPTQ는 다양한 트랜스포머 아키텍처에 걸쳐 폭넓은 범위를 제공하는 라이브러리로, 아키텍처 특정 구현보다 더 다재다능한 선택지입니다. Hugging Face는 LLM 양자화를 위한 네이티브 Transformers API를 제공하기 위해 Optimum 라이브러리를 통해 AutoGPTQ API의 최소화된 버전을 통합했습니다.

네이티브 지원 및 사용법

사용자는 이제 AutoGPTQoptimum을 설치하여 AutoModelForCausalLM을 통해 GPTQ 모델을 직접 실행할 수 있습니다. 이 통합은 Nvidia GPU와 RoCm 기반의 AMD GPU를 모두 지원합니다.

이 통합의 주요 장점은 다음과 같습니다:

  • 직렬화 가능성(Serializability): 양자화된 모델을 Hugging Face Hub에 저장하고 공유할 수 있습니다.
  • 성능: 작은 배치 크기에서 추론 지연 시간이 FP16 추론과 대등합니다.
  • 하드웨어 호환성: RoCm을 통한 AMD GPU에 대한 네이티브 지원.
  • 커널 지원: 광범위한 아키텍처에 걸친 Exllama 커널 지원.

성능 벤치마크

단일 NVIDIA A100-SXM4-80GB GPU(프롬프트 길이 512, 생성 토큰 512, 배치 크기 1)에서 수행된 벤치마크에서 다음과 같은 결과가 관찰되었습니다:

gptq act_order bits group_size kernel Load time (s) Per-token latency (ms) Throughput (tokens/s) Peak memory (MB)
False None None None None 26.0 36.958 27.058 29152.98
True False 4 128 exllama 36.2 33.711 29.663 10484.34
True False 4 128 autogptq-cuda-old 36.2 46.44 21.53 10344.62

배포 및 미세 조정

Text-Generation-Inference (TGI)

프로덕션 서빙을 위한 Text-Generation-Inference (TGI) 라이브러리에 GPTQ 지원이 추가되었습니다. 이를 통해 제한된 하드웨어에서도 매우 큰 모델을 배포할 수 있습니다; 예를 들어, 70B 모델을 이제 단일 A100-80GB GPU에서 서빙할 수 있으며, 이는 fp16 체크포인트로는 불가능한 일입니다.

PEFT를 이용한 미세 조정

양자화된 모델은 표준적인 방법으로는 학습할 수 없지만, 사용자는 PEFT (Parameter-Efficient Fine-Tuning) 라이브러리를 활용하여 고정된(frozen) 양자화 모델 위에 어댑터를 학습시킬 수 있습니다.

현재 한계 및 향후 방향

지원되는 아키텍처

현재 이 통합은 디코더 전용(decoder-only) 또는 인코더 전용(encoder-only) 아키텍처를 가진 대규모 언어 모델(예: Llama, OPT, GPT-Neo, GPT-NeoX)을 지원합니다. 비전, 오디오 및 멀티모달 모델은 아직 지원되지 않습니다.

개선 영역

  • 커널 최적화: Exllama 커널이 사용되고 있지만, Triton 기반 커널이나 MIT Han Lab 또는 Kim et al.의 다른 구현을 통해 추가적인 개선 가능성이 있습니다.
  • 가중치 및 활성화 양자화: GPTQ는 가중치만 양자화합니다. 향후 방향에는 Nvidia Tensor Cores를 통해 정수 산술을 활용할 수 있는 W4A8 양자화 커널을 탐색하는 것이 포함됩니다.
  • 배치 크기 확장성: 더 큰 배치 크기에 따라 효율적으로 확장되는 성능 좋은 W4A16 커널을 설계하는 것이 여전히 과제로 남아 있습니다.

Sources