Transformers documentation
VPTQ
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는 적절한 파라미터 하에서 특히 모델 정확도와 추론 속도 측면에서 더 나은 결과를 얻을 수 있습니다.
| 모델 | bitwidth | W2↓ | C4↓ | AvgQA↑ | tok/s↑ | mem(GB) | 비용/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 |
리소스
VPTQ Online Demo Space에서 VPTQ 데모 예시를 확인하거나, VPTQ 추론 notebook을 실행해 보세요.
자세한 내용은 VPTQ 논문을 참고하세요.
Update on GitHub