المحتويات
تفتح Hugging Face لتشغيل نموذج لغوي محلي، فتجد للنموذج نفسه جداراً من الملفات—Q4_K_M وQ5_K_S وGPTQ وAWQ وIQ3_M… فتتجمد في مكانك. إنه أول جدار يصطدم به معظم الناس. تجيب هذه المقالة، بشكل عملي، عن سؤال: «أي ملف مُكمَّم أنزّل حتى يعمل النموذج؟» نترك مفهوم ما هي التكميم (الفكرة النظرية) لمقالة أخرى، ونركز هنا على اختيار الصيغة.
سنتناول لماذا يحدد محرك التشغيل الصيغة، ونظام تسمية GGUF (مثل Q4_K_M)، ومقارنة الصيغ الأربع، وكيفية اختيار عمق البتات، وكيفية العثور على الملفات. وإليك النقاط الأساسية مقدماً. ① الصيغة تُحدَّد في الغالب حسب «أي محرك ستشغّله عليه» (GGUF = llama.cpp/Ollama؛ GPTQ/AWQ = محركات GPU مثل vLLM). ② Q4_K_M تعني «4 بتات، K-quant، حجم M»—وهي نقطة التوازن المثالية الشائعة في معظم الحالات. ③ عند التردد، ابدأ بـ Q4_K_M؛ وارتقِ إلى Q5/Q6 إن توفّر لديك VRAM كافٍ.
محرك التشغيل هو الذي يحدد الصيغة
— حدّد المحرك أولاً، وسيتقلّص اختيار الملف بسرعة
GGUF
llama.cpp / Ollama / LM Studio = وحدة المعالجة المركزية، وMac، وGPU جزئي أيضاً (الصيغة الوحيدة الودودة مع المعالج المركزي)
GPTQ
vLLM / TGI / ExLlama = GPU (يتطلب المعايرة)
AWQ
vLLM / TGI = GPU (يحمي الأوزان البارزة عبر التنشيطات)
EXL2
ExLlamaV2 = GPU (عرض بتات دقيق التحكم)
لذا فالسؤال الأول هو «على أي محرك سأشغّله؟» محلياً على المعالج المركزي/Mac ← GGUF. خادم GPU للسرعة ← GPTQ/AWQ.
1. لماذا تبدو ملفات النماذج المُكمَّمة مربكة
التكميم يعني تقريب أوزان النموذج إلى عدد أقل من البتات لتقليل الحجم والذاكرة (انظر ما هي التكميم). والمشكلة أن هناك عدة طرق (صيغ) لهذا التقريب، ولكل منها تنويعات كثيرة في عمق البتات ودرجة التحبيب. والنتيجة: أكثر من 20 ملفاً تحت النموذج الواحد على Hugging Face.
لكن اطمئن—يصبح الاختيار سهلاً حين تقسّمه إلى خطوتين: ① أي صيغة (= أي محرك ستشغّله عليه)، ثم ② أي ملف بعمق بتات ضمنها. فكّر بهذا الترتيب.
2. القاعدة الأساسية: محرك التشغيل هو الذي يحدد الصيغة
الحقيقة الأهم: الملف المُكمَّم لا يعمل إلا على المحركات التي تدعم صيغته. لذا حدّد المحرك أولاً، وستأتي الصيغة تلقائياً تقريباً.
| الصيغة | المحركات الرئيسية | العتاد | المعايرة |
|---|---|---|---|
| GGUF | llama.cpp / Ollama / LM Studio / KoboldCpp | المعالج المركزي، وMac، وGPU جزئي (مختلط) | اختيارية (imatrix) |
| GPTQ | GPTQModel (كان AutoGPTQ) / vLLM / TGI / ExLlama | GPU | مطلوبة |
| AWQ | AutoAWQ / vLLM / TGI | GPU | مطلوبة |
| EXL2 / EXL3 | ExLlamaV2 / ExLlamaV3 | GPU | مطلوبة |
| bitsandbytes (NF4/INT8) | Transformers (يُكمِّم عند التحميل) | GPU | لا شيء (بلا بيانات) |
تذكّر شيئاً واحداً: GGUF هي الصيغة الوحيدة «الشاملة المحلية» التي تعمل على المعالج المركزي / Mac / GPU جزئي؛ أما البقية (GPTQ/AWQ/EXL2) فهي أساساً لوحدات GPU فقط. لذا—
- التشغيل على حاسوبك الشخصي / Mac / المعالج المركزي (Ollama أو LM Studio) ← GGUF بلا منافس.
- إنتاجية عالية على خادم GPU (vLLM/TGI يخدم طلبات كثيرة) ← GPTQ أو AWQ.
- ضغط عرض البتات بدقة على GPU واحد ← EXL2/EXL3.
- اختبار سريع في Transformers (بلا ملف مُكمَّم مسبقاً) ← bitsandbytes (NF4).
3. فك رموز أسماء GGUF (مثل Q4_K_M)
صيغة GGUF، التي ستصادفها أكثر ما تصادف في الاستخدام المحلي، غير مؤذية بمجرد أن تتعلّم قراءة «الشيفرة» في اسم الملف. يتكوّن Q4_K_M من ثلاثة أجزاء.
Q4_K_M
إذن Q4_K_M = «K-quant بـ 4 بتات، حجم M (تُرقّى بعض التنسورات لحماية الجودة).» والبتات الفعلية تفوق التسمية قليلاً (مثلاً Q4_K ≈ 4.5 bpw).
مصطلحان إضافيان يقيانك من الضياع.
- عائلة IQ (IQ2_XS وIQ3_M وغيرها) = I-quants: خط أحدث قائم على قاموس رموز يمكنه أن يذهب إلى حجم أصغر عند عمق البتات نفسه. لكن الاستدلال أثقل، وهي تتطلب عملياً imatrix المذكور أدناه. إنها ورقة رابحة لحالة «أحتاج فعلاً إلى إدخال هذا في VRAM».
- imatrix (مصفوفة الأهمية): تمرّر نصّ معايرة عبر النموذج لقياس أي الأوزان أهم، ثم تحمي تلك أولاً عند عمق بتات منخفض. اختيارية لـ K-quants، ومطلوبة فعلياً لـ I-quants. تصمد ملفات GGUF المبنية بـ imatrix بشكل أفضل عند البتات المنخفضة.
4. مقارنة الصيغ الأربع (GGUF/GPTQ/AWQ/EXL2)
إليك طابع كل صيغة رئيسية، بما فيها صيغ GPU.
الصيغة الوحيدة التي تعمل على المعالج المركزي/Mac/المختلط. معيار llama.cpp. مرنة مع K-quant/I-quant/imatrix. الخيار الأول للاستخدام الشخصي المحلي.
معيار 4 بتات على GPU. يقلّل الخطأ طبقةً بطبقة عبر المعايرة. سريع على vLLM/TGI. خلفه الآن GPTQModel.
يحمي «الأوزان البارزة» بالنظر إلى التنشيطات (activation-aware). GPU، 4 بتات للأوزان فقط. مستخدم على نطاق واسع على vLLM/TGI.
يضبط عرض البتات ككسر (مثلاً 4.5 bpw). لـ ExLlama فقط، GPU. أما EXL3 فهو خط أحدث قائم على QTIP لا يزال ينضج.
💡 GPTQ مقابل AWQ (باختصار): يعمل GPTQ على «تقليل خطأ إعادة البناء طبقةً بطبقة»، بينما يعمل AWQ على «النظر في توزيع التنشيطات لحماية نحو 1% من الأوزان المهمة». ويعتمد أيّهما أفضل على النموذج وعرض البتات والتنفيذ، لذا لا واحدة منهما أفضل على الإطلاق. فقط اختر ما يدعمه محركك المختار.
5. أي ملف / أي عمق بتات تختار
بعد تحديد الصيغة، يأتي عمق البتات. باستخدام GGUF كمثال، إليك سلّماً عملياً لحالة «عند التردد، اختر هذا» (الأرقام تقريبية وتختلف حسب النموذج والبناء).
| الملف | الدور | متى تختاره |
|---|---|---|
| Q4_K_M | نقطة التوازن الشائعة (الافتراضي في Ollama لنماذج كثيرة) | عند التردد. أفضل توازن بين الحجم والجودة كقاعدة عامة |
| Q5_K_M / Q6_K | أقرب إلى الجودة الكاملة | لديك VRAM فائض وتريد درجة إضافية |
| Q8_0 | شبه خالٍ من الخسارة لكنه غير مُوصى به | نادراً ما يُحتاج (ذاكرة أكثر بكثير/أبطأ مقابل مكسب جودة ضئيل) |
| IQ2 / IQ3 (I-quant) | الحشر عند بتات منخفضة جداً | فقط حين يجب عليك إدخال نموذج كبير في VRAM |
كقاعدة تقريبية، يقول الناس غالباً إن نحو 4.5–5 بتات لكل وزن (Q4_K–Q5_K) هي النطاق «اللذيذ» (وهي قاعدة استرشادية). فوق Q6 يتباطأ مكسب الجودة، وتكلّف Q8_0 أو FP16 الكثير في الذاكرة والسرعة مقابل فرق ضئيل—هذا هو الإجماع العملي. ابدأ بتشغيل Q4_K_M، وارتقِ إلى Q5/Q6 إن شعرت بالنقص، وانزل إلى IQ إن لم يتسع، وواصل الضبط أثناء العمل. ولتقدير VRAM الذي تحتاجه، انظر متطلبات عتاد النماذج اللغوية المحلية.
6. العثور على الملفات على Hugging Face وOllama
على Hugging Face، رشّح GGUF باستخدام library=gguf، أو انتقل إلى مستودع مُعيد تحزيم التكميم. حتى وقت كتابة هذا، ينشر bartowski وmradermacher ملفات GGUF بنشاط (بما فيها بناءات imatrix)—لكن نشاط مُعيدي التحزيم يتغيّر، لذا تحقّق من أحدث تاريخ رفع. (مستودعات TheBloke التي كانت معياراً في يوم ما لا تزال موجودة، لكن الرفعات الجديدة توقفت إلى حد كبير.) ولتحويل نموذجك الخاص، تعمل مساحة gguf-my-repo الرسمية.
على Ollama، تتبع الوسوم النمط model:size-variant-quant.
# بلا وسم = الافتراضي (Q4_K_M لنماذج كثيرة)
ollama pull llama3.1
# اختر التكميم صراحةً
ollama pull llama3.1:8b-instruct-q5_K_M
ollama pull qwen2.5-coder:7b-instruct-q8_0
# اطّلع على الوسوم المتاحة على ollama.com/library/<model>/tags
إذن سير العمل الحقيقي ثلاث حركات: حدّد المحرك ← ضيّق إلى صيغته ← اختر ملف عمق البتات الذي يناسب VRAM لديك. أتقن ذلك، ولن يخيفك بعدها جدار الـ 20 ملفاً. ولتشغيل نموذج فعلياً، انظر كيفية تشغيل نموذج لغوي محلي ودليل Ollama.
الخلاصة
اختيار صيغة التكميم خطوتان. أولاً ① أي محرك ستشغّله عليه—محلياً على المعالج المركزي/Mac ← GGUF؛ خادم GPU للسرعة ← GPTQ/AWQ؛ عرض بتات مضبوط بدقة على GPU واحد ← EXL2؛ اختبار Transformers سريع ← bitsandbytes. والقاعدة العليا: الصيغة لا تعمل إلا على المحركات التي تدعمها.
ثم ② عمق البتات. تعني Q4_K_M في GGUF «4 بتات، K-quant، حجم M»—وهي الافتراضي الشائع. عند التردد، Q4_K_M ← (إن توفّرت مساحة) Q5/Q6 ← (إن لم يتسع) IQ. ارتكز على قاعدة النطاق «اللذيذ» ~4.5–5 bpw الاسترشادية واضبط أثناء التشغيل. تصمد بناءات imatrix بشكل أفضل عند البتات المنخفضة. ذات صلة: ما هي التكميم، كيفية تشغيل نموذج لغوي محلي، متطلبات العتاد، أفضل النماذج المحلية، دليل Ollama.
الأسئلة الشائعة
س. إذن أي ملف ينبغي أن أختار؟
ج. حدّد أولاً «على أي محرك ستشغّله». حاسوبك الشخصي أو Mac (Ollama/LM Studio) ← GGUF؛ خادم GPU (vLLM/TGI) ← GPTQ أو AWQ. ثم لعمق البتات، عند التردد، Q4_K_M (توازن جيد بين الحجم والجودة، وهو الافتراضي في Ollama لنماذج كثيرة). مع VRAM فائض، Q5_K_M/Q6_K؛ وفقط حين يجب عليك إدخال نموذج كبير، فكّر في IQ2/IQ3.
س. ماذا تعني Q4_K_M؟
ج. ثلاثة أجزاء. Q4 = ~4 بتات (كلما زاد الرقم زادت الجودة وكبر الملف)، K = K-quant (تكميم ذكي عبر كتل فائقة؛ أما الاسم المجرد أو _0/_1 فهي قديمة)، وM = حجم متوسط (S/M/L هو مقدار ترقية بعض التنسورات المهمة إلى بتات أعلى). والبتات الفعلية تفوق التسمية قليلاً (Q4_K ≈ 4.5 bpw).
س. كيف يختلف GGUF عن GPTQ/AWQ؟
ج. بمحرك التشغيل (العتاد) الذي يدعمانه. GGUF هي الصيغة الوحيدة «الشاملة المحلية» التي تعمل على المعالج المركزي، وMac، وGPU جزئي، لـ llama.cpp/Ollama. أما GPTQ وAWQ فهما لـ GPU أولاً وتناسبان الإنتاجية العالية على vLLM/TGI. كما تختلفان في الطريقة (يقلّل GPTQ الخطأ طبقةً بطبقة؛ يحمي AWQ الأوزان البارزة عبر التنشيطات)، لكن لا واحدة منهما أفضل على الإطلاق. فقط اختر ما يدعمه محركك.
س. كيف يختلف IQ (I-quant) عن Q4 العادي؟
ج. يمكنه أن يذهب إلى حجم أصغر عند عمق البتات نفسه (طريقة أحدث قائمة على قاموس رموز). في المقابل، الاستدلال أثقل قليلاً، ويتطلب عملياً imatrix للحفاظ على الجودة. استخدامه ورقة رابحة لحالة «يجب عليّ إدخال نموذج كبير في VRAM». أما إن اتسع بشكل طبيعي، فإن K-quant مثل Q4_K_M أسهل في التعامل.
س. أليست Q8_0 أو FP16 أعلى جودة؟ فلماذا «غير مُوصى بها»؟
ج. إنها بالفعل شبه خالية من الخسارة، لكنها تلتهم ذاكرة أكثر بكثير وتعمل أبطأ مقابل مكسب جودة ضئيل فقط فوق Q5/Q6. حتى مجتمع llama.cpp لا يوصي بها للاستخدام العادي. وعملياً، نحو 4.5–5 bpw (Q4_K–Q5_K) هي النطاق «اللذيذ»، وتتحرك صعوداً أو هبوطاً منه حسب الحاجة (الأرقام تقريبية وتختلف حسب النموذج/البناء).