Transformers documentation
Quark
Quark
Quark هو مجموعة أدوات لتكميم التعلم العميق مصممة لتكون مستقلة عن أنواع البيانات والخوارزميات والأجهزة المحددة. يمكن دمج استراتيجيات ما قبل المعالجة والخوارزميات وأنواع البيانات المختلفة في Quark.
تستهدف دمج دعم PyTorch من خلال 🤗 Transformers بشكل أساسي معالجات AMD ووحدات معالجة الرسوميات، وهي مخصصة في المقام الأول لأغراض التقييم. على سبيل المثال، يمكن استخدام lm-evaluation-harness مع واجهة 🤗 Transformers الخلفية لتقييم مجموعة واسعة من النماذج المُكمّمة عبر Quark بسلاسة.
يمكن للمستخدمين المهتمين بـ Quark الرجوع إلى توثيقه للبدء في تكميم النماذج واستخدامها في المكتبات مفتوحة المصدر المدعومة!
على الرغم من أن Quark يملك صيغة نقطة تفتيش / تكوين خاصة به، فإن المكتبة تدعم أيضاً إنتاج نماذج بتخطيط تسلسل متوافق مع تطبيقات التكميم/الوقت التشغيلي الأخرى (AutoAWQ، fp8 الأصلية في 🤗 Transformers).
لتمكين تحميل نماذج Quark المُكمّاة في Transformers، يجب أولاً تثبيت المكتبة:
pip install amd-quark
مصفوفة الدعم
تدعم النماذج المُكمّمة عبر Quark مجموعة واسعة من الميزات التي يمكن دمجها معًا. كما يمكن إعادة تحميل جميع النماذج المُكمّمة، بغض النظر عن إعداداتها، بسلاسة عبر PretrainedModel.from_pretrained.
تُظهر الجدول أدناه بعض الميزات المدعومة في Quark:
| الميزة | المجموعة الفرعية المدعومة في Quark | |
|---|---|---|
| أنواع البيانات | int8, int4, int2, bfloat16, float16, fp8_e5m2, fp8_e4m3, fp6_e3m2, fp6_e2m3, fp4, OCP MX, MX6, MX9, bfp16 | |
| تحويل ما قبل التكميم | SmoothQuant، QuaRot، SpinQuant، AWQ | |
| خوارزمية التكميم | GPTQ | |
| المشغّلات المدعومة | nn.Linear, nn.Conv2d, nn.ConvTranspose2d, nn.Embedding, nn.EmbeddingBag | |
| حجم الحبيبات | لكل موصل، لكل قناة، لكل كتلة، لكل طبقة، نوع لكل طبقة | |
| ذاكرة التخزين المؤقت KV | fp8 | |
| معايرة التفعيل | MinMax / النسبة المئوية / MSE | |
| استراتيجية التكميم | بأوزان فقط، ثابت، ديناميكي، مع أو بدون تكميم للإخراج |
النماذج على Hugging Face Hub
يمكن العثور على النماذج العامة التي تستخدم تسلسل Quark الأصلي في https://huggingface.co/models?other=quark.
على الرغم من أن Quark يدعم أيضًا النماذج التي تستخدم quant_method="fp8" والنماذج التي تستخدم quant_method="awq"، فإن Transformers يحمّل هذه النماذج من خلال AutoAWQ أو يستخدم دعم fp8 الأصلي في 🤗 Transformers.
استخدام نماذج Quark في Transformers
فيما يلي مثال على كيفية تحميل نموذج Quark في Transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "EmbeddedLLM/Llama-3.1-8B-Instruct-w_fp8_per_channel_sym"
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
print(model.model.layers[0].self_attn.q_proj)
# QParamsLinear(
# (weight_quantizer): ScaledRealQuantizer()
# (input_quantizer): ScaledRealQuantizer()
# (output_quantizer): ScaledRealQuantizer()
# )
tokenizer = AutoTokenizer.from_pretrained(model_id)
inp = tokenizer("Where is a good place to cycle around Tokyo?", return_tensors="pt")
inp = inp.to(model.device)
res = model.generate(**inp, min_new_tokens=50, max_new_tokens=100)
print(tokenizer.batch_decode(res)[0])
# <|begin_of_text|>Where is a good place to cycle around Tokyo? There are several places in Tokyo that are suitable for cycling, depending on your skill level and interests. Here are a few suggestions:
# 1. Yoyogi Park: This park is a popular spot for cycling and has a wide, flat path that's perfect for beginners. You can also visit the Meiji Shrine, a famous Shinto shrine located in the park.
# 2. Imperial Palace East Garden: This beautiful garden has a large, flat path that's perfect for cycling. You can also visit the