Transformers documentation

HQQ

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) поддерживает быструю квантизацию «на лету» для 8, 4, 3, 2 и даже 1 бита. Для неё не требуются данные калибровки, и она совместима с моделями любого типа (LLM, vision и т. д.).

HQQ также поддерживает дообучение с PEFT и полностью совместим с torch.compile для ещё более быстрого вывода и обучения.

Установите HQQ следующей командой, чтобы получить последнюю версию и собрать соответствующие CUDA-ядра, если вы используете устройство cuda. Также поддерживается Intel XPU с чистой реализацией на PyTorch.

pip install hqq

Вы можете либо заменить все линейные слои в модели на один и тот же конфигурационный файл квантования, либо назначить конкретный конфигурационный файл квантования для конкретных линейных слоев.

заменить все слои
только определенные слои

Квантуйте модель, создав HqqConfig и указав nbits и group_size для замены всех линейных слоёв (torch.nn.Linear) модели.

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
)

Бэкенды

HQQ поддерживает различные бэкенды, включая чистый PyTorch и собственные CUDA-ядра для деквантования. Эти бэкенды подходят для старых GPU и обучения PEFT/QLoRA.

from hqq.core.quantize import *

HQQLinear.set_backend(HQQBackend.PYTORCH)

Для более быстрого вывода HQQ поддерживает 4-битные объединённые ядра (torchao и Marlin) после квантования модели. Они позволяют достигать до 200 токенов/сек на одном 4090. Пример ниже демонстрирует, как включить бэкенд torchao_int4.

from hqq.utils.patching import prepare_for_inference

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

См. руководство Backend для получения подробной информации.

Ресурсы

Подробнее о HQQ читайте в блоге Half-Quadratic Quantization of Large Machine Learning Models.

Update on GitHub