Transformers documentation
HQQ
HQQ
يدعم التكميم نصف التربيعي (HQQ) التكميم السريع أثناء التشغيل لمعدلات 8 و4 و3 و2 وحتى 1 بت. ولا يتطلب بيانات معايرة، وهو متوافق مع أي نمط للنماذج (نماذج اللغة الكبيرة، الرؤية، إلخ).
يدعم 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
)قم بتكميم نموذج من خلال إنشاء قاموس يحدد nbits وgroup_size لطبقات الخطية المراد تكميمها. مرر هذه القيم إلى HqqConfig وحدد الطبقات التي سيتم تكميمها باستخدام الإعداد. هذا النهج مفيد بشكل خاص لتكميم نماذج مزيج الخبراء (MoEs) لأنها أقل تأثراً بإعدادات التكميم المنخفضة.
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
)واجهات الخلفية
يدعم HQQ واجهات خلفية متنوعة، بما في ذلك PyTorch النقي ونوى CUDA المخصصة لفك التكميم. ومناسبة هذه الواجهات للخوادم الرسومية الأقدم ولتدريب 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 لمزيد من التفاصيل.
الموارد
اقرأ منشور المدونة Half-Quadratic Quantization of Large Machine Learning Models لمزيد من التفاصيل حول HQQ.
Update on GitHub