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) prend en charge une quantification rapide à la volée pour 8, 4, 3, 2 et même 1 bit. Elle ne nécessite pas de données de calibration et est compatible avec n'importe quelle modalité de modèle (LLM, vision, etc.).

HQQ prend en outre en charge le fine-tuning avec PEFT et est entièrement compatible avec torch.compile pour une inférence et un entraînement encore plus rapides.

Installez HQQ à l'aide de la commande suivante pour obtenir la dernière version et compiler les noyaux CUDA correspondants si vous utilisez un appareil cuda. Il prend également en charge les XPU Intel avec une implémentation pure en pytorch.

pip install hqq

Vous pouvez choisir de remplacer toutes les couches linéaires d'un modèle par la même configuration de quantification, ou d'attribuer une configuration de quantification spécifique à des couches linéaires précises.

remplacer toutes les couches
couches spécifiques uniquement

Quantifier un modèle en créant un HqqConfig et en spécifiant les valeurs de nbits et group_size à appliquer à toutes les couches linéaires (torch.nn.Linear) du modèle.

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 prend en charge divers backends, notamment PyTorch pur et des noyaux CUDA de déquantisation personnalisés. Ces backends conviennent aux GPU plus anciens et à l'entraînement PEFT/QLoRA.

from hqq.core.quantize import *

HQQLinear.set_backend(HQQBackend.PYTORCH)

Pour une inférence plus rapide, HQQ prend en charge les noyaux fusionnés 4 bits (torchao et Marlin) après la quantification d'un modèle. Ils peuvent atteindre jusqu'à 200 jetons/s sur une seule 4090. L'exemple ci-dessous montre comment activer le backend torchao_int4.

from hqq.utils.patching import prepare_for_inference

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

Reportez-vous au guide Backend pour plus de détails.

Ressources

Lisez le billet de blog Half-Quadratic Quantization of Large Machine Learning Models pour plus de détails sur HQQ.

Update on GitHub