Transformers documentation

HQQ

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

HQQ

Half-Quadratic Quantization (HQQ) suporta quantização rápida em tempo de execução para 8, 4, 3, 2 e até 1 bits. Não requer dados de calibração e é compatível com qualquer modalidade de modelo (LLMs, visão, etc.).

O HQQ também oferece suporte ao fine-tuning com PEFT e é totalmente compatível com torch.compile para inferência e treinamento ainda mais rápidos.

Instale o HQQ com o comando a seguir para obter a versão mais recente e compilar os kernels CUDA correspondentes, caso esteja usando um dispositivo CUDA. Ele também suporta Intel XPU com implementação pura em PyTorch.

pip install hqq

Você pode optar por substituir todas as camadas lineares de um modelo pela mesma configuração de quantização ou dedicar uma configuração de quantização específica para camadas lineares específicas.

substituir todas as camadas
somente camadas específicas

Quantize um modelo criando um HqqConfig e especificando nbits e group_size para substituir todas as camadas lineares (torch.nn.Linear) do modelo.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, HqqConfig

quant_config = HqqConfig(nbits=8, group_size=64)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B", 
    dtype=torch.float16, 
    device_map="auto", 
    quantization_config=quant_config
)

Backends

O HQQ suporta vários backends, incluindo PyTorch puro e kernels CUDA de desquantização personalizados. Esses backends são adequados para GPUs mais antigas e para treinamento com PEFT/QLoRA.

from hqq.core.quantize import *

HQQLinear.set_backend(HQQBackend.PYTORCH)

Para inferência mais rápida, o HQQ suporta kernels fundidos de 4 bits (torchao e Marlin) após a quantização de um modelo. Esses podem alcançar até 200 tokens/seg em uma única 4090. O exemplo abaixo demonstra como habilitar o backend torchao_int4.

from hqq.utils.patching import prepare_for_inference

prepare_for_inference("model", backend="torchao_int4")

Consulte o guia de Backend para mais detalhes.

Recursos

Leia o post no blog Half-Quadratic Quantization of Large Machine Learning Models para mais detalhes sobre o HQQ.

Update on GitHub