Transformers documentation
HQQ
HQQ
Half-Quadratic Quantization (HQQ), 8, 4, 3, 2 ve hatta 1 bit için hızlı, anlık (on-the-fly) kuantizasyonu destekler. Kalibrasyon verisi gerektirmez ve herhangi bir model modalitesiyle (LLM'ler, görü vb.) uyumludur.
HQQ, PEFT ile ince ayarı daha fazla destekler ve daha hızlı çıkarım ve eğitim için torch.compile ile tam uyumludur.
En güncel sürümü almak ve bir cuda cihazı kullanıyorsanız ilgili CUDA çekirdeklerini derlemek için HQQ'yi aşağıdaki komutla yükleyin. Ayrıca saf pytorch uygulamasıyla Intel XPU'yu da destekler.
pip install hqq
Modeldeki tüm doğrusal katmanları aynı kuantizasyon yapılandırmasıyla değiştirmeyi veya belirli doğrusal katmanlar için belirli bir kuantizasyon yapılandırması atamayı seçebilirsiniz.
Bir HqqConfig oluşturarak ve modelin tüm doğrusal katmanları (torch.nn.Linear) için nbits ile group_size değerlerini belirleyerek modeli kuantize edin.
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
)Doğrusal katmanları kuantize etmek için nbits ve group_size değerlerini belirten bir sözlük oluşturarak modeli kuantize edin. Bu değerleri HqqConfig nesnesine iletin ve hangi katmanların kuantize edileceğini yapılandırmada belirtin. Bu yaklaşım, karışık uzman (MoE) modellerini kuantize etmek için özellikle faydalıdır; çünkü bu modeller, daha düşük kuantizasyon ayarlarından daha az etkilenir.
q4_config = {'nbits':4, 'group_size':64}
q3_config = {'nbits':3, 'group_size':32}
quant_config = HqqConfig(dynamic_config={
'self_attn.q_proj':q4_config,
'self_attn.k_proj':q4_config,
'self_attn.v_proj':q4_config,
'self_attn.o_proj':q4_config,
'mlp.gate_proj':q3_config,
'mlp.up_proj' :q3_config,
'mlp.down_proj':q3_config,
})
model = transformers.AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
dtype=torch.float16,
device_map="auto",
quantization_config=quant_config
)Arka Uçlar
HQQ, saf PyTorch ve özel dequantization CUDA çekirdekleri dahil olmak üzere çeşitli backend'leri destekler. Bu backend'ler, eski GPU'lar ve PEFT/QLoRA eğitimi için uygundur.
from hqq.core.quantize import *
HQQLinear.set_backend(HQQBackend.PYTORCH)Daha hızlı çıkarım için HQQ, bir modelin kuantize edilmesinin ardından 4-bit füzyonlu çekirdekleri (torchao ve Marlin) destekler. Bunlar, tek bir 4090 üzerinde saniyede 200 token'a kadar hızlara ulaşabilir. Aşağıdaki örnek, torchao_int4 arka ucunun etkinleştirilmesini göstermektedir.
from hqq.utils.patching import prepare_for_inference
prepare_for_inference("model", backend="torchao_int4")Daha fazla ayrıntı için Backend kılavuzuna başvurun.
Kaynaklar
HQQ hakkında daha fazla ayrıntı için Half-Quadratic Quantization of Large Machine Learning Models blog yazısını okuyun.
Update on GitHub