양자화 방법 선택하기

양자화 방법 선택하기 (Selecting a quantization method)

Transformers에는 추론과 미세 조정을 위한 다양한 양자화 방법이 있습니다. 이 가이드는 사용 사례에 따라 가장 일반적이고 프로덕션 준비가 된 양자화 기법을 선택하는 데 도움을 주고, 각 기법의 장단점을 제시합니다.

출처: 문서

본문

Transformers에는 추론과 미세 조정을 위한 다양한 양자화 방법이 있습니다. 이 가이드는 사용 사례에 따라 가장 일반적이고 프로덕션 준비가 된 양자화 기법을 선택하는 데 도움을 주고, 각 기법의 장단점을 제시합니다.

지원되는 모든 방법과 기능에 대한 종합적인 개요는 Overview의 표를 참고하세요.

Inference

추론에는 아래 양자화 방법을 고려하세요.

quantization method use case
bitsandbytes NVIDIA 및 Intel GPU에서 사용 편의성과 QLoRA 미세 조정
compressed-tensors 특정 양자화 포맷(FP8) 로드
GPTQModel or AWQ 사전 캘리브레이션으로 좋은 4비트 정확도
HQQ 캘리브레이션 없는 빠른 즉석 양자화
SINQ 캘리브레이션 없는 초고속이면서 고품질의 즉석 양자화
torchao 유연성과 torch.compile을 통한 빠른 추론

No Calibration Required (On-the-fly Quantization)

이 방법들은 별도의 캘리브레이션 데이터셋이나 단계가 필요 없어 일반적으로 사용하기 쉽습니다.

bitsandbytes

Pros Cons
매우 간단하며, 추론에 캘리브레이션 데이터셋이 필요 없음. 주로 NVIDIA GPU(CUDA)에 최적화됨.
커뮤니티 지원이 좋고 널리 채택됨. 추론 속도 향상이 보장되지는 않음.

자세한 내용은 bitsandbytes 문서를 참고하세요.

HQQ (Half-Quadratic Quantization)

Pros Cons
빠른 양자화 과정, 캘리브레이션 데이터 불필요. 4비트 미만의 비트 깊이에서는 정확도가 크게 저하될 수 있음.
빠른 추론을 위한 여러 백엔드. torch.compile이나 백엔드를 사용하지 않으면 추론 속도가 다른 것과 같지 않을 수 있음.
torch.compile과 호환.
광범위한 비트 깊이(8, 4, 3, 2, 1비트) 지원.

자세한 내용은 HQQ 문서를 참고하세요.

SINQ

Pros Cons
캘리브레이션 데이터 없이 초고속이면서 고품질 양자화 과정. <=2비트 비트 폭에서는 정확도가 크게 저하될 수 있음.
더 빠른 추론을 위한 GemLite 백엔드. 3비트 모델에서는 추론이 더 느림(gemlite 커널 없음)
광범위한 비트 폭(8, 4, 3, 2비트) 지원.

자세한 내용은 SINQ 문서를 참고하세요.

torchao

Pros Cons
잠재적 속도 향상을 위한 torch.compile과의 강력한 통합. 비교적 새로운 라이브러리로 생태계가 아직 발전 중.
괜찮은 CPU 양자화 지원 제공. 성능이 torch.compile이 잘 동작하는지에 달려 있음.
양자화 방식(int8, int4, fp8)의 유연성. 4비트 양자화(int4wo)는 정확도에서 GPTQ/AWQ와 같지 않을 수 있음.

자세한 내용은 torchao 문서를 참고하세요.

Calibration-based Quantization

이 방법들은 더 높은 정확도를 위해 데이터셋을 사용한 사전 캘리브레이션 단계가 필요합니다.

GPTQ/GPTQModel

8B 모델의 캘리브레이션은 A100 GPU 1대로 약 20분이 걸립니다.

Pros Cons
종종 높은 정확도를 달성. 캘리브레이션 데이터셋과 별도의 캘리브레이션 단계 필요.
추론 속도 향상으로 이어질 수 있음. 캘리브레이션 데이터에 과적합될 가능성 있음.
Hugging Face Hub에 사전 양자화된 GPTQ 모델이 많음.

자세한 내용은 GPTQ 문서를 참고하세요.

AWQ (Activation-aware Weight Quantization)

8B 모델의 캘리브레이션은 A100 GPU 1대로 약 10분이 걸립니다.

Pros Cons
4비트에서 종종 높은 정확도 달성. (특정 작업에서 GPTQ를 능가하기도 함.) 직접 양자화하려면 캘리브레이션 필요.
추론 속도 향상으로 이어질 수 있음.
GPTQ보다 캘리브레이션 시간이 짧음.
Hugging Face Hub에 사전 양자화된 AWQ 모델이 많음.

자세한 내용은 AWQ 문서를 참고하세요.

Loading Specific Formats

compressed-tensors

Pros Cons
FP8 같은 유연한 포맷을 지원. 주로 사전 양자화된 모델을 로드하기 위한 것.
NVIDIA(SM89+) 및 Intel XPU에서 FP8 커널 가속.

자세한 내용은 compressed-tensors 문서를 참고하세요.

Fine-tuning

메모리를 절약하기 위해 미세 조정 중에는 아래 양자화 방법을 고려하세요.

bitsandbytes[[training]]

  • 설명: PEFT를 통한 QLoRA 미세 조정의 표준 방법.
  • 장점: 소비자 GPU에서 큰 모델의 미세 조정을 가능하게 함; PEFT에 대해 널리 지원되고 문서화됨.
  • 단점: 주로 NVIDIA GPU용.

다른 방법들도 PEFT 호환성을 제공하지만, QLoRA에 있어서 bitsandbytes가 가장 널리 확립되고 간단한 경로입니다.

자세한 내용은 bitsandbytes 문서와 PEFT Docs를 참고하세요.

Research

AQLM, SpQR, VPTQ, HIGGS 등의 방법은 압축(<2비트)의 한계를 넓히거나 새로운 기법을 탐구합니다.

  • 다음과 같은 경우 이를 고려하세요:
    • 극단적인 압축(4비트 미만)이 필요할 때.
    • 연구를 수행 중이거나 해당 논문의 최신 수준 결과가 필요할 때.
    • 잠재적으로 복잡한 양자화 절차에 충분한 컴퓨팅 자원이 있을 때. 프로덕션에서 사용하기 전에 각 방법의 문서와 관련 논문을 신중히 검토할 것을 권장합니다.

Benchmark Comparison

서로 다른 양자화 방법의 정량적 비교를 위해 Llama 3.1 8B와 70B 모델에서 여러 인기 기법을 벤치마크했습니다. 아래 표는 정확도(높을수록 좋음), 초당 토큰으로 측정한 추론 처리량(높을수록 좋음), GB로 측정한 최대 VRAM 사용량(낮을수록 좋음), 그리고 양자화 시간에 대한 결과를 보여줍니다.

성능 지표는 Llama 3.1 70B(bfloat16)의 경우 NVIDIA A100 80GB GPU 2대, FP8 방법의 경우 NVIDIA H100 80GB GPU 1대, 그 외 모든 방법의 경우 NVIDIA A100 80GB GPU 1대로 측정했습니다. 처리량은 배치 크기 1과 64개 토큰 생성으로 측정했습니다. 해당되고 지원되는 경우 torch.compile과 Marlin 커널 결과가 포함됩니다.