Transformers documentation

VPTQ

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