Transformers documentation

VPTQ

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VPTQ

Vector Post-Training Quantization (VPTQ)는 벡터 양자화를 활용하여 LLM을 극도로 낮은 비트 폭(<2-bit)으로 양자화하는 Post-Training Quantization (PTQ) 방법입니다. VPTQ는 재학습 없이 70B, 심지어 405B 모델까지 1~2비트로 압축하면서도 높은 수준의 정확도를 유지할 수 있습니다. 405B 모델을 양자화하는 데 약 17시간이 소요되는 경량 양자화 알고리즘입니다. VPTQ는 낮은 디코딩 오버헤드와 높은 처리량, 그리고 Time To First Token (TTFT)를 특징으로 하는 민첩한 양자화 추론을 제공합니다.

NVIDIA 및 AMD GPU에서 추론을 위한 효율적인 커널을 제공하는 VPTQ를 설치하려면 아래 명령을 실행하세요.

pip install vptq

VPTQ-community는 VPTQ 양자화 모델 모음을 제공합니다. 모델 이름에는 비트폭에 대한 정보가 포함되어 있습니다(쿡북, 매개변수, 패딩 오버헤드는 제외). 예로 [Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft] 모델을 생각해 보겠습니다.

  • 모델 이름은 Meta-Llama-3.1-70B-Instruct입니다.
  • 65536(2^16)로 주어진 값이 중심점(centroid)의 개수입니다.
  • 잔여 중심점의 수는 256(2^8)로 주어집니다.

동등한 비트 폭 계산은 다음과 같습니다.

  • index: log2(65536) = 16 / 8 = 2비트
  • residual index: log2(256) = 8 / 8 = 1-bit
  • 전체 비트 폭: 2 + 1 = 3비트

여기서 모델 크기를 추정하기 위해 70B * 3-bits / 8-bits/byte를 계산하면 총 26.25GB가 됩니다.

from_pretrained()로 VPTQ 양자화 모델을 로드합니다.

from transformers import AutoTokenizer, AutoModelForCausalLM

quantized_model = AutoModelForCausalLM.from_pretrained(
    "VPTQ-community/Meta-Llama-3.1-70B-Instruct-v16-k65536-65536-woft",
    dtype="auto", 
    device_map="auto"
)

자체 모델을 양자화하려면 VPTQ Quantization Algorithm Tutorial 튜토리얼을 참고하세요.

벤치마크

VPTQ는 다양한 크기의 모델에서 양자화 오버헤드를 낮추면서 더 높은 정확도와 처리량을 달성합니다. 아래 실험 결과는 참고용이며, VPTQ는 적절한 파라미터 하에서 특히 모델 정확도와 추론 속도 측면에서 더 나은 결과를 얻을 수 있습니다.

모델bitwidthW2↓C4↓AvgQA↑tok/s↑mem(GB)비용/h↓
LLaMA-2 7B2.026.138.0758.239.92.282
2.265.957.8759.435.72.483.1
LLaMA-2 13B2.025.327.1562.426.94.033.2
2.185.287.0463.118.54.313.6
LLaMA-2 70B2.073.935.7268.69.719.5419
2.113.925.7168.79.720.0119

리소스

VPTQ Online Demo Space에서 VPTQ 데모 예시를 확인하거나, VPTQ 추론 notebook을 실행해 보세요.

자세한 내용은 VPTQ 논문을 참고하세요.

Update on GitHub