Transformers documentation
VPTQ
VPTQ
Cuantización Post-Entrenamiento Vectorial (VPTQ) es un método de Cuantización Post-Entrenamiento (PTQ) que aprovecha la cuantización vectorial para cuantizar LLMs en una anchura de bits extremadamente baja (<2-bit). VPTQ puede comprimir un modelo de 70B, e incluso uno de 405B, a 1-2 bits sin reentrenamiento y aun así mantener un alto grado de precisión. Es un algoritmo de cuantización ligero que tarda aproximadamente 17 horas en cuantizar un modelo de 405B. VPTQ ofrece una inferencia de cuantización ágil con una sobrecarga de decodificación baja y un alto rendimiento y Time To First Token (TTFT).
Ejecute el siguiente comando para instalar VPTQ, que proporciona kernels eficientes para la inferencia en GPUs de NVIDIA y AMD.
pip install vptq
La VPTQ-community ofrece una colección de modelos cuantizados con VPTQ. El nombre del modelo contiene información sobre su ancho de bits (excluyendo el sobrecoste de la receta, los parámetros y el relleno). Considere el modelo [Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft] como ejemplo.
- El nombre del modelo es Meta-Llama-3.1-70B-Instruct.
- El número de centroides está dado por 65536 (2^16).
- El número de centroides residuales está dado por 256 (2^8).
El cálculo de la anchura de bits equivalente se muestra a continuación.
- index: log2(65536) = 16 / 8 = 2 bits
- índice residual: log2(256) = 8 / 8 = 1 bit
- ancho total de bits: 2 + 1 = 3 bits
A partir de aquí, estime el tamaño del modelo multiplicando 70B * 3-bits / 8-bits/byte, para un total de 26.25GB.
Cargue un modelo cuantizado con VPTQ con 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 cuantizar tu propio modelo, consulta el tutorial VPTQ Quantization Algorithm Tutorial.
Benchmarks
VPTQ logra una mayor precisión y un mayor rendimiento con una menor sobrecarga de cuantización en modelos de diferentes tamaños. Los siguientes resultados experimentales son solo de referencia; VPTQ puede obtener mejores resultados con parámetros razonables, especialmente en términos de precisión del modelo y velocidad de inferencia.
| Modelo | bitwidth | W2↓ | C4↓ | AvgQA↑ | tok/s↑ | mem(GB) | coste/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
Vea una demostración de VPTQ en el Space de demostración en línea de VPTQ o pruebe a ejecutar el notebook de inferencia de VPTQ.
Para obtener más información, lea el artículo de VPTQ.
Update on GitHub