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.2).
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) permite una cuantización rápida sobre la marcha para 8, 4, 3, 2 e incluso 1 bits. No requiere datos de calibración y es compatible con cualquier modalidad de modelo (LLMs, visión, etc.).

HQQ también admite el ajuste fino con PEFT y es totalmente compatible con torch.compile para una inferencia y un entrenamiento aún más rápidos.

Instale HQQ con el siguiente comando para obtener la última versión y compilar sus correspondientes kernels de CUDA si está utilizando un dispositivo cuda. También es compatible con Intel XPU mediante una implementación pura de PyTorch.

pip install hqq

Puede optar por reemplazar todas las capas lineales de un modelo con la misma configuración de cuantización o bien asignar una configuración de cuantización específica a capas lineales concretas.

reemplazar todas las capas
solo capas específicas

Cuantice un modelo creando un HqqConfig y especificando nbits y group_size para reemplazar todas las capas lineales (torch.nn.Linear) del 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

HQQ admite varios backends, incluidos PyTorch puro y kernels CUDA de descuantización personalizados. Estos backends son adecuados para GPUs más antiguas y para el entrenamiento con PEFT/QLoRA.

from hqq.core.quantize import *

HQQLinear.set_backend(HQQBackend.PYTORCH)

Para una inferencia más rápida, HQQ admite núcleos fusionados de 4 bits (torchao y Marlin) después de que un modelo se cuantiza. Estos pueden alcanzar hasta 200 tokens/seg en una sola 4090. El ejemplo de abajo demuestra cómo habilitar el backend torchao_int4.

from hqq.utils.patching import prepare_for_inference

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

Consulte la guía de Backend para obtener más detalles.

Recursos

Lea la publicación de blog Half-Quadratic Quantization of Large Machine Learning Models para obtener más detalles sobre HQQ.

Update on GitHub