VPTQ

VPTQ

VPTQ(Vector Post-Training Quantization)는 벡터 양자화를 활용해 LLM을 극히 낮은 비트 폭(<2비트)으로 양자화하는 사후 학습 양자화(PTQ) 방법입니다.

출처: 문서

본문

Vector Post-Training Quantization (VPTQ)는 벡터 양자화를 활용해 LLM을 극히 낮은 비트 폭(<2비트)으로 양자화하는 사후 학습 양자화(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입니다.
  • 중심점(centroid) 수는 65536(2^16)개입니다.
  • 잔차 중심점(residual centroid) 수는 256(2^8)개입니다.

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

  • index: log2(65536) = 16 / 8 = 2-bits
  • residual index: log2(256) = 8 / 8 = 1-bit
  • total bit-width: 2 + 1 = 3-bits

여기에서 모델 크기를 70B * 3-bits / 8-bits/byte로 계산해 총 26.25GB로 추정할 수 있습니다.

VPTQ 양자화 모델은 from_pretrained()로 로드하세요.

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 튜토리얼을 참고하세요.

Benchmarks

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

Model bitwidth W2↓ C4↓ AvgQA↑ tok/s↑ mem(GB) cost/h↓
LLaMA-2 7B 2.02 6.13 8.07 58.2 39.9 2.28 2
2.26 5.95 7.87 59.4 35.7 2.48 3.1
LLaMA-2 13B 2.02 5.32 7.15 62.4 26.9 4.03 3.2
2.18 5.28 7.04 63.1 18.5 4.31 3.6
LLaMA-2 70B 2.07 3.93 5.72 68.6 9.7 19.54 19
2.11 3.92 5.71 68.7 9.7 20.01 19

Resources

VPTQ Online Demo Space에서 VPTQ 예제 데모를 보거나 VPTQ 추론 노트북을 실행해 보세요.

자세한 내용은 VPTQ 논문을 읽어보세요.

더 알아보기 (Learn more)