جولة تلقائية هي طريقة تكميم الوزن فقط بعد التدريب (PTQ) التي طورتها شركة إنتل. ويستخدم النسب المتدرج الموقع لتحسين نطاقات تقريب الوزن والقص بشكل مشترك، مما يتيح تكميمًا دقيقًا للبت المنخفض (على سبيل المثال، INT2 – INT8) مع الحد الأدنى من فقدان الدقة في معظم السيناريوهات. على سبيل المثال، في INT2، يتفوق على الخطوط الأساسية الشائعة بنسبة تصل إلى دقة نسبية أعلى بمقدار 2.1 مرة. توفر الصورة أدناه نظرة عامة على الخوارزمية الأساسية في AutoRound. لمزيد من التفاصيل، يرجى الرجوع إلى ورقتنا.
على الرغم من أدائه القوي، فإن AutoRound سريع وخفيف الوزن – حيث لا يستغرق تحديد حجم نموذج 72B سوى القليل 37 دقيقة على وحدة معالجة الرسوميات A100 تحت وضع الضوء. كما أنه يدعم ضبط البت المختلط، وتكميم رأس lm، وتصدير تنسيق GPTQ/AWQ/GGUF، ووصفات ضبط مرنة.
دقة فائقة عند عرض البتات المنخفضة
جولة تلقائية يقدم نتائج واعدة للغاية، لا سيما في سيناريوهات التكميم منخفضة البت. تظهر التقييمات عبر مجموعة متنوعة من المهام أنها تتفوق على الأساليب الشائعة بهامش واسع وبدقة 2 بت (المصدر). عند 4 بتات، يستمر AutoRound في الاحتفاظ بميزة تنافسية في معظم الحالات، كما هو موضح في Low-Bit Open LLM Leaderboard.

متوسط أكثر من 10 مهام في W2g128

متوسط أكثر من 10 مهام في W4
2. توافق واسع
نماذج
ماجستير في القانون: يدعم AutoRound جميع بنيات LLM الشائعة تقريبًا، بما في ذلك النماذج المعروفة مثل Qwen وLLaMA وDeepSeek. تتوفر النماذج الكمية الجاهزة للاستخدام على Hugging Face من خلال مجموعات مثل OPEA وKaitchup وfbaldassarri.
أجهزة VLM: يدعم AutoRound أكثر من 10 نماذج للغة الرؤية (VLMs)، بما في ذلك Mistral-Small-3.1 وGemma3 والمزيد. يمكنك العثور على القائمة الكاملة في ملف README، وتتوفر النماذج الكمية الجاهزة للاستخدام في مجموعة Hugging Face من OPEA. بالنسبة للطرز غير المدعومة بعد، لا يزال بإمكانك تطبيق طريقة RTN الخاصة بنا --iters 0. ليس هناك حاجة إلى ضبط، ولكن من المتوقع فقدان بعض الدقة.
الأجهزة
تكوينات الكمي
- وزن Int8 فقط
- وزن Int4 فقط
- وزن Int3 فقط
- وزن Int2 فقط
- وزن القطع المختلطة فقط
تنسيقات التصدير
- جولة تلقائية
- GPTQ
- AWQ
- بعض GGUFs
3. التكميم المرن/الفعال
يتطلب AutoRound 200 خطوة ضبط فقط ومجموعة بيانات معايرة صغيرة (ما لا يقل عن 128 عينة) لتحقيق دقة عالية. تُترجم هذه الكفاءة إلى أوقات تكميم أسرع وتقليل استهلاك الموارد مقارنةً بطرق int2 الأخرى، والتي تكون أكثر كثافة من الناحية الحسابية.
| AutoAWQ العينات=128 تسلسل = 512 مجموعة البيانات = “كومة” |
AutoAWQ العينات=512 تسلسل = 2048 مجموعة البيانات = “كومة” |
GPTQ في المحولات عينات=؟ سيكلين=؟ مجموعة البيانات = “C4” |
AutoRoundLight العينات=128 تسلسل = 2048 مجموعة البيانات = “كومة-10K” |
جولة تلقائية العينات=128 تسلسل = 2048 مجموعة البيانات = “كومة-10K” |
جولة تلقائية العينات=512 تسلسل = 2048 مجموعة البيانات = “كومة-10K |
|
|---|---|---|---|---|---|---|
| كوين2.5 3ب | 7 دقائق | 17 دقيقة | 13 دقيقة | 3 دقائق | 8 دقيقة | 9 دقيقة |
| اللاما3.1-8ب | 13 دقيقة | 27 دقيقة | 22 دقيقة | 6 دقائق | 13 دقيقة | 17 دقيقة |
| كوين2.5 72ب | 105 دقيقة | 230 دقيقة | أوم | 37 دقيقة | 120 دقيقة | 149 دقيقة |
تثبيت
pip install auto-round
التكميم والتسلسل
حاليًا، يتم دعم الوضع غير المتصل بالإنترنت فقط لإنشاء نماذج كمية.
استخدام سطر الأوامر
auto-round \
--model Qwen/Qwen3-0.6B \
--bits 4 \
--group_size 128 \
--format "auto_round,auto_awq,auto_gptq" \
--output_dir ./tmp_autoround
يقدم AutoRound أيضًا وصفتين أخريين، auto-round-best و auto-round-light، مصممة لتحقيق الدقة المثلى والسرعة المحسنة، على التوالي.
auto-round-best \
--model Qwen/Qwen3-0.6B \
--output_dir ./tmp_autoround
بالنسبة إلى 2 بت، نوصي باستخدام auto-round-best أو auto-round. للمقارنة بين الوصفات الثلاث، يرجى الرجوع إلى الجدول أدناه.
W4G128 متوسط دقة 13 مهمة (mmlu-pro، if_eval، gsm8k، إلخ) ونتائج تكلفة الوقت (تم إجراء الاختبار على Nvidia A100 80G باستخدام إصدار PyTorch 2.6.0 مع Enable_torch_compile):
| نموذج | Qwen2.5-0.5B-Instruct | فالكون 3-3 ب | Qwen2.5-7B-Instruct | Meta-Llama-3.1-8B-Instruct | فالكون 3-10ب | Qwen2.5-72B-Instruct |
|---|---|---|---|---|---|---|
| 16 بت | 0.4192 | 0.5203 | 0.6470 | 0.6212 | 0.6151 | 0.7229 |
| أفضل | 0.4137(7 م) | 0.5142(23 م) | 0.6426(58 م) | 0.6116(65 م) | 0.6092(81 م) | 0.7242(575 م) |
| تقصير | 0.4129(2م) | 0.5133(6م) | 0.6441(13م) | 0.6106(13م) | 0.6080(18 م) | 0.7252(118 م) |
| ضوء | 0.4052(2م) | 0.5108(3م) | 0.6453(5 م) | 0.6104(6م) | 0.6063(6م) | 0.7243(37 م) |
استخدام AutoRound API
يوفر هذا الإعداد مقايضة أفضل بين الدقة وتكلفة الضبط، ويوصى به في كافة السيناريوهات.
from transformers import AutoModelForCausalLM, AutoTokenizer
from auto_round import AutoRound
model_name = "Qwen/Qwen3-0.6B"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
bits, group_size, sym = 4, 128, True
autoround = AutoRound(
model,
tokenizer,
bits=bits,
group_size=group_size,
sym=sym,
)
output_dir = "./tmp_autoround"
autoround.quantize_and_save(output_dir, format="auto_round,auto_awq,auto_gptq')
للحصول على أفضل/إعدادات الإضاءة الخاصة بـ AutoRound لاستخدام واجهة برمجة التطبيقات (API) أو تكوينات البت المختلطة، يرجى الرجوع إلى ملف التمهيد الخاص بـ AutoRound
الاستدلال
يقوم AutoRound تلقائيًا بتحديد أفضل واجهة خلفية متاحة استنادًا إلى المكتبات المثبتة ويطالب المستخدم بتثبيت مكتبات إضافية عند العثور على واجهة خلفية أفضل. لمزيد من التفاصيل، يرجى الرجوع إلى HF README أو AutoRound README.
وحدة المعالجة المركزية/إنتل GPU/CUDA
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "OPEA/Qwen2.5-1.5B-Instruct-int4-sym-inc"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
text = "There is a girl who likes adventure,"
inputs = tokenizer(text, return_tensors="pt").to(model.device)
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=50, do_sample=False)[0]))
تحويل GPTQ/AWQ إلى AutoRound
يمكن تحويل معظم نماذج GPTQ/AWQ إلى تنسيق AutoRound لتحسين التوافق والدعم مع أجهزة Intel. يرجى ملاحظة أنه سيتم تغيير تكوين التكميم إذا تم إجراء تسلسل للنموذج.
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoRoundConfig
model_name = "ybelkada/opt-125m-gptq-4bit"
quantization_config = AutoRoundConfig()
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", torch_dtype="auto",
quantization_config=quantization_config)
tokenizer = AutoTokenizer.from_pretrained(model_name)
text = "There is a girl who likes adventure,"
inputs = tokenizer(text, return_tensors="pt").to(model.device)
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=50, do_sample=False)[0]))
تقدم AutoRound خطوة تحسين ذات مغزى إلى الأمام في مجال التكميم بعد التدريب لنماذج اللغة الكبيرة ولغة الرؤية. من خلال الجمع بين الدقة العالية والكفاءة الاستثنائية والتوافق الواسع مع النماذج والأجهزة وتنسيقات التصدير الشائعة، يجعل AutoRound عملية تكميم البتات المنخفضة عملية وقوية. سواء كنت تنشر LLMs على نطاق واسع أو تجرب استدلال الحافة على VLMs، فإن AutoRound يوفر الأدوات والمرونة التي تحتاجها لتحقيق الأداء الأمثل بأقل قدر من الحمل. نحن ندعوك لتجربته والانضمام إلى المجتمع المتنامي الذي يتخطى حدود النشر الفعال للذكاء الاصطناعي.
المساهمات في AutoRound هي موضع ترحيب وتقدير كبير! سواء أكان الأمر يتعلق بإصلاح الأخطاء، أو تحسين الوثائق، أو إضافة ميزات جديدة، أو اقتراح تحسينات، فإن مساعدتك موضع تقدير دائمًا.
إذا واجهت أي مشكلات تتعلق بالتدوير التلقائي، فيرجى فتح مشكلة في مستودع AutoRound.
نود أن نشكر المكتبات مفتوحة المصدر منخفضة الدقة بما في ذلك AutoGPTQ وAutoAWQ وGPTQModel وTriton وMarlin وExLLaMAV2، والتي يتم استخدام نواة CUDA الخاصة بها في AutoRound.