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、ビジョンなど)と互換性があります。

HQQはさらにPEFTによるファインチューニングをサポートしており、torch.compileと完全に互換性があるため、より高速な推論とトレーニングを実現できます。

pip install hqq

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やカスタムdequantization CUDAカーネルなど、さまざまなバックエンドをサポートしています。これらのバックエンドは、古いGPUやPEFT/QLoRAのトレーニングに適しています。

from hqq.core.quantize import *

HQQLinear.set_backend(HQQBackend.PYTORCH)

より高速な推論のために、HQQ はモデルの量子化後に 4-bit 融合カーネル(torchao および Marlin)をサポートしています。これにより、単一の 4090 で最大 200 tokens/sec に達することが可能です。以下の例では、torchao_int4 バックエンドを有効にする方法を示しています。

from hqq.utils.patching import prepare_for_inference

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

詳細については、Backendガイドを参照してください。

リソース

HQQの詳細については、大規模機械学習モデルの半二次量子化というブログ記事をお読みください。

Update on GitHub