# VPTQ

[Vector Post-Training Quantization (VPTQ)](https://github.com/microsoft/VPTQ), LLM'leri son derece düşük bit genişliğinde (<2-bit) kuantize etmek için vektör kuantizasyonundan yararlanan bir Post-Training Quantization (PTQ) yöntemidir. VPTQ, yeniden eğitim gerektirmeden 70B ve hatta 405B modelleri 1-2 bite sıkıştırabilir ve yüksek bir doğruluk derecesini koruyabilir. 405B bir modeli kuantize etmesi yaklaşık 17 saat süren hafif bir kuantizasyon algoritmasıdır. VPTQ, düşük çözümleme maliyeti ve yüksek veri aktarım hızı ile Time To First Token (TTFT) sunan çevik kuantizasyon çıkarımı özelliklerine sahiptir.

NVIDIA ve AMD GPU'lerde çıkarım için verimli çekirdekler sunan VPTQ'yi yüklemek için aşağıdaki komutu çalıştırın.

```bash
pip install vptq
```

[VPTQ-community](https://huggingface.co/VPTQ-community), VPTQ ile kuantize edilmiş modellerin bir koleksiyonunu sunar. Model adı, bit genişliği hakkında bilgi içerir (cookbook, parametre ve dolgu (padding) maliyetleri hariç). Örnek olarak [Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft] modelini ele alalım.

- Model adı Meta-Llama-3.1-70B-Instruct'tir.
- Merkezlerin sayısı 65536 (2^16) ile verilir.
- Kalanık merkezlerin sayısı 256 (2^8) olarak verilir.

Eşdeğer bit genişliği hesabı aşağıda verilmiştir.

- index: log2(65536) = 16 / 8 = 2-bit
- residual index: log2(256) = 8 / 8 = 1-bit
- toplam bit genişliği: 2 + 1 = 3-bit

Buradan, 70B * 3-bit / 8-bit/bayt çarpımını alarak model boyutunu tahmin edin; toplam 26.25GB eder.

[from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) ile VPTQ ile kuantize edilmiş bir model yükleyin.

```py
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"
)
```

Kendi modelinizi kuantize etmek için [VPTQ Kuantizasyon Algoritması Eğitimi](https://github.com/microsoft/VPTQ/blob/algorithm/algorithm.md) eğitimine başvurun.

## Benchmarks

VPTQ, farklı boyutlardaki modellerde daha düşük kuantizasyon maliyetiyle daha iyi doğruluk ve daha yüksek işlem hacmi sağlar. Aşağıdaki deneysel sonuçlar yalnızca referans amaçlıdır; VPTQ, makul parametreler altında, özellikle model doğruluğu ve çıkarım hızı açısından daha iyi sonuçlar elde edebilir.

| Model       | bit genişliği | W2↓  | C4↓  | AvgQA↑ | tok/sn↑ | mem(GB) | maliyet/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      |

## Kaynaklar

VPTQ'nin örnek demosunu VPTQ Online Demo [Space](https://huggingface.co/spaces/microsoft/VPTQ)'inde görüntüleyebilir veya VPTQ çıkarım [notebook](https://colab.research.google.com/github/microsoft/VPTQ/blob/main/notebooks/vptq_example.ipynb)'unu çalıştırmayı deneyebilirsiniz.

Daha fazla bilgi için VPTQ [makalesini](https://huggingface.co/papers/2409.17066) okuyun.

