Transformers documentation

VPTQ

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.

ModelbitwidthW2↓C4↓AvgQA↑tok/s↑mem(GB)custo/h↓
LLaMA-2 7B2.026.138.0758.239.92.282
2.265.957.8759.435.72.483.1
LLaMA-2 13B2.025.327.1562.426.94.033.2
2.185.287.0463.118.54.313.6
LLaMA-2 70B2.073.935.7268.69.719.5419
2.113.925.7168.79.720.0119

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