Transformers documentation

Quark

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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
حجم الحبيباتلكل موصل، لكل قناة، لكل كتلة، لكل طبقة، نوع لكل طبقة
ذاكرة التخزين المؤقت KVfp8
معايرة التفعيل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
Update on GitHub