Transformers documentation
VPTQ
VPTQ
Vector Post-Training Quantization (VPTQ) é um método de Post-Training Quantization (PTQ) que utiliza quantização vetorial para quantizar LLMs em uma largura de bits extremamente baixa (<2-bit). O VPTQ pode comprimir um modelo de 70B, ou até mesmo de 405B, para 1-2 bits sem re-treinamento, mantendo um alto grau de precisão. Trata-se de um algoritmo de quantização leve que leva cerca de 17 horas para quantizar um modelo de 405B. O VPTQ oferece inferência de quantização ágil, com baixo overhead de decodificação e alto throughput e Time To First Token (TTFT).
Execute o comando abaixo para instalar o VPTQ, que fornece kernels eficientes para inferência em GPUs NVIDIA e AMD.
pip install vptq
A VPTQ-community oferece uma coleção de modelos quantizados com VPTQ. O nome do modelo contém informações sobre sua largura de bits (excluindo o overhead de cookbook, parâmetros e padding). Considere o modelo [Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft] como um exemplo.
- O nome do modelo é Meta-Llama-3.1-70B-Instruct.
- O número de centróides é dado por 65536 (2^16).
- O número de centróides residuais é dado por 256 (2^8).
O cálculo da largura de bits equivalente é dado a seguir.
- índice: log2(65536) = 16 / 8 = 2 bits
- índice residual: log2(256) = 8 / 8 = 1-bit
- largura total em bits: 2 + 1 = 3 bits
A partir daqui, estime o tamanho do modelo multiplicando 70B * 3-bits / 8-bits/byte, resultando em um total de 26,25GB.
Carregue um modelo quantizado com VPTQ usando 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"
)Para quantizar seu próprio modelo, consulte o tutorial VPTQ Quantization Algorithm Tutorial.
Benchmarks
O VPTQ atinge melhor precisão e maior throughput com menor sobrecarga de quantização em modelos de diferentes tamanhos. Os resultados experimentais a seguir são apenas para referência; o VPTQ pode alcançar melhores resultados com parâmetros razoáveis, especialmente em termos de precisão do modelo e velocidade de inferência.
| Model | bitwidth | W2↓ | C4↓ | AvgQA↑ | tok/s↑ | mem(GB) | custo/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 |
Recursos
Veja um exemplo de demonstração do VPTQ no Space de demonstração online do VPTQ ou tente executar o notebook de inferência do VPTQ.
Para mais informações, leia o paper do VPTQ.
Update on GitHub